update cuba destination
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / app / cuba / CubaActivator.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9
10 package eu.etaxonomy.cdm.app.cuba;
11
12 import java.net.URI;
13 import java.util.UUID;
14
15 import org.apache.log4j.Logger;
16
17 import eu.etaxonomy.cdm.api.application.CdmApplicationController;
18 import eu.etaxonomy.cdm.api.application.ICdmRepository;
19 import eu.etaxonomy.cdm.api.service.ITermService;
20 import eu.etaxonomy.cdm.app.common.CdmDestinations;
21 import eu.etaxonomy.cdm.database.DbSchemaValidation;
22 import eu.etaxonomy.cdm.database.ICdmDataSource;
23 import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
24 import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;
25 import eu.etaxonomy.cdm.io.cuba.CubaImportConfigurator;
26 import eu.etaxonomy.cdm.io.cuba.CubaTransformer;
27 import eu.etaxonomy.cdm.model.agent.Person;
28 import eu.etaxonomy.cdm.model.description.Feature;
29 import eu.etaxonomy.cdm.model.description.FeatureNode;
30 import eu.etaxonomy.cdm.model.description.FeatureTree;
31 import eu.etaxonomy.cdm.model.reference.Reference;
32 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
33
34 /**
35 * @author a.mueller
36 * @created 04.01.2016
37 */
38 public class CubaActivator {
39 private static final Logger logger = Logger.getLogger(CubaActivator.class);
40
41 //database validation status (create, update, validate ...)
42 static DbSchemaValidation hbm2dll = DbSchemaValidation.VALIDATE;
43
44 // static final ICdmDataSource cdmDestination = CdmDestinations.localH2();
45 // static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql_test();
46 static final ICdmDataSource cdmDestination = CdmDestinations.cdm_local_cuba();
47 // static final ICdmDataSource cdmDestination = CdmDestinations.cdm_production_flora_cuba();
48
49 static boolean invers = true;
50
51 boolean doAsteraceae = include;
52 boolean doConvolvulaceae = include;
53 boolean doCyperaceae = include;
54 boolean doDicotA_C = include;
55 boolean doDicotD_M = include;
56 boolean doDicotN_Z = include;
57 boolean doEuphorbiaceae = include;
58 boolean doFabaceae = include;
59 boolean doGymnospermae = include;
60 boolean doLamVerbenaceae = include;
61 boolean doMalpighiaceae = include;
62 boolean doMelastomataceae = include;
63 boolean doMonocots = include;
64 boolean doMyrtaceae = include;
65 boolean doOrchidaceae = include;
66 boolean doRubiaceae = include;
67 boolean doUrticaceae = include;
68 boolean doPteridophyta = !include;
69
70 static boolean include = !invers;
71
72
73 //feature tree uuid
74 public static final UUID featureTreeUuid = UUID.fromString("dad6b9b5-693f-4367-a7aa-076cc9c99476");
75
76 //classification
77 static final UUID classificationUuid = UUID.fromString("5de394de-9c76-4b97-b04d-71be31c7f44b");
78 private static final String classificationName = "Cuba Checklist";
79
80 static final String sourceReferenceTitle = "Cuba Checklist Word Documents";
81
82 //check - import
83 static final CHECK check = CHECK.IMPORT_WITHOUT_CHECK;
84
85 boolean doVocabularies = (hbm2dll == DbSchemaValidation.CREATE);
86 static final boolean doTaxa = true;
87 static final boolean doDeduplicate = false;
88
89 static final boolean doAltFlorasSanchez2017 = true;
90 static final boolean doAltFlorasFRC = true;
91 static final boolean doAltFlorasFC = false;
92 static final boolean doAltFlorasAS = false;
93
94
95 private void doImport(ICdmDataSource cdmDestination){
96
97 URI source = monocots(); //just any
98
99 //make Source
100 CubaImportConfigurator config= CubaImportConfigurator.NewInstance(source, cdmDestination);
101 config.setClassificationUuid(classificationUuid);
102 config.setClassificationName(classificationName);
103 config.setCheck(check);
104 // config.setDoDistribution(doDistribution);
105 config.setDoTaxa(doTaxa);
106 config.setDbSchemaValidation(hbm2dll);
107 config.setSourceReferenceTitle(sourceReferenceTitle);
108 config.setDoVocabularies(doVocabularies);
109 config.setDoAltFlorasAS(doAltFlorasAS);
110 config.setDoAltFlorasFC(doAltFlorasFC);
111 config.setDoAltFlorasFRC(doAltFlorasFRC);
112 config.setDoAltFlorasSanchez2017(doAltFlorasSanchez2017);
113
114 CdmDefaultImport<CubaImportConfigurator> myImport = new CdmDefaultImport<>();
115
116
117 //...
118 if (doAsteraceae){
119 doSingleSource(asteraceae(), config, myImport, doVocabularies);
120 }
121 if (doConvolvulaceae){
122 doSingleSource(convolvulaceae(), config, myImport, doVocabularies);
123 }
124 if (doCyperaceae){
125 doSingleSource(cyperaceae(), config, myImport, doVocabularies);
126 }
127 if (doDicotA_C){
128 doSingleSource(dicotA_C(), config, myImport, doVocabularies);
129 }
130 if (doDicotD_M){
131 doSingleSource(dicotD_M(), config, myImport, doVocabularies);
132 }
133 if (doDicotN_Z){
134 doSingleSource(dicotN_Z(), config, myImport, doVocabularies);
135 }
136 if (doEuphorbiaceae){
137 doSingleSource(euphorbiaceae(), config, myImport, doVocabularies);
138 }
139 if (doFabaceae){
140 doSingleSource(fabaceae(), config, myImport, doVocabularies);
141 }
142 if (doGymnospermae){
143 doSingleSource(gymnospermae(), config, myImport, doVocabularies);
144 }
145 if (doLamVerbenaceae){
146 doSingleSource(lamVerbenaceae(), config, myImport, doVocabularies);
147 }
148 if (doMalpighiaceae){
149 doSingleSource(malpighiaceae(), config, myImport, doVocabularies);
150 }
151 if (doMelastomataceae){
152 doSingleSource(melastomataceae(), config, myImport, doVocabularies);
153 }
154 if (doMonocots){
155 doSingleSource(monocots(), config, myImport, doVocabularies);
156 }
157 if (doMyrtaceae){
158 doSingleSource(myrtaceae(), config, myImport, doVocabularies);
159 }
160 if (doOrchidaceae){
161 doSingleSource(orchidaceae(), config, myImport, doVocabularies);
162 }
163 if (doRubiaceae){
164 doSingleSource(rubiaceae(), config, myImport, doVocabularies);
165 }
166 if (doUrticaceae){
167 doSingleSource(urticaceae(), config, myImport, doVocabularies);
168 }
169 if (doPteridophyta){
170 doSingleSource(pteridophyta(), config, myImport, doVocabularies);
171 }
172
173
174 //deduplicate
175 if (doDeduplicate){
176 logger.warn("Start deduplication ...");
177
178 ICdmRepository app = myImport.getCdmAppController();
179 if (app == null){
180 app = CdmApplicationController.NewInstance(cdmDestination, hbm2dll, false);
181 }
182 int count = app.getAgentService().deduplicate(Person.class, null, null);
183 logger.warn("Deduplicated " + count + " persons.");
184 // count = app.getAgentService().deduplicate(Team.class, null, null);
185 // logger.warn("Deduplicated " + count + " teams.");
186 // count = app.getReferenceService().deduplicate(Reference.class, null, null);
187 // logger.warn("Deduplicated " + count + " references.");
188 }
189
190 System.exit(0);
191
192 }
193
194 /**
195 * @param source
196 * @param config
197 * @param myImport
198 */
199 private void doSingleSource(URI source, CubaImportConfigurator config,
200 CdmDefaultImport<CubaImportConfigurator> myImport, boolean doVocabularies) {
201 config.setSource(source);
202 String fileName = source.toString();
203 fileName = fileName.substring(fileName.lastIndexOf("/") + 1 );
204
205 String message = "Start import from ("+ fileName + ") ...";
206 System.out.println(message);
207 logger.warn(message);
208 config.setSourceReference(getSourceReference(fileName));
209 config.setDoVocabularies(doVocabularies);
210 myImport.invoke(config);
211
212 if (doVocabularies){
213 FeatureTree tree = makeFeatureNodes(myImport.getCdmAppController().getTermService());
214 myImport.getCdmAppController().getFeatureTreeService().saveOrUpdate(tree);
215 this.doVocabularies = false;
216 }
217 System.out.println("End import from ("+ source.toString() + ")...");
218 }
219
220 private final Reference inRef = ReferenceFactory.newGeneric();
221 private Reference getSourceReference(String string) {
222 Reference result = ReferenceFactory.newGeneric();
223 result.setTitleCache(string, true);
224 result.setInReference(inRef);
225 inRef.setTitleCache(sourceReferenceTitle, true);
226 return result;
227 }
228
229 private FeatureTree makeFeatureNodes(ITermService service){
230 // CyprusTransformer transformer = new CyprusTransformer();
231
232 FeatureTree result = FeatureTree.NewInstance(featureTreeUuid);
233 result.setTitleCache("Cuba Feature Tree", true);
234 FeatureNode root = result.getRoot();
235 FeatureNode newNode;
236
237 newNode = FeatureNode.NewInstance(Feature.DISTRIBUTION());
238 root.addChild(newNode);
239
240 // Feature featurAltFam = (Feature)service.find(CubaTransformer.uuidAlternativeFamily);
241 // newNode = FeatureNode.NewInstance(featurAltFam);
242 // root.addChild(newNode);
243
244 Feature featurAltFam2 = (Feature)service.find(CubaTransformer.uuidAlternativeFamily2);
245 newNode = FeatureNode.NewInstance(featurAltFam2);
246 root.addChild(newNode);
247
248 return result;
249 }
250
251
252 //Monocots
253 public static URI monocots() {
254 return URI.create("file:////BGBM-PESIHPC/Cuba/Monocot.xlsx");
255 }
256 //Cyperaceae
257 public static URI cyperaceae() {
258 return URI.create("file:////BGBM-PESIHPC/Cuba/Cyper_Poaceae.xlsx");
259 }
260 //Fabaceae
261 public static URI fabaceae() {
262 return URI.create("file:////BGBM-PESIHPC/Cuba/Fabaceae.xlsx");
263 }
264 //Urticaceae
265 public static URI urticaceae() {
266 return URI.create("file:////BGBM-PESIHPC/Cuba/Urticaceae.xlsx");
267 }
268 //Asteraceae
269 public static URI asteraceae() {
270 return URI.create("file:////BGBM-PESIHPC/Cuba/Asteraceae.xlsx");
271 }
272 //Convolvulaceae
273 public static URI convolvulaceae() {
274 return URI.create("file:////BGBM-PESIHPC/Cuba/Convolvulaceae.xlsx");
275 }
276 //dicot A-C
277 public static URI dicotA_C() {
278 return URI.create("file:////BGBM-PESIHPC/Cuba/dicotA_C.xlsx");
279 }
280 //dicot D-M
281 public static URI dicotD_M() {
282 return URI.create("file:////BGBM-PESIHPC/Cuba/dicotD_M.xlsx");
283 }
284 //dicot N-Z
285 public static URI dicotN_Z() {
286 return URI.create("file:////BGBM-PESIHPC/Cuba/dicotN_Z.xlsx");
287 }
288 //Euphorbiaceae
289 public static URI euphorbiaceae() {
290 return URI.create("file:////BGBM-PESIHPC/Cuba/Euphorbiaceae.xlsx");
291 }
292 //Gymnospermae
293 public static URI gymnospermae() {
294 return URI.create("file:////BGBM-PESIHPC/Cuba/gymnospermae.xlsx");
295 }
296 //Lam.Verbenaceae
297 public static URI lamVerbenaceae() {
298 return URI.create("file:////BGBM-PESIHPC/Cuba/Lam_Verbenaceae.xlsx");
299 }
300 //Malpighiaceae
301 public static URI malpighiaceae() {
302 return URI.create("file:////BGBM-PESIHPC/Cuba/Malpighiaceae.xlsx");
303 }
304 //Melastomataceae
305 public static URI melastomataceae() {
306 return URI.create("file:////BGBM-PESIHPC/Cuba/Melastomataceae.xlsx");
307 }
308 //Myrtaceae
309 public static URI myrtaceae() {
310 return URI.create("file:////BGBM-PESIHPC/Cuba/Myrtaceae.xlsx");
311 }
312 //Orchidaceae
313 public static URI orchidaceae() {
314 return URI.create("file:////BGBM-PESIHPC/Cuba/Orchidaceae.xlsx");
315 }
316 //Rubiaceae
317 public static URI rubiaceae() {
318 return URI.create("file:////BGBM-PESIHPC/Cuba/Rubiaceae.xlsx");
319 }
320 //Rubiaceae
321 public static URI pteridophyta() {
322 return URI.create("file:////BGBM-PESIHPC/Cuba/Pteridophyta.xlsx");
323 }
324
325 /**
326 * @param args
327 */
328 public static void main(String[] args) {
329 CubaActivator me = new CubaActivator();
330 me.doImport(cdmDestination);
331 System.exit(0);
332 }
333
334 }