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