Adding CDM Remote Source set of classes to allow editor to connect to a remote cdmserver
authorCherian Mathew <c.mathew@bgbm.org>
Fri, 4 Apr 2014 09:28:07 +0000 (09:28 +0000)
committerCherian Mathew <c.mathew@bgbm.org>
Fri, 4 Apr 2014 09:28:07 +0000 (09:28 +0000)
.gitattributes
eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmPersistentRemoteSource.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSource.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSourceBase.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/ICdmRemoteSource.java [new file with mode: 0644]

index 6efc31dd4781a6f8cfd64f00cf3bebf58ec392fc..648ab098bb5454b0b7798ce93a6db6e40df6be2b 100644 (file)
@@ -321,6 +321,10 @@ eu.etaxonomy.taxeditor.cdmlib/pom.xml -text
 eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteConfiguration.java -text
 eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteController.java -text
 eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/lazyloading/CdmLazyLoader.java -text
+eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmPersistentRemoteSource.java -text
+eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSource.java -text
+eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSourceBase.java -text
+eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/ICdmRemoteSource.java -text
 eu.etaxonomy.taxeditor.cdmlib/src/main/java/org/hibernate/collection/internal/AbstractPersistentCollection.java -text
 eu.etaxonomy.taxeditor.cdmlib/src/main/java/org/hibernate/proxy/AbstractLazyInitializer.java -text
 eu.etaxonomy.taxeditor.cdmlib/src/main/resources/eu/etaxonomy/cdm/config.properties -text
diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmPersistentRemoteSource.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmPersistentRemoteSource.java
new file mode 100644 (file)
index 0000000..be568eb
--- /dev/null
@@ -0,0 +1,16 @@
+package eu.etaxonomy.cdm.remote;
+
+import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
+
+public class CdmPersistentRemoteSource extends CdmRemoteSourceBase {
+       
+       public CdmPersistentRemoteSource NewInstance(String name, String server, int port, String contextPath, NomenclaturalCode nomenclaturalCode) {
+               return new CdmPersistentRemoteSource(name, server, port, contextPath, nomenclaturalCode);
+       }
+       
+       private CdmPersistentRemoteSource(String name, String server, int port, String contextPath, NomenclaturalCode nomenclaturalCode) { 
+               super(name, server, port, contextPath, nomenclaturalCode);
+               
+       }
+
+}
diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSource.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSource.java
new file mode 100644 (file)
index 0000000..b320b45
--- /dev/null
@@ -0,0 +1,20 @@
+package eu.etaxonomy.cdm.remote;
+
+import org.springframework.beans.factory.config.BeanDefinition;
+
+import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
+
+public class CdmRemoteSource extends CdmRemoteSourceBase {
+       
+       
+       public static CdmRemoteSource NewInstance(String name, String server, int port, String contextPath, NomenclaturalCode nomenclaturalCode) {
+               return new CdmRemoteSource(name, server, port, contextPath, nomenclaturalCode);
+       }
+       
+       private CdmRemoteSource(String name, String server, int port, String contextPath, NomenclaturalCode nomenclaturalCode) { 
+               super(name, server, port, contextPath, nomenclaturalCode);
+               
+       }
+
+
+}
diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSourceBase.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/CdmRemoteSourceBase.java
new file mode 100644 (file)
index 0000000..2cb83fc
--- /dev/null
@@ -0,0 +1,83 @@
+package eu.etaxonomy.cdm.remote;
+
+import org.springframework.remoting.RemoteConnectFailureException;
+import org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean;
+
+import eu.etaxonomy.cdm.api.service.IDatabaseService;
+import eu.etaxonomy.cdm.config.CdmSource;
+import eu.etaxonomy.cdm.config.CdmSourceException;
+import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
+
+public class CdmRemoteSourceBase extends CdmSource implements ICdmRemoteSource {
+
+       private String contextPath;
+       private String baseUrl;
+       
+       private IDatabaseService databaseService;
+       
+       protected CdmRemoteSourceBase(String name, String server, int port, String contextPath, NomenclaturalCode nomenclaturalCode) {
+               setName(name);
+               setServer(server);
+               setPort(port);
+               setContextPath(contextPath);
+               setNomenclaturalCode(nomenclaturalCode);
+               if(contextPath == null || contextPath.equals("")) {
+                       setBaseUrl("http://" + server + ":" + String.valueOf(port));
+               } else {
+                       setBaseUrl("http://" + server + ":" + String.valueOf(port) + "/" + contextPath);
+               }
+           HttpInvokerProxyFactoryBean proxy = new HttpInvokerProxyFactoryBean();
+           proxy.setServiceInterface(IDatabaseService.class);
+           proxy.setServiceUrl(getBaseUrl() + "/remoting/database.service");
+           proxy.afterPropertiesSet();
+           databaseService = (IDatabaseService) proxy.getObject();
+       }
+       
+       @Override
+       public String getBaseUrl() {
+               return baseUrl;
+       }
+
+       public void setBaseUrl(String baseUrl) {
+               this.baseUrl = baseUrl;
+       }
+
+       @Override
+       public String getContextPath() {
+               return contextPath;
+       }
+
+       public void setContextPath(String contextPath) {
+               this.contextPath = contextPath;
+       }
+
+       @Override
+       public String getDbSchemaVersion() throws CdmSourceException {
+               return databaseService.getDbSchemaVersion();
+
+       }
+
+       @Override
+       public boolean isDbEmpty() throws CdmSourceException {
+               return databaseService.isDbEmpty();
+
+       }
+
+       @Override
+       public boolean checkConnection() throws CdmSourceException {
+               // assuming that database service works implies 
+               // the connection is up
+               // if no exception is thrown then we assume that the 
+               // connection is up
+
+               databaseService.getDbSchemaVersion();
+
+               return true;
+       }
+
+       @Override
+       public String getConnectionMessage() {
+               return "Conncting to Remote CDM Server " + getName();
+       }
+
+}
diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/ICdmRemoteSource.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/remote/ICdmRemoteSource.java
new file mode 100644 (file)
index 0000000..5b34bcc
--- /dev/null
@@ -0,0 +1,13 @@
+package eu.etaxonomy.cdm.remote;
+
+import org.springframework.beans.factory.config.BeanDefinition;
+
+import eu.etaxonomy.cdm.config.ICdmSource;
+
+public interface ICdmRemoteSource extends ICdmSource {
+       
+       public String getContextPath();
+       
+       public String getBaseUrl();     
+
+}