#4073 Initial implementation of local cdm-server
[taxeditor.git] / eu.etaxonomy.taxeditor.test / src / test / java / eu / etaxonomy / taxeditor / httpinvoker / CDMServer.java
index 4fad3b3732c1687070dac441ad07ab9648bc2a55..be4bd1e828847b2d99f66fd9ab02f6c2161e76c9 100644 (file)
 package eu.etaxonomy.taxeditor.httpinvoker;
 
 import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.Properties;
 
 import javax.management.InstanceNotFoundException;
 import javax.management.MBeanException;
@@ -25,10 +32,15 @@ import javax.management.remote.JMXServiceURL;
 import javax.sql.DataSource;
 
 import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Platform;
+import org.osgi.framework.Bundle;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
 import org.unitils.database.annotations.TestDataSource;
 
+import eu.etaxonomy.cdm.database.CdmPersistentDataSource;
+import eu.etaxonomy.cdm.database.ICdmDataSource;
 import eu.etaxonomy.taxeditor.remoting.server.CDMServerException;
 import eu.etaxonomy.taxeditor.remoting.source.CdmRemoteSourceBase;
 
@@ -77,15 +89,50 @@ public class CDMServer {
 
     private boolean serverAlreadyRunning = false;
 
-    private void CDMServer() {}
+    private File dataSourcesFile;
+    private final String dataSourceName;
 
-    public static CDMServer getInstance() {
-        if(cdmServer == null) {
-            cdmServer = new CDMServer();
+    public CDMServer(String dataSourceName) throws CDMServerException {
+        this.dataSourceName = dataSourceName;
+        Properties prop = new Properties();
+
+        Bundle bundle = Platform.getBundle("eu.etaxonomy.taxeditor.cdmlib");
+        URL serverPropertiesURL = bundle.getEntry("src/test/resources/server.properties");
+
+        try {
+            File serverPropertiesFile = new File(FileLocator.resolve(serverPropertiesURL).toURI());
+            InputStream inputStream = new FileInputStream(serverPropertiesFile);
+
+            if (inputStream != null) {
+                prop.load(inputStream);
+                inputStream.close();
+            }
+        } catch (FileNotFoundException e) {
+            throw new CDMServerException(e);
+        } catch (URISyntaxException e) {
+            throw new CDMServerException(e);
+        } catch (IOException e) {
+            throw new CDMServerException(e);
         }
-        return cdmServer;
+
+
+
+        if(prop.getProperty("httpPort") != null) {
+            setHttpPort(Integer.valueOf(prop.getProperty("httpPort")));
+        }
+
+        if(prop.getProperty("stopPort") != null) {
+            setStopPort(Integer.valueOf(prop.getProperty("stopPort")));
+        }
+
+        if(prop.getProperty("stopKey") != null) {
+            setStopKey(prop.getProperty("stopKey"));
+        }
+
     }
 
+
+
     public String getName() {
         return name;
     }
@@ -265,7 +312,7 @@ public class CDMServer {
     public void stop(boolean force) throws Exception {
 
         if(!force) {
-            if(!getInstance().isStarted(1)) {
+            if(!cdmServer.isStarted(1)) {
                 logger.info("[CDM-Server] Server already stopped @ " + host + ":" + httpPort );
                 return;
             }
@@ -335,8 +382,26 @@ public class CDMServer {
         } catch (MalformedObjectNameException e) {
             throw new CDMServerException(e);
         }
+    }
 
+    public void convertEditorToServerConfig() {
+        String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> " + System.lineSeparator() +
+                "<beans xmlns=\"http://www.springframework.org/schema/beans\"" + System.lineSeparator() +
+                "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + System.lineSeparator() +
+                "xmlns:tx=\"http://www.springframework.org/schema/tx\"" + System.lineSeparator() +
+                "xmlns:context=\"http://www.springframework.org/schema/context\"" + System.lineSeparator() +
+                "xsi:schemaLocation=\"http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" + System.lineSeparator() +
+                "http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context-2.5.xsd" + System.lineSeparator() +
+                "http://www.springframework.org/schema/tx   http://www.springframework.org/schema/tx/spring-tx-2.5.xsd" + System.lineSeparator() +
+                ">" + System.lineSeparator() +
+                "<bean id=\"dataSourceProperties\" class=\"eu.etaxonomy.cdm.remote.config.DataSourceProperties\">" + System.lineSeparator() +
+                "   <property name=\"propsMap\">" + System.lineSeparator() +
+                "       <map/>" + System.lineSeparator() +
+                "   </property>" + System.lineSeparator() +
+                "</bean>";
+
+        for(ICdmDataSource dataSource : CdmPersistentDataSource.getAllDataSources()) {
 
-
+        }
     }
 }