bugfix for IOApplicatonControler static methods
[cdmlib-apps.git] / XperCdmIntegration / src / test / java / eu / etaxonomy / cdm / io / xper / TestAdapterCdmXper.java
index 977e5072e0a6c7c6dc0ff25110eba7733daadf5d..4470cae38d243bdc9e99a7afc518d3cea68704d4 100644 (file)
@@ -1,43 +1,50 @@
 package eu.etaxonomy.cdm.io.xper;\r
 \r
 import java.io.File;\r
+import java.util.List;\r
+import java.util.UUID;\r
+\r
+import org.apache.log4j.Logger;\r
 \r
 import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
 import eu.etaxonomy.cdm.app.common.CdmDestinations;\r
 import eu.etaxonomy.cdm.database.DbSchemaValidation;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
-import eu.etaxonomy.cdm.io.xper.AdaptaterCdmXper;\r
-import fr_jussieu_snv_lis.Xper;\r
-import fr_jussieu_snv_lis.edition.XPDisplay;\r
+import eu.etaxonomy.cdm.io.api.application.CdmIoApplicationController;\r
+import eu.etaxonomy.cdm.model.description.WorkingSet;\r
+import fr_jussieu_snv_lis.XPApp;\r
 import fr_jussieu_snv_lis.utils.Utils;\r
 \r
 public class TestAdapterCdmXper {\r
+       private static final Logger logger = Logger.getLogger(TestAdapterCdmXper.class);\r
        \r
-       AdaptaterCdmXper adapterCdmXper;\r
+       CdmXperAdapter adapterCdmXper;\r
        \r
        /**\r
         * \r
         */\r
-       private void startApplications() {\r
+       private boolean startApplications() {\r
+               boolean result = false;\r
                DbSchemaValidation dbSchemaValidation = DbSchemaValidation.VALIDATE;\r
                ICdmDataSource datasource = CdmDestinations.cdm_test_local_xper();\r
                System.out.println("cdm start");\r
-               CdmApplicationController appCtr = CdmApplicationController.NewInstance(datasource, dbSchemaValidation);\r
+               CdmApplicationController appCtr = CdmIoApplicationController.NewInstance(datasource, dbSchemaValidation);\r
                System.out.println("cdm started :::");\r
                \r
-               adapterCdmXper = new AdaptaterCdmXper(appCtr);\r
-               \r
-               Thread t = new Thread() {\r
-                       public void run() {\r
-                               new Xper(adapterCdmXper);\r
-                       }\r
-               };\r
-               System.out.println("xper2 start");\r
-               t.start();\r
-               while(!Utils.xperReady){\r
-                       //TODO wait\r
+               List<WorkingSet> workingSets = appCtr.getWorkingSetService().list(null, 1, 0, null, null);\r
+               if (workingSets.isEmpty()){\r
+                       logger.warn("There is no working set");\r
+                       return false;\r
+               }else{\r
+                       UUID uuidWorkingSet =  workingSets.iterator().next().getUuid();\r
+                       \r
+                       adapterCdmXper = (CdmXperAdapter)appCtr.getBean("cdmXperAdapter");\r
+//                     adapterCdmXper = new CdmXperAdapter(appCtr, uuidWorkingSet);\r
+                       result =  adapterCdmXper.startXper(uuidWorkingSet);\r
                }\r
-               System.out.println("xper2 started :::");\r
+\r
+               return result;\r
+               \r
        }\r
        \r
        public void xperloadDataFromCdm(){\r
@@ -47,22 +54,22 @@ public class TestAdapterCdmXper {
                \r
                \r
                // create a new empty base and load data from CDM\r
-               if(Utils.cdmAdapter != null){\r
+               if(XPApp.cdmAdapter != null){\r
                        // create a new base\r
-                       Xper.getMainframe().newBase("baseTest");\r
+                       XPApp.getMainframe().newBase("baseTest");\r
                        // specify that the current base is not new (needed to be able to add images)\r
-                       Utils.isNewBase = false;\r
+                       XPApp.isNewBase = false;\r
                        // delete the variable create by default and update the frame\r
-                       Xper.getMainframe().getControler().getBase().deleteVariable(Xper.getMainframe().getControler().getBase().getVariableAt(0));\r
-                       Xper.getMainframe().displayNbVariable();\r
-                       Xper.getMainframe().getControler().displayJifVarTree();\r
+                       XPApp.getCurrentBase().deleteVariable(XPApp.getCurrentBase().getVariableAt(0));\r
+                       XPApp.getMainframe().displayNbVariable();\r
+                       XPApp.getMainframe().getControler().displayJifVarTree();\r
                        \r
-                       if (Utils.currentBase != null) {\r
+                       if (XPApp.getCurrentBase() != null) {\r
 //                             adaptaterCdmXper.createWorkingSet();\r
                                adapterCdmXper.load();\r
 \r
-                               Xper.getMainframe().displayNbVariable();\r
-                               Xper.getMainframe().getControler().displayJifVarTree();\r
+                               XPApp.getMainframe().displayNbVariable();\r
+                               XPApp.getMainframe().getControler().displayJifVarTree();\r
                        }\r
                }\r
                // undisplay a loading gif\r
@@ -84,13 +91,39 @@ public class TestAdapterCdmXper {
        private void generateThumbnails() {\r
                System.out.println("start generate thumbnails");\r
                // generate all thumbnails (a loading gif is automatically displayed\r
-               Utils.generateThumbnailsFromURLImage(Xper.getMainframe().getControler().getBase().getAllResources());\r
+               XPApp.generateThumbnailsFromURLImage(XPApp.getCurrentBase().getAllResources());\r
                System.out.println("stop generate thumbnails");\r
        }\r
        \r
 \r
        private void startPartialCdm() {\r
-               // TODO Auto-generated method stub\r
+               System.out.println("start load data");\r
+               // display a loading gif\r
+//             Utils.displayLoadingGif(true);\r
+               \r
+               \r
+               // create a new empty base and load data from CDM\r
+               if(XPApp.cdmAdapter != null){\r
+                       // create a new base\r
+//                     XPApp.getMainframe().newBase("baseTest");\r
+                       // specify that the current base is not new (needed to be able to add images), not really needed\r
+                       XPApp.isNewBase = false;\r
+\r
+                       XPApp.getMainframe().displayNbVariable();\r
+                       XPApp.getMainframe().getControler().displayJifVarTree();\r
+                       \r
+//                     if (XPApp.getCurrentBase() != null) {\r
+////                           adaptaterCdmXper.createWorkingSet();\r
+//                             adapterCdmXper.load();\r
+//\r
+//                             XPApp.getMainframe().displayNbVariable();\r
+//                             XPApp.getMainframe().getControler().displayJifVarTree();\r
+//                     }\r
+               }\r
+               // undisplay a loading gif\r
+               Utils.displayLoadingGif(false);\r
+               System.out.println("data loaded :::");\r
+\r
                \r
        }\r
 \r
@@ -98,22 +131,36 @@ public class TestAdapterCdmXper {
         * @param args\r
         */\r
        public static void main(String[] args) {\r
-               System.out.println("start test");\r
+               System.out.println("start test adapter");\r
                //start CDM and Xper\r
                TestAdapterCdmXper testAdapter = new TestAdapterCdmXper();\r
-               testAdapter.startApplications();\r
-               testAdapter.createThumbnailDirectory();\r
-               if (args.length >= 1 && "-p".equals(args[0]) ){\r
-                       testAdapter.startPartialCdm();\r
-               }else{\r
-                       // load the data from CDM\r
-                       testAdapter.xperloadDataFromCdm();\r
-                       // use the current directory as working directory for Xper2\r
-                       Xper.getMainframe().getControler().getBase().setPathName(System.getProperty("user.dir") + Utils.sep);\r
-                       \r
-                       testAdapter.generateThumbnails();\r
+               boolean success = testAdapter.startApplications();\r
+               while(!XPApp.xperReady){\r
+                       try {\r
+                               Thread.sleep(200);\r
+                       } catch (InterruptedException e) {\r
+                               e.printStackTrace();\r
+                       }\r
                }\r
+               System.out.println("xper2 started :::");\r
+               if (success){\r
+                       testAdapter.createThumbnailDirectory();\r
+                       if (args.length >= 1 && "-p".equals(args[0]) ){\r
+                               testAdapter.startPartialCdm();\r
+                       }else{\r
+                               // load the data from CDM\r
+                               testAdapter.xperloadDataFromCdm();\r
+                               // use the current directory as working directory for Xper2\r
+                               XPApp.getCurrentBase().setPathName(System.getProperty("user.dir") + Utils.sep);\r
+                               \r
+                               testAdapter.generateThumbnails();\r
+                       }\r
+               }else{\r
+                       System.out.println("end test adapter with errors");\r
+                       System.exit(-1);\r
 \r
+               }\r
+               System.out.println("end test adapter");\r
 \r
                \r
        }\r