ref #6794 TermTreeNode-> TermNode in cdmlib-apps
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / app / wp6 / palmae / PalmaeActivator.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.palmae;
11
12 import java.io.File;
13 import java.net.URI;
14 import java.net.URISyntaxException;
15 import java.util.UUID;
16
17 import org.apache.log4j.Logger;
18
19 import eu.etaxonomy.cdm.api.application.ICdmRepository;
20 import eu.etaxonomy.cdm.app.common.CdmDestinations;
21 import eu.etaxonomy.cdm.app.images.ImageImportConfigurator;
22 import eu.etaxonomy.cdm.app.tcs.TcsSources;
23 import eu.etaxonomy.cdm.app.wp6.palmae.config.PalmaeProtologueImportConfigurator;
24 import eu.etaxonomy.cdm.database.DbSchemaValidation;
25 import eu.etaxonomy.cdm.database.ICdmDataSource;
26 import eu.etaxonomy.cdm.io.PalmaeImageImport;
27 import eu.etaxonomy.cdm.io.PalmaeProtologueImport;
28 import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
29 import eu.etaxonomy.cdm.io.common.IImportConfigurator;
30 import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;
31 import eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES;
32 import eu.etaxonomy.cdm.io.common.ImportResult;
33 import eu.etaxonomy.cdm.io.tcsrdf.TcsRdfImportConfigurator;
34 import eu.etaxonomy.cdm.model.description.Feature;
35 import eu.etaxonomy.cdm.model.term.TermNode;
36 import eu.etaxonomy.cdm.model.term.TermTree;
37
38 /**
39 * @author a.mueller
40 * @since 20.06.2008
41 */
42 public class PalmaeActivator {
43 private static final Logger logger = Logger.getLogger(PalmaeActivator.class);
44
45 //database validation status (create, update, validate ...)
46 static DbSchemaValidation hbm2dll = DbSchemaValidation.CREATE;
47 static final String tcsSource = TcsSources.arecaceae_local();
48 static final ICdmDataSource cdmDestination = CdmDestinations.localH2Palmae();
49
50 // set the webserver path to the images
51 private static final String imageUrlString = "http://wp5.e-taxonomy.eu/media/palmae/photos/";
52 // set the webserver path to the protologues
53 public static final String protologueUrlString = "http://wp5.e-taxonomy.eu/media/palmae/protologe/";
54
55 public static final UUID featureTreeUuid = UUID.fromString("72ccce05-7cc8-4dab-8e47-bf3f5fd848a0");
56
57 static final UUID treeUuid = UUID.fromString("1adb71d4-cce6-45e1-b578-e668778d9ec6");
58 static final UUID secUuid = UUID.fromString("5f32b8af-0c97-48ac-8d33-6099ed68c625");
59 static final String sourceSecId = "palm_pub_ed_999999";
60 static final boolean pubishReferencesInBibliography = false;
61
62 //should the other imports run as well?
63 static final boolean includeTaxonX = true;
64 static final boolean includeImages = true;
65 static final boolean includeExcelProtologue = true;
66 static final boolean includeMediaProtologue = true;
67 static final boolean updateFeatureTree = true;
68 static final boolean updateNameUsage = true;
69
70 //check - import
71 static final CHECK check = CHECK.CHECK_AND_IMPORT;
72
73 static boolean useClassification = true;
74
75 //authors
76 static final boolean doAuthors = true;
77 //references
78 static final DO_REFERENCES doReferences = DO_REFERENCES.ALL;
79 //names
80 static final boolean doTaxonNames = true;
81 static final boolean doRelNames = true;
82
83 //taxa
84 static final boolean doTaxa = true;
85 static final boolean doRelTaxa = true;
86 static final boolean doFacts = true;
87
88
89 private ImportResult doImport(ICdmDataSource destination){
90 ImportResult success;
91 System.out.println("Start import from Tcs("+ tcsSource.toString() + ") ...");
92
93 //make Source
94 URI source;
95 try {
96 source = new URI(tcsSource);
97
98 TcsRdfImportConfigurator tcsImportConfigurator = TcsRdfImportConfigurator.NewInstance(source, destination);
99
100 tcsImportConfigurator.setClassificationUuid(treeUuid);
101 tcsImportConfigurator.setSecUuid(secUuid);
102 tcsImportConfigurator.setSourceSecId(sourceSecId);
103
104 tcsImportConfigurator.setDoReferences(doReferences);
105 tcsImportConfigurator.setDoTaxonNames(doTaxonNames);
106 tcsImportConfigurator.setDoRelNames(doRelNames);
107
108 tcsImportConfigurator.setDoTaxa(doTaxa);
109 tcsImportConfigurator.setDoRelTaxa(doRelTaxa);
110 tcsImportConfigurator.setDoFacts(doFacts);
111 tcsImportConfigurator.setUseClassification(useClassification);
112 tcsImportConfigurator.setPublishReferences(pubishReferencesInBibliography);
113
114 tcsImportConfigurator.setCheck(check);
115 tcsImportConfigurator.setDbSchemaValidation(hbm2dll);
116
117 // invoke import
118 CdmDefaultImport<TcsRdfImportConfigurator> tcsImport = new CdmDefaultImport<TcsRdfImportConfigurator>();
119 success = tcsImport.invoke(tcsImportConfigurator);
120
121 //make feature tree
122 logger.info("Make feature tree");
123 ICdmRepository app = tcsImport.getCdmAppController();
124
125 TermTree<Feature> tree = getFeatureTree();
126 app.getFeatureTreeService().saveOrUpdate(tree);
127 System.out.println("End import from TCS ("+ source.toString() + ")...");
128
129 return success;
130 } catch (URISyntaxException e) {
131 e.printStackTrace();
132 success = new ImportResult();
133 success.addException(e);
134 return success;
135 }
136 }
137
138
139 private TermTree<Feature> getFeatureTree(){
140
141 TermTree<Feature> result = TermTree.NewFeatureInstance(featureTreeUuid);
142 TermNode<Feature> root = result.getRoot();
143
144 root.addChild(Feature.INTRODUCTION());
145 root.addChild(Feature.DISTRIBUTION());
146 root.addChild(Feature.BIOLOGY_ECOLOGY());
147 root.addChild(Feature.CONSERVATION());
148 root.addChild(Feature.COMMON_NAME());
149 root.addChild(Feature.ETYMOLOGY());
150 root.addChild(Feature.USES());
151 root.addChild(Feature.CULTIVATION());
152 root.addChild(Feature.DISCUSSION());
153 root.addChild(Feature.DIAGNOSIS());
154 root.addChild(Feature.DESCRIPTION());
155 root.addChild(Feature.MATERIALS_EXAMINED());
156 root.addChild(Feature.ANATOMY());
157
158 return result;
159
160
161 }
162
163 /**
164 * @param args
165 */
166 public static void main(String[] args) {
167 ImportResult success;
168
169 logger.debug("start");
170 ICdmDataSource destination = CdmDestinations.chooseDestination(args) != null ? CdmDestinations.chooseDestination(args) : cdmDestination;
171
172 PalmaeActivator me = new PalmaeActivator();
173 me.doImport(destination);
174
175 if (includeImages){
176 System.out.println("Start importing images ...");
177 CdmDefaultImport<IImportConfigurator> imageImporter = new CdmDefaultImport<IImportConfigurator>();
178 URI folderUri;
179 try {
180 folderUri = new URI(PalmaeImageActivator.sourceFolderString);
181 ImageImportConfigurator imageConfigurator = ImageImportConfigurator.NewInstance(
182 folderUri, destination, imageUrlString, PalmaeImageImport.class);
183 imageConfigurator.setSecUuid(secUuid);
184 success = imageImporter.invoke(imageConfigurator);
185 System.out.println("End importing images ...");
186 } catch (URISyntaxException e) {
187 e.printStackTrace();
188 }
189 }
190
191 if (includeExcelProtologue){
192 System.out.println("Start importing protologues ...");
193 URI fileUri;
194 try {
195 fileUri = new URI(PalmaeExcelProtologueActivator.sourceFileString);
196 ImageImportConfigurator imageConfigurator = ImageImportConfigurator.NewInstance(
197 fileUri, destination, protologueUrlString, PalmaeProtologueImport.class);
198 imageConfigurator.setSecUuid(secUuid);
199
200 CdmDefaultImport<IImportConfigurator> imageImporter = new CdmDefaultImport<IImportConfigurator>();
201 imageImporter.invoke(imageConfigurator);
202 System.out.println("End importing protologues ...");
203 } catch (URISyntaxException e) {
204 e.printStackTrace();
205 }
206
207 }
208 if (includeMediaProtologue){
209 System.out.println("Start importing protologues from \\\\media...");
210 String protologueSource = PalmaeProtologueImportActivator.protologueSource;
211 String urlString = protologueUrlString;
212
213 File source = new File (protologueSource);
214 PalmaeProtologueImportConfigurator protologConfig = PalmaeProtologueImportConfigurator.NewInstance(source, destination, urlString);
215 CdmDefaultImport<IImportConfigurator> cdmImport = new CdmDefaultImport<IImportConfigurator>();
216
217 //protologConfig.setDoFacts(doDescriptions);
218 protologConfig.setCheck(check);
219 protologConfig.setDbSchemaValidation(DbSchemaValidation.UPDATE);
220
221 success = cdmImport.invoke(protologConfig);
222
223 System.out.println("End importing protologues ...");
224 }
225
226 if (includeTaxonX){
227 System.out.println("Start importing taxonX ...");
228 PalmaeTaxonXImportActivator taxonXimporter = new PalmaeTaxonXImportActivator();
229 PalmaeTaxonXImportActivator.cdmDestination = destination;
230 success = taxonXimporter.runImport();
231 System.out.println("End importing taxonX ...");
232 }
233
234 PalmaePostImportUpdater updater = new PalmaePostImportUpdater();
235 if (updateFeatureTree){
236 updater.updateMissingFeatures(destination);
237 }
238
239 if (updateNameUsage){
240 updater.updateNameUsage(destination);
241 }
242
243
244 String strSuccess = "";
245 if (success.isSuccess() == false){
246 strSuccess = "not ";
247 }
248 System.out.println("Import " + strSuccess + "successful");
249
250 }
251
252 }