2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.cdm
.app
.cuba
;
13 import java
.util
.UUID
;
15 import org
.apache
.log4j
.Logger
;
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
;
38 public class CubaActivator
{
39 private static final Logger logger
= Logger
.getLogger(CubaActivator
.class);
41 //database validation status (create, update, validate ...)
42 static DbSchemaValidation hbm2dll
= DbSchemaValidation
.VALIDATE
;
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();
49 static boolean invers
= true;
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
;
70 static boolean include
= !invers
;
74 public static final UUID featureTreeUuid
= UUID
.fromString("dad6b9b5-693f-4367-a7aa-076cc9c99476");
77 static final UUID classificationUuid
= UUID
.fromString("5de394de-9c76-4b97-b04d-71be31c7f44b");
78 private static final String classificationName
= "Cuba Checklist";
80 static final String sourceReferenceTitle
= "Cuba Checklist Word Documents";
83 static final CHECK check
= CHECK
.IMPORT_WITHOUT_CHECK
;
85 boolean doVocabularies
= (hbm2dll
== DbSchemaValidation
.CREATE
);
86 static final boolean doTaxa
= true;
87 static final boolean doDeduplicate
= false;
89 static final boolean doAltFlorasSanchez2017
= true;
90 static final boolean doAltFlorasFRC
= true;
91 static final boolean doAltFlorasFC
= false;
92 static final boolean doAltFlorasAS
= false;
95 private void doImport(ICdmDataSource cdmDestination
){
97 URI source
= monocots(); //just any
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
);
114 CdmDefaultImport
<CubaImportConfigurator
> myImport
= new CdmDefaultImport
<>();
119 doSingleSource(asteraceae(), config
, myImport
, doVocabularies
);
121 if (doConvolvulaceae
){
122 doSingleSource(convolvulaceae(), config
, myImport
, doVocabularies
);
125 doSingleSource(cyperaceae(), config
, myImport
, doVocabularies
);
128 doSingleSource(dicotA_C(), config
, myImport
, doVocabularies
);
131 doSingleSource(dicotD_M(), config
, myImport
, doVocabularies
);
134 doSingleSource(dicotN_Z(), config
, myImport
, doVocabularies
);
136 if (doEuphorbiaceae
){
137 doSingleSource(euphorbiaceae(), config
, myImport
, doVocabularies
);
140 doSingleSource(fabaceae(), config
, myImport
, doVocabularies
);
143 doSingleSource(gymnospermae(), config
, myImport
, doVocabularies
);
145 if (doLamVerbenaceae
){
146 doSingleSource(lamVerbenaceae(), config
, myImport
, doVocabularies
);
148 if (doMalpighiaceae
){
149 doSingleSource(malpighiaceae(), config
, myImport
, doVocabularies
);
151 if (doMelastomataceae
){
152 doSingleSource(melastomataceae(), config
, myImport
, doVocabularies
);
155 doSingleSource(monocots(), config
, myImport
, doVocabularies
);
158 doSingleSource(myrtaceae(), config
, myImport
, doVocabularies
);
161 doSingleSource(orchidaceae(), config
, myImport
, doVocabularies
);
164 doSingleSource(rubiaceae(), config
, myImport
, doVocabularies
);
167 doSingleSource(urticaceae(), config
, myImport
, doVocabularies
);
170 doSingleSource(pteridophyta(), config
, myImport
, doVocabularies
);
176 logger
.warn("Start deduplication ...");
178 ICdmRepository app
= myImport
.getCdmAppController();
180 app
= CdmApplicationController
.NewInstance(cdmDestination
, hbm2dll
, false);
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.");
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 );
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
);
213 FeatureTree tree
= makeFeatureNodes(myImport
.getCdmAppController().getTermService());
214 myImport
.getCdmAppController().getFeatureTreeService().saveOrUpdate(tree
);
215 this.doVocabularies
= false;
217 System
.out
.println("End import from ("+ source
.toString() + ")...");
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);
229 private FeatureTree
makeFeatureNodes(ITermService service
){
230 // CyprusTransformer transformer = new CyprusTransformer();
232 FeatureTree result
= FeatureTree
.NewInstance(featureTreeUuid
);
233 result
.setTitleCache("Cuba Feature Tree", true);
234 FeatureNode root
= result
.getRoot();
237 newNode
= FeatureNode
.NewInstance(Feature
.DISTRIBUTION());
238 root
.addChild(newNode
);
240 // Feature featurAltFam = (Feature)service.find(CubaTransformer.uuidAlternativeFamily);
241 // newNode = FeatureNode.NewInstance(featurAltFam);
242 // root.addChild(newNode);
244 Feature featurAltFam2
= (Feature
)service
.find(CubaTransformer
.uuidAlternativeFamily2
);
245 newNode
= FeatureNode
.NewInstance(featurAltFam2
);
246 root
.addChild(newNode
);
253 public static URI
monocots() {
254 return URI
.create("file:////BGBM-PESIHPC/Cuba/Monocot.xlsx");
257 public static URI
cyperaceae() {
258 return URI
.create("file:////BGBM-PESIHPC/Cuba/Cyper_Poaceae.xlsx");
261 public static URI
fabaceae() {
262 return URI
.create("file:////BGBM-PESIHPC/Cuba/Fabaceae.xlsx");
265 public static URI
urticaceae() {
266 return URI
.create("file:////BGBM-PESIHPC/Cuba/Urticaceae.xlsx");
269 public static URI
asteraceae() {
270 return URI
.create("file:////BGBM-PESIHPC/Cuba/Asteraceae.xlsx");
273 public static URI
convolvulaceae() {
274 return URI
.create("file:////BGBM-PESIHPC/Cuba/Convolvulaceae.xlsx");
277 public static URI
dicotA_C() {
278 return URI
.create("file:////BGBM-PESIHPC/Cuba/dicotA_C.xlsx");
281 public static URI
dicotD_M() {
282 return URI
.create("file:////BGBM-PESIHPC/Cuba/dicotD_M.xlsx");
285 public static URI
dicotN_Z() {
286 return URI
.create("file:////BGBM-PESIHPC/Cuba/dicotN_Z.xlsx");
289 public static URI
euphorbiaceae() {
290 return URI
.create("file:////BGBM-PESIHPC/Cuba/Euphorbiaceae.xlsx");
293 public static URI
gymnospermae() {
294 return URI
.create("file:////BGBM-PESIHPC/Cuba/gymnospermae.xlsx");
297 public static URI
lamVerbenaceae() {
298 return URI
.create("file:////BGBM-PESIHPC/Cuba/Lam_Verbenaceae.xlsx");
301 public static URI
malpighiaceae() {
302 return URI
.create("file:////BGBM-PESIHPC/Cuba/Malpighiaceae.xlsx");
305 public static URI
melastomataceae() {
306 return URI
.create("file:////BGBM-PESIHPC/Cuba/Melastomataceae.xlsx");
309 public static URI
myrtaceae() {
310 return URI
.create("file:////BGBM-PESIHPC/Cuba/Myrtaceae.xlsx");
313 public static URI
orchidaceae() {
314 return URI
.create("file:////BGBM-PESIHPC/Cuba/Orchidaceae.xlsx");
317 public static URI
rubiaceae() {
318 return URI
.create("file:////BGBM-PESIHPC/Cuba/Rubiaceae.xlsx");
321 public static URI
pteridophyta() {
322 return URI
.create("file:////BGBM-PESIHPC/Cuba/Pteridophyta.xlsx");
328 public static void main(String
[] args
) {
329 CubaActivator me
= new CubaActivator();
330 me
.doImport(cdmDestination
);