new implementation for Xper data fetching from persistence and some further changes...
[cdmlib-apps.git] / XperCdmIntegration / src / test / java / eu / etaxonomy / cdm / io / xper / TestAdapterCdmXper.java
1 package eu.etaxonomy.cdm.io.xper;
2
3 import java.io.File;
4 import java.util.List;
5 import java.util.UUID;
6
7 import org.apache.log4j.Logger;
8
9 import eu.etaxonomy.cdm.api.application.CdmApplicationController;
10 import eu.etaxonomy.cdm.app.common.CdmDestinations;
11 import eu.etaxonomy.cdm.database.DbSchemaValidation;
12 import eu.etaxonomy.cdm.database.ICdmDataSource;
13 import eu.etaxonomy.cdm.model.description.WorkingSet;
14 import fr_jussieu_snv_lis.XPApp;
15 import fr_jussieu_snv_lis.Xper;
16 import fr_jussieu_snv_lis.utils.Utils;
17
18 public class TestAdapterCdmXper {
19 private static final Logger logger = Logger.getLogger(TestAdapterCdmXper.class);
20
21 CdmXperAdapter adapterCdmXper;
22
23 /**
24 *
25 */
26 private boolean startApplications() {
27 boolean result = false;
28 DbSchemaValidation dbSchemaValidation = DbSchemaValidation.VALIDATE;
29 ICdmDataSource datasource = CdmDestinations.cdm_test_local_xper();
30 System.out.println("cdm start");
31 CdmApplicationController appCtr = CdmApplicationController.NewInstance(datasource, dbSchemaValidation);
32 System.out.println("cdm started :::");
33
34 List<WorkingSet> workingSets = appCtr.getWorkingSetService().list(null, 1, 0, null, null);
35 if (workingSets.isEmpty()){
36 logger.warn("There is no working set");
37 return false;
38 }else{
39 UUID uuidWorkingSet = workingSets.iterator().next().getUuid();
40
41 adapterCdmXper = (CdmXperAdapter)appCtr.getBean("cdmXperAdapter");
42 // adapterCdmXper = new CdmXperAdapter(appCtr, uuidWorkingSet);
43 result = adapterCdmXper.startXper(uuidWorkingSet);
44 }
45
46 return result;
47
48 }
49
50 public void xperloadDataFromCdm(){
51 System.out.println("start load data");
52 // display a loading gif
53 Utils.displayLoadingGif(true);
54
55
56 // create a new empty base and load data from CDM
57 if(XPApp.cdmAdapter != null){
58 // create a new base
59 XPApp.getMainframe().newBase("baseTest");
60 // specify that the current base is not new (needed to be able to add images)
61 XPApp.isNewBase = false;
62 // delete the variable create by default and update the frame
63 XPApp.getCurrentBase().deleteVariable(XPApp.getCurrentBase().getVariableAt(0));
64 XPApp.getMainframe().displayNbVariable();
65 XPApp.getMainframe().getControler().displayJifVarTree();
66
67 if (XPApp.getCurrentBase() != null) {
68 // adaptaterCdmXper.createWorkingSet();
69 adapterCdmXper.load();
70
71 XPApp.getMainframe().displayNbVariable();
72 XPApp.getMainframe().getControler().displayJifVarTree();
73 }
74 }
75 // undisplay a loading gif
76 Utils.displayLoadingGif(false);
77 System.out.println("data loaded :::");
78 }
79
80 /**
81 *
82 */
83 private void createThumbnailDirectory() {
84 // create a _thumbnail directory to store thumbnails
85 new File(System.getProperty("user.dir") + Utils.sep + "images" + Utils.sep + "_thumbnails").mkdirs();
86 }
87
88 /**
89 *
90 */
91 private void generateThumbnails() {
92 System.out.println("start generate thumbnails");
93 // generate all thumbnails (a loading gif is automatically displayed
94 XPApp.generateThumbnailsFromURLImage(XPApp.getCurrentBase().getAllResources());
95 System.out.println("stop generate thumbnails");
96 }
97
98
99 private void startPartialCdm() {
100 System.out.println("start load data");
101 // display a loading gif
102 // Utils.displayLoadingGif(true);
103
104
105 // create a new empty base and load data from CDM
106 if(XPApp.cdmAdapter != null){
107 // create a new base
108 // XPApp.getMainframe().newBase("baseTest");
109 // specify that the current base is not new (needed to be able to add images), not really needed
110 XPApp.isNewBase = false;
111
112 XPApp.getMainframe().displayNbVariable();
113 XPApp.getMainframe().getControler().displayJifVarTree();
114
115 // if (XPApp.getCurrentBase() != null) {
116 //// adaptaterCdmXper.createWorkingSet();
117 // adapterCdmXper.load();
118 //
119 // XPApp.getMainframe().displayNbVariable();
120 // XPApp.getMainframe().getControler().displayJifVarTree();
121 // }
122 }
123 // undisplay a loading gif
124 Utils.displayLoadingGif(false);
125 System.out.println("data loaded :::");
126
127
128 }
129
130 /**
131 * @param args
132 */
133 public static void main(String[] args) {
134 System.out.println("start test adapter");
135 //start CDM and Xper
136 TestAdapterCdmXper testAdapter = new TestAdapterCdmXper();
137 boolean success = testAdapter.startApplications();
138 while(!XPApp.xperReady){
139 try {
140 Thread.sleep(200);
141 } catch (InterruptedException e) {
142 e.printStackTrace();
143 }
144 }
145 System.out.println("xper2 started :::");
146 if (success){
147 testAdapter.createThumbnailDirectory();
148 if (args.length >= 1 && "-p".equals(args[0]) ){
149 testAdapter.startPartialCdm();
150 }else{
151 // load the data from CDM
152 testAdapter.xperloadDataFromCdm();
153 // use the current directory as working directory for Xper2
154 XPApp.getCurrentBase().setPathName(System.getProperty("user.dir") + Utils.sep);
155
156 testAdapter.generateThumbnails();
157 }
158 }else{
159 System.out.println("end test adapter with errors");
160 System.exit(-1);
161
162 }
163 System.out.println("end test adapter");
164
165
166 }
167
168
169
170
171 }