PalmaeFeatureTreeUpdater
[cdmlib.git] / app-import / src / main / java / eu / etaxonomy / cdm / app / wp6 / palmae / PalmaeTaxonXImportActivator.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.MalformedURLException;
14 import java.net.URL;
15
16 import org.apache.log4j.Logger;
17 import org.springframework.transaction.TransactionStatus;
18
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;
24 import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;
25 import eu.etaxonomy.cdm.io.taxonx.TaxonXImportConfigurator;
26
27 /**
28 * @author a.mueller
29 * @created 20.06.2008
30 * @version 1.0
31 */
32 public class PalmaeTaxonXImportActivator {
33 private static final Logger logger = Logger.getLogger(PalmaeTaxonXImportActivator.class);
34
35 //database validation status (create, update, validate ...)
36 static DbSchemaValidation hbm2dll = DbSchemaValidation.UPDATE;
37 //static final String tcsSource = TcsSources.taxonX_local();
38 //static File source = TcsSources.taxonX_localDir();
39 static File source = new File("target/classes/taxonX");
40 static ICdmDataSource cdmDestination = CdmDestinations.localH2Palmae();
41
42 //check - import
43 static CHECK check = CHECK.IMPORT_WITHOUT_CHECK;
44
45 static boolean doDescriptions = true;
46 static boolean doNomenclature = true;
47 static boolean doMods = true;
48
49
50 public boolean runImport(){
51 boolean success = true;
52 //make destination
53 ICdmDataSource destination = cdmDestination;
54
55 TaxonXImportConfigurator taxonXImportConfigurator = TaxonXImportConfigurator.NewInstance("", destination);
56 // invoke import
57 CdmDefaultImport<IImportConfigurator> cdmImport = new CdmDefaultImport<IImportConfigurator>();
58
59 taxonXImportConfigurator.setDoFacts(doDescriptions);
60 taxonXImportConfigurator.setDoTypes(doNomenclature);
61 taxonXImportConfigurator.setDoMods(doMods);
62
63 taxonXImportConfigurator.setCheck(check);
64 taxonXImportConfigurator.setDbSchemaValidation(hbm2dll);
65
66 cdmImport.startController(taxonXImportConfigurator, destination);
67
68 //new Test().invoke(tcsImportConfigurator);
69 if (source.isDirectory()){
70 makeDirectory(cdmImport, taxonXImportConfigurator, source);
71 }else{
72 success &= importFile(cdmImport, taxonXImportConfigurator, source);
73 }
74 return success;
75 }
76
77 private boolean makeDirectory(CdmDefaultImport<IImportConfigurator> cdmImport, TaxonXImportConfigurator taxonXImportConfigurator, File source){
78 boolean success = true;
79 int count = 0;
80 for (File file : source.listFiles() ){
81 if (file.isFile()){
82 doCount(count++, 300, "Files");
83 success &= importFile(cdmImport, taxonXImportConfigurator, file);
84 }else{
85 if (! file.getName().startsWith(".")){
86 makeDirectory(cdmImport, taxonXImportConfigurator, file);
87 }
88 }
89 }
90 return success;
91 }
92
93 private boolean importFile(CdmDefaultImport<IImportConfigurator> cdmImport,
94 TaxonXImportConfigurator config, File file){
95 boolean success = true;
96 try{
97 URL url = file.toURI().toURL();
98 config.setSource(url.toString());
99 String originalSourceId = file.getName();
100 originalSourceId =originalSourceId.replace(".xml", "");
101 logger.debug(originalSourceId);
102 config.setOriginalSourceId(originalSourceId);
103 TransactionStatus tx = cdmImport.getCdmAppController().startTransaction();
104 success &= cdmImport.invoke(config);
105 cdmImport.getCdmAppController().commitTransaction(tx);
106 return success;
107 } catch (MalformedURLException e) {
108 logger.warn(e);
109 return false;
110 }
111 }
112
113 protected void doCount(int count, int modCount, String pluralString){
114 if ((count % modCount ) == 0 && count!= 0 ){ logger.info(pluralString + " handled: " + (count));}
115 }
116
117 /**
118 * @param args
119 */
120 public static void main(String[] args) {
121 System.out.println("Start import from Source("+ source.toString() + ") ...");
122
123 PalmaeTaxonXImportActivator importer = new PalmaeTaxonXImportActivator();
124
125 importer.runImport();
126
127
128 System.out.println("End import from Source ("+ source.toString() + ")...");
129 }
130
131
132 }