1 /*******************************************************************************
\r
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
\r
3 * in Industry THTH ry.
\r
4 * All rights reserved. This program and the accompanying materials
\r
5 * are made available under the terms of the Eclipse Public License v1.0
\r
6 * which accompanies this distribution, and is available at
\r
7 * http://www.eclipse.org/legal/epl-v10.html
\r
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package fi.vtt.simantics.procore;
\r
14 import java.io.IOException;
\r
15 import java.net.InetSocketAddress;
\r
16 import java.nio.file.Files;
\r
17 import java.nio.file.Path;
\r
18 import java.nio.file.Paths;
\r
20 import org.simantics.db.ServerReference;
\r
21 import org.simantics.db.common.utils.Logger;
\r
24 * @author Toni Kalajainen
\r
26 public final class ProCoreServerReference implements ServerReference {
\r
27 public final Path dbFolder; // ProCoreServer is identified by database folder.
\r
28 public final InetSocketAddress socketAddress; // deprecated
\r
29 public final String dbid; // deprecated
\r
31 public ProCoreServerReference() {
\r
32 dbFolder = Paths.get("/"); // Assuming we don't have write rights to root.
\r
34 socketAddress = InetSocketAddress.createUnresolved("127.0.0.0", 0);
\r
36 public ProCoreServerReference(Path dbFolder) {
\r
37 if (null == dbFolder) // Null means that caller does not care what the value is.
\r
38 dbFolder = Paths.get("/"); // Assuming we don't have write rights to root.
\r
39 this.dbFolder = dbFolder;
\r
41 socketAddress = InetSocketAddress.createUnresolved("127.0.0.0", 0);
\r
43 // public ProCoreServerReference(ServerAddress address) throws InternalException {
\r
44 // Path dbFolder = Paths.get(address.getDbid()); // Maybe it would be better to let address resolve folder?
\r
45 // if (Files.isDirectory(dbFolder))
\r
46 // throw new ProCoreException("Server address does not contain valid database folder. address=" + address);
\r
47 // if (null == dbFolder) // Null means that caller does not care what the value is.
\r
48 // dbFolder = Paths.get("/"); // Assuming we don't have write rights to root.
\r
49 // this.dbFolder = dbFolder;
\r
51 // socketAddress = InetSocketAddress.createUnresolved("127.0.0.0", 0);
\r
53 public ProCoreServerReference(Path dbFolder, String hostAndPort) {
\r
54 this.dbFolder = dbFolder;
\r
55 String[] split = hostAndPort.split(":");
\r
56 if (split.length != 2)
\r
57 throw new IllegalArgumentException("address does not contain a port, missing ':' character");
\r
58 this.socketAddress = InetSocketAddress.createUnresolved(split[0], Integer.parseInt(split[1]));
\r
62 public ProCoreServerReference(Path dbFolder, String host, int port) {
\r
63 this.dbFolder = dbFolder;
\r
64 this.socketAddress = new InetSocketAddress(host, port);
\r
68 public ProCoreServerReference(Path dbFolder, String host, int port, String dbid) {
\r
69 this.dbFolder = dbFolder;
\r
70 this.socketAddress = InetSocketAddress.createUnresolved(host, port);
\r
74 public ProCoreServerReference(Path dbFolder, InetSocketAddress socketAddress) {
\r
75 this.dbFolder = dbFolder;
\r
76 this.socketAddress = socketAddress;
\r
80 public ProCoreServerReference(Path dbFolder, InetSocketAddress socketAddress, String dbid) {
\r
81 this.dbFolder = dbFolder;
\r
82 this.socketAddress = socketAddress;
\r
87 public int hashCode() {
\r
88 return dbFolder.hashCode();
\r
92 public boolean equals(Object other) {
\r
93 if (this == other) return true;
\r
94 if (other == null || !(getClass().equals(other.getClass()))) return false;
\r
95 ProCoreServerReference r = (ProCoreServerReference) other;
\r
97 return Files.isSameFile(dbFolder, r.dbFolder);
\r
98 } catch (IOException e) {
\r
99 Logger.defaultLogError("Failed to compare db folders. f1=" + dbFolder + " f2=" + r.dbFolder, e);
\r
105 public String toString() {
\r
106 return dbFolder.toString();
\r
109 public Path getDBFolder() {
\r