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