bugfix for IOApplicatonControler static methods
[cdmlib-apps.git] / XperCdmIntegration / src / test / java / eu / etaxonomy / cdm / io / xper / TestAdapterCdmXper.java
index 6fa48dcc6db9401880080e99cba2f2500d0d007b..4470cae38d243bdc9e99a7afc518d3cea68704d4 100644 (file)
 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
+       CdmXperAdapter adapterCdmXper;\r
        \r
-       \r
-       public TestAdapterCdmXper(){\r
-               \r
+       /**\r
+        * \r
+        */\r
+       private boolean startApplications() {\r
+               boolean result = false;\r
                DbSchemaValidation dbSchemaValidation = DbSchemaValidation.VALIDATE;\r
                ICdmDataSource datasource = CdmDestinations.cdm_test_local_xper();\r
-\r
-               final CdmApplicationController appCtr = CdmApplicationController.NewInstance(datasource, dbSchemaValidation);\r
+               System.out.println("cdm start");\r
+               CdmApplicationController appCtr = CdmIoApplicationController.NewInstance(datasource, dbSchemaValidation);\r
+               System.out.println("cdm started :::");\r
                \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
+\r
+               return result;\r
                \r
-               Thread t = new Thread() {\r
-                       public void run() {\r
-                               new Xper(appCtr);\r
-                       }\r
-               };\r
-               t.start();\r
        }\r
        \r
-       public static void xperloadDataFromCdm(){\r
+       public void xperloadDataFromCdm(){\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(Xper.getCdmApplicationController() != 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
-                       // use the current directory as working directory for Xper2\r
-                       XPDisplay.getControler().getBase().setPathName(System.getProperty("user.dir") + Utils.sep);\r
-                       // create a _thumbnail directory to store thumbnails\r
-                       new File(System.getProperty("user.dir") + Utils.sep + "images" + Utils.sep + "_thumbnails").mkdirs();\r
+                       XPApp.isNewBase = false;\r
                        // delete the variable create by default and update the frame\r
-                       XPDisplay.getControler().getBase().deleteVariable(XPDisplay.getControler().getBase().getVariableAt(0));\r
-                       XPDisplay.displayNbVariable();\r
-                       XPDisplay.getControler().displayJifVarTree();\r
-                       \r
-                       AdaptaterCdmXper adapterCdmXper = new AdaptaterCdmXper();\r
-                       Utils.cdmAdapter = adapterCdmXper;\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
-                               XPDisplay.displayNbVariable();\r
-                               XPDisplay.getControler().displayJifVarTree();\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
-        * @param args\r
+        * \r
         */\r
-       public static void main(String[] args) {\r
-               System.out.println("cdm start");\r
-               new TestAdapterCdmXper();\r
-               System.out.println("cdm started :::");\r
-               \r
-               while(!Utils.xperReady){\r
-                       //TODO wait\r
-               }\r
+       private void createThumbnailDirectory() {\r
+               // create a _thumbnail directory to store thumbnails\r
+               new File(System.getProperty("user.dir") + Utils.sep + "images" + Utils.sep + "_thumbnails").mkdirs();\r
+       }\r
+       \r
+       /**\r
+        * \r
+        */\r
+       private void generateThumbnails() {\r
+               System.out.println("start generate thumbnails");\r
+               // generate all thumbnails (a loading gif is automatically displayed\r
+               XPApp.generateThumbnailsFromURLImage(XPApp.getCurrentBase().getAllResources());\r
+               System.out.println("stop generate thumbnails");\r
+       }\r
+       \r
+\r
+       private void startPartialCdm() {\r
                System.out.println("start load data");\r
                // display a loading gif\r
-               Utils.displayLoadingGif(true);\r
-               // load the data from CDM\r
+//             Utils.displayLoadingGif(true);\r
+               \r
                \r
-               xperloadDataFromCdm();\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("stop load data");\r
-               System.out.println("start generate thumbnails");\r
-               // generate all thumbnails (a loading gif is automatically displayed\r
-               Utils.generateThumbnailsFromURLImage(XPDisplay.getControler().getBase().getAllResources());\r
-               System.out.println("stop generate thumbnails");\r
+               System.out.println("data loaded :::");\r
+\r
                \r
        }\r
 \r
+       /**\r
+        * @param args\r
+        */\r
+       public static void main(String[] args) {\r
+               System.out.println("start test adapter");\r
+               //start CDM and Xper\r
+               TestAdapterCdmXper testAdapter = new TestAdapterCdmXper();\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
+\r
+\r
+\r
+\r
 }\r