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
.ICdmApplicationConfiguration
;
18 import eu
.etaxonomy
.cdm
.api
.service
.ITermService
;
19 import eu
.etaxonomy
.cdm
.app
.common
.CdmDestinations
;
20 import eu
.etaxonomy
.cdm
.database
.DbSchemaValidation
;
21 import eu
.etaxonomy
.cdm
.database
.ICdmDataSource
;
22 import eu
.etaxonomy
.cdm
.io
.common
.CdmDefaultImport
;
23 import eu
.etaxonomy
.cdm
.io
.common
.IImportConfigurator
.CHECK
;
24 import eu
.etaxonomy
.cdm
.io
.cuba
.CubaImportConfigurator
;
25 import eu
.etaxonomy
.cdm
.io
.cuba
.CubaTransformer
;
26 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
27 import eu
.etaxonomy
.cdm
.model
.description
.Feature
;
28 import eu
.etaxonomy
.cdm
.model
.description
.FeatureNode
;
29 import eu
.etaxonomy
.cdm
.model
.description
.FeatureTree
;
30 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
31 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
37 public class CubaActivator
{
38 private static final Logger logger
= Logger
.getLogger(CubaActivator
.class);
40 //database validation status (create, update, validate ...)
41 static DbSchemaValidation hbm2dll
= DbSchemaValidation
.CREATE
;
43 // static final ICdmDataSource cdmDestination = CdmDestinations.localH2();
44 // static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql_test();
45 static final ICdmDataSource cdmDestination
= CdmDestinations
.cdm_cuba_production();
47 static boolean invers
= false;
49 boolean doAsteraceae
= include
;
50 boolean doConvolvulaceae
= include
;
51 boolean doCyperaceae
= include
;
52 boolean doDicotA_C
= include
;
53 boolean doDicotD_M
= include
;
54 boolean doDicotN_Z
= include
;
55 boolean doEuphorbiaceae
= include
;
56 boolean doFabaceae
= include
;
57 boolean doGymnospermae
= include
;
58 boolean doLamVerbenaceae
= include
;
59 boolean doMalpighiaceae
= include
;
60 boolean doMelastomataceae
= include
;
61 boolean doMonocots
= include
;
62 boolean doMyrtaceae
= include
;
63 boolean doOrchidaceae
= include
;
64 boolean doRubiaceae
= include
;
65 boolean doUrticaceae
= include
;
67 static boolean include
= !invers
;
73 public static final UUID featureTreeUuid
= UUID
.fromString("dad6b9b5-693f-4367-a7aa-076cc9c99476");
76 static final UUID classificationUuid
= UUID
.fromString("5de394de-9c76-4b97-b04d-71be31c7f44b");
77 private static final String classificationName
= "Flora of Cuba";
79 static final String sourceReferenceTitle
= "Cuba import";
82 static final CHECK check
= CHECK
.IMPORT_WITHOUT_CHECK
;
84 boolean doVocabularies
= (hbm2dll
== DbSchemaValidation
.CREATE
);
85 static final boolean doTaxa
= true;
86 static final boolean doDeduplicate
= false;
89 private void doImport(ICdmDataSource cdmDestination
){
91 URI source
= monocots(); //just any
94 CubaImportConfigurator config
= CubaImportConfigurator
.NewInstance(source
, cdmDestination
);
95 config
.setClassificationUuid(classificationUuid
);
96 config
.setClassificationName(classificationName
);
97 config
.setCheck(check
);
98 // config.setDoDistribution(doDistribution);
99 config
.setDoTaxa(doTaxa
);
100 config
.setDbSchemaValidation(hbm2dll
);
101 config
.setSourceReferenceTitle(sourceReferenceTitle
);
102 config
.setDoVocabularies(doVocabularies
);
104 CdmDefaultImport
<CubaImportConfigurator
> myImport
= new CdmDefaultImport
<CubaImportConfigurator
>();
109 doSource(asteraceae(), config
, myImport
, doVocabularies
);
111 if (doConvolvulaceae
){
112 doSource(convolvulaceae(), config
, myImport
, doVocabularies
);
115 doSource(cyperaceae(), config
, myImport
, doVocabularies
);
118 doSource(dicotA_C(), config
, myImport
, doVocabularies
);
121 doSource(dicotD_M(), config
, myImport
, doVocabularies
);
124 doSource(dicotN_Z(), config
, myImport
, doVocabularies
);
126 if (doEuphorbiaceae
){
127 doSource(euphorbiaceae(), config
, myImport
, doVocabularies
);
130 doSource(fabaceae(), config
, myImport
, doVocabularies
);
133 doSource(gymnospermae(), config
, myImport
, doVocabularies
);
135 if (doLamVerbenaceae
){
136 doSource(lamVerbenaceae(), config
, myImport
, doVocabularies
);
138 if (doMalpighiaceae
){
139 doSource(malpighiaceae(), config
, myImport
, doVocabularies
);
141 if (doMelastomataceae
){
142 doSource(melastomataceae(), config
, myImport
, doVocabularies
);
145 doSource(monocots(), config
, myImport
, doVocabularies
);
148 doSource(myrtaceae(), config
, myImport
, doVocabularies
);
151 doSource(orchidaceae(), config
, myImport
, doVocabularies
);
154 doSource(rubiaceae(), config
, myImport
, doVocabularies
);
157 doSource(urticaceae(), config
, myImport
, doVocabularies
);
164 ICdmApplicationConfiguration app
= myImport
.getCdmAppController();
165 int count
= app
.getAgentService().deduplicate(Person
.class, null, null);
166 logger
.warn("Deduplicated " + count
+ " persons.");
167 // count = app.getAgentService().deduplicate(Team.class, null, null);
168 // logger.warn("Deduplicated " + count + " teams.");
169 count
= app
.getReferenceService().deduplicate(Reference
.class, null, null);
170 logger
.warn("Deduplicated " + count
+ " references.");
183 private void doSource(URI source
, CubaImportConfigurator config
,
184 CdmDefaultImport
<CubaImportConfigurator
> myImport
, boolean doVocabularies
) {
185 config
.setSource(source
);
186 String message
= "Start import from ("+ source
.toString() + ") ...";
187 System
.out
.println(message
);
188 logger
.warn(message
);
189 config
.setSourceReference(getSourceReference(sourceReferenceTitle
));
190 config
.setDoVocabularies(doVocabularies
);
191 myImport
.invoke(config
);
194 FeatureTree tree
= makeFeatureNodes(myImport
.getCdmAppController().getTermService());
195 myImport
.getCdmAppController().getFeatureTreeService().saveOrUpdate(tree
);
196 this.doVocabularies
= false;
198 System
.out
.println("End import from ("+ source
.toString() + ")...");
201 private Reference
<?
> getSourceReference(String string
) {
202 Reference
<?
> result
= ReferenceFactory
.newGeneric();
203 result
.setTitleCache(string
, true);
207 private FeatureTree
makeFeatureNodes(ITermService service
){
208 // CyprusTransformer transformer = new CyprusTransformer();
210 FeatureTree result
= FeatureTree
.NewInstance(featureTreeUuid
);
211 result
.setTitleCache("Cuba Feature Tree", true);
212 FeatureNode root
= result
.getRoot();
215 // newNode = FeatureNode.NewInstance(Feature.STATUS());
216 // root.addChild(newNode);
218 newNode
= FeatureNode
.NewInstance(Feature
.DISTRIBUTION());
219 root
.addChild(newNode
);
221 Feature featurAltFam
= (Feature
)service
.find(CubaTransformer
.uuidAlternativeFamily
);
222 newNode
= FeatureNode
.NewInstance(featurAltFam
);
223 root
.addChild(newNode
);
225 Feature featurAltFam2
= (Feature
)service
.find(CubaTransformer
.uuidAlternativeFamily2
);
226 newNode
= FeatureNode
.NewInstance(featurAltFam2
);
227 root
.addChild(newNode
);
229 // newNode = FeatureNode.NewInstance(Feature.SYSTEMATICS());
230 // root.addChild(newNode);
232 //user defined features
233 // String [] featureList = new String[]{"Red Book", "Endemism"};
234 // addFeataureNodesByStringList(featureList, root, transformer, service);
241 public static URI
monocots() {
242 return URI
.create("file:////BGBM-PESIHPC/Cuba/Monocot.xlsx");
245 public static URI
cyperaceae() {
246 return URI
.create("file:////BGBM-PESIHPC/Cuba/Cyper_Poaceae.xlsx");
249 public static URI
fabaceae() {
250 return URI
.create("file:////BGBM-PESIHPC/Cuba/Fabaceae.xlsx");
253 public static URI
urticaceae() {
254 return URI
.create("file:////BGBM-PESIHPC/Cuba/Urticaceae.xlsx");
257 public static URI
asteraceae() {
258 return URI
.create("file:////BGBM-PESIHPC/Cuba/Asteraceae.xlsx");
261 public static URI
convolvulaceae() {
262 return URI
.create("file:////BGBM-PESIHPC/Cuba/Convolvulaceae.xlsx");
265 public static URI
dicotA_C() {
266 return URI
.create("file:////BGBM-PESIHPC/Cuba/dicotA_C.xlsx");
269 public static URI
dicotD_M() {
270 return URI
.create("file:////BGBM-PESIHPC/Cuba/dicotD_M.xlsx");
273 public static URI
dicotN_Z() {
274 return URI
.create("file:////BGBM-PESIHPC/Cuba/dicotN_Z.xlsx");
277 public static URI
euphorbiaceae() {
278 return URI
.create("file:////BGBM-PESIHPC/Cuba/Euphorbiaceae.xlsx");
281 public static URI
gymnospermae() {
282 return URI
.create("file:////BGBM-PESIHPC/Cuba/gymnospermae.xlsx");
285 public static URI
lamVerbenaceae() {
286 return URI
.create("file:////BGBM-PESIHPC/Cuba/Lam_Verbenaceae.xlsx");
289 public static URI
malpighiaceae() {
290 return URI
.create("file:////BGBM-PESIHPC/Cuba/Malpighiaceae.xlsx");
293 public static URI
melastomataceae() {
294 return URI
.create("file:////BGBM-PESIHPC/Cuba/Melastomataceae.xlsx");
297 public static URI
myrtaceae() {
298 return URI
.create("file:////BGBM-PESIHPC/Cuba/Myrtaceae.xlsx");
301 public static URI
orchidaceae() {
302 return URI
.create("file:////BGBM-PESIHPC/Cuba/Orchidaceae.xlsx");
305 public static URI
rubiaceae() {
306 return URI
.create("file:////BGBM-PESIHPC/Cuba/Rubiaceae.xlsx");
312 public static void main(String
[] args
) {
313 CubaActivator me
= new CubaActivator();
314 me
.doImport(cdmDestination
);