final commit of Taraxacum import on behalf of anahit
[cdmlib.git] / app-import / src / main / java / eu / etaxonomy / cdm / app / wp6 / cichorieae / CichorieaeActivator.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.wp6.cichorieae;
11
12 import java.io.File;
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.app.berlinModelImport.BerlinModelSources;
19 import eu.etaxonomy.cdm.app.berlinModelImport.TreeCreator;
20 import eu.etaxonomy.cdm.app.common.CdmDestinations;
21 import eu.etaxonomy.cdm.app.images.ImageImportConfigurator;
22 import eu.etaxonomy.cdm.database.DbSchemaValidation;
23 import eu.etaxonomy.cdm.database.ICdmDataSource;
24 import eu.etaxonomy.cdm.io.CichorieaeImageImport;
25 import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator;
26 import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
27 import eu.etaxonomy.cdm.io.common.IImportConfigurator;
28 import eu.etaxonomy.cdm.io.common.Source;
29 import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;
30 import eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES;
31 import eu.etaxonomy.cdm.io.common.IImportConfigurator.EDITOR;
32 import eu.etaxonomy.cdm.model.common.ISourceable;
33 import eu.etaxonomy.cdm.model.description.Feature;
34 import eu.etaxonomy.cdm.model.description.FeatureNode;
35 import eu.etaxonomy.cdm.model.description.FeatureTree;
36 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
37 import eu.etaxonomy.cdm.model.name.ZoologicalName;
38
39
40 /**
41 * TODO add the following to a wiki page:
42 * HINT: If you are about to import into a mysql data base running under windows and if you wish to dump and restore the resulting data bas under another operation systen
43 * you must set the mysql system variable lower_case_table_names = 0 in order to create data base with table compatible names.
44 *
45 *
46 * @author a.mueller
47 *
48 */
49 public class CichorieaeActivator {
50 private static final Logger logger = Logger.getLogger(CichorieaeActivator.class);
51
52 //database validation status (create, update, validate ...)
53 static DbSchemaValidation hbm2dll = DbSchemaValidation.CREATE;
54 static final Source berlinModelSource = BerlinModelSources.EDIT_CICHORIEAE();
55 static final ICdmDataSource cdmDestination = CdmDestinations.cdm_bgbm24_cichorieae_b();
56
57 static final UUID secUuid = UUID.fromString("6924c75d-e0d0-4a6d-afb7-3dd8c71195ca");
58 static final UUID taxonomicTreeUuid = UUID.fromString("534e190f-3339-49ba-95d9-fa27d5493e3e");
59 // static final UUID treeUuid = UUID.fromString("00db28a7-50e1-4abc-86ec-b2a8ce870de9");
60 static final int sourceSecId = 7800000;
61
62 static final UUID featureTreeUuid = UUID.fromString("ae9615b8-bc60-4ed0-ad96-897f9226d568");
63 static final Object[] featureKeyList = new Integer[]{1, 31, 4, 98, 41};
64
65 static final String mediaUrlString = "http://wp5.e-taxonomy.eu/dataportal/cichorieae/media/protolog/";
66 //Mac
67 //static final File mediaPath = new File("/Volumes/protolog/protolog/");
68 //Windows
69 static final File mediaPath = new File("\\\\media\\editwp6\\protolog");
70 // set to zero for unlimited nameFacts
71 static final int maximumNumberOfNameFacts = 0;
72
73 //should the other imports run as well?
74 static final boolean includeImages = true;
75 static final boolean includeTaraxacum = true; // TODO
76
77
78 //check - import
79 static final CHECK check = CHECK.CHECK_AND_IMPORT;
80
81 //editor - import
82 static final EDITOR editor = EDITOR.EDITOR_AS_EDITOR;
83
84 //NomeclaturalCode
85 static final NomenclaturalCode nomenclaturalCode = NomenclaturalCode.ICBN;
86
87 //ignore null
88 static final boolean ignoreNull = true;
89
90 static boolean useTaxonomicTree = true;
91
92
93 // **************** ALL *********************
94
95 static final boolean doUser = true;
96 //authors
97 static final boolean doAuthors = true;
98 //references
99 static final DO_REFERENCES doReferences = DO_REFERENCES.ALL;
100 //names
101 static final boolean doTaxonNames = true;
102 static final boolean doRelNames = true;
103 static final boolean doNameStatus = true;
104 static final boolean doTypes = true;
105 static final boolean doNameFacts = true;
106
107 //taxa
108 static final boolean doTaxa = true;
109 static final boolean doRelTaxa = true;
110 static final boolean doFacts = true;
111 static final boolean doOccurences = true;
112
113 //etc.
114 static final boolean doMarker = true;
115
116
117 // **************** SELECTED *********************
118
119 // static final boolean doUser = true;
120 // //authors
121 // static final boolean doAuthors = false;
122 // //references
123 // static final DO_REFERENCES doReferences = DO_REFERENCES.NONE;
124 // //names
125 // static final boolean doTaxonNames = false;
126 // static final boolean doRelNames = false;
127 // static final boolean doNameStatus = false;
128 // static final boolean doTypes = false;
129 // static final boolean doNameFacts = false;
130 //
131 // //taxa
132 // static final boolean doTaxa = true;
133 // static final boolean doRelTaxa = false;
134 // static final boolean doFacts = false;
135 // static final boolean doOccurences = false;
136 //
137 // //etc.
138 // static final boolean doMarker = false;
139
140
141 /**
142 * @param args
143 */
144 public static void main(String[] args) {
145 System.out.println("Start import from BerlinModel("+ berlinModelSource.getDatabase() + ") to " + cdmDestination.getDatabase() + " ...");
146
147 //make BerlinModel Source
148 Source source = berlinModelSource;
149 ICdmDataSource destination = cdmDestination;
150
151 BerlinModelImportConfigurator bmImportConfigurator = BerlinModelImportConfigurator.NewInstance(source, destination);
152
153 bmImportConfigurator.setTreeUuid(taxonomicTreeUuid);
154 bmImportConfigurator.setSourceSecId(sourceSecId);
155
156 bmImportConfigurator.setNomenclaturalCode(nomenclaturalCode);
157
158 bmImportConfigurator.setIgnoreNull(ignoreNull);
159 bmImportConfigurator.setDoAuthors(doAuthors);
160 bmImportConfigurator.setDoReferences(doReferences);
161 bmImportConfigurator.setDoTaxonNames(doTaxonNames);
162 bmImportConfigurator.setDoRelNames(doRelNames);
163 bmImportConfigurator.setDoNameStatus(doNameStatus);
164 bmImportConfigurator.setDoTypes(doTypes);
165 bmImportConfigurator.setDoNameFacts(doNameFacts);
166 bmImportConfigurator.setUseTaxonomicTree(useTaxonomicTree);
167
168 bmImportConfigurator.setDoTaxa(doTaxa);
169 bmImportConfigurator.setDoRelTaxa(doRelTaxa);
170 bmImportConfigurator.setDoFacts(doFacts);
171 bmImportConfigurator.setDoOccurrence(doOccurences);
172
173 bmImportConfigurator.setDoMarker(doMarker);
174 bmImportConfigurator.setDoUser(doUser);
175 bmImportConfigurator.setEditor(editor);
176 bmImportConfigurator.setDbSchemaValidation(hbm2dll);
177
178
179 // mediaResourceLocations
180 if ( mediaPath.exists() && mediaPath.isDirectory()){
181 bmImportConfigurator.setMediaUrl(mediaUrlString);
182 bmImportConfigurator.setMediaPath(mediaPath);
183 }else{
184 logger.warn("Could not configure mediaResourceLocations");
185 }
186
187 // maximum number of name facts to import
188 bmImportConfigurator.setMaximumNumberOfNameFacts(maximumNumberOfNameFacts);
189
190
191 bmImportConfigurator.setCheck(check);
192 bmImportConfigurator.setEditor(editor);
193
194 // invoke import
195 CdmDefaultImport<BerlinModelImportConfigurator> bmImport = new CdmDefaultImport<BerlinModelImportConfigurator>();
196 bmImport.invoke(bmImportConfigurator);
197
198 if (doFacts && bmImportConfigurator.getCheck().equals(CHECK.CHECK_AND_IMPORT) || bmImportConfigurator.getCheck().equals(CHECK.IMPORT_WITHOUT_CHECK) ){
199 CdmApplicationController app = bmImport.getCdmAppController();
200 ISourceable obj = app.getCommonService().getSourcedObjectByIdInSource(ZoologicalName.class, "1000027", null);
201 logger.info(obj);
202
203 //make feature tree
204 FeatureTree tree = TreeCreator.flatTree(featureTreeUuid, bmImportConfigurator.getFeatureMap(), featureKeyList);
205 FeatureNode imageNode = FeatureNode.NewInstance(Feature.IMAGE());
206 tree.getRoot().addChild(imageNode);
207 FeatureNode distributionNode = FeatureNode.NewInstance(Feature.DISTRIBUTION());
208 tree.getRoot().addChild(distributionNode, 2);
209 app.getDescriptionService().saveFeatureTree(tree);
210 }
211
212 System.out.println("End import from BerlinModel ("+ source.getDatabase() + ")...");
213
214 if (includeImages) {
215 System.out.println("Start importing images ...");
216 CdmDefaultImport<IImportConfigurator> imageImporter = new CdmDefaultImport<IImportConfigurator>();
217 ImageImportConfigurator imageConfigurator = ImageImportConfigurator.NewInstance(
218 CichorieaeImageActivator.sourceFolder, cdmDestination, CichorieaeImageImport.class);
219 imageConfigurator.setSecUuid(secUuid);
220 imageConfigurator.setTreeUuid(taxonomicTreeUuid);
221 imageImporter.invoke(imageConfigurator);
222 System.out.println("End importing images ...");
223 }
224
225 if (includeTaraxacum) {
226 logger.warn("Taraxacum import not yet implemented");
227 // TODO
228 }
229
230
231 }
232
233 }