2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.cdm
.app
.wp6
.palmae
;
13 import java
.net
.MalformedURLException
;
14 import java
.net
.URISyntaxException
;
17 import org
.apache
.log4j
.Logger
;
18 import org
.springframework
.transaction
.TransactionStatus
;
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
;
33 public class PalmaeTaxonXImportActivator
{
34 private static final Logger logger
= Logger
.getLogger(PalmaeTaxonXImportActivator
.class);
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();
44 static CHECK check
= CHECK
.IMPORT_WITHOUT_CHECK
;
46 static boolean doDescriptions
= true;
47 static boolean doNomenclature
= true;
48 static boolean doMods
= true;
51 public boolean runImport(){
52 boolean success
= true;
54 ICdmDataSource destination
= cdmDestination
;
56 TaxonXImportConfigurator taxonXImportConfigurator
= TaxonXImportConfigurator
.NewInstance(null, destination
);
58 CdmDefaultImport
<IImportConfigurator
> cdmImport
= new CdmDefaultImport
<IImportConfigurator
>();
60 taxonXImportConfigurator
.setDoFacts(doDescriptions
);
61 taxonXImportConfigurator
.setDoTypes(doNomenclature
);
62 taxonXImportConfigurator
.setDoMods(doMods
);
64 taxonXImportConfigurator
.setCheck(check
);
65 taxonXImportConfigurator
.setDbSchemaValidation(hbm2dll
);
67 cdmImport
.startController(taxonXImportConfigurator
, destination
);
69 //new Test().invoke(tcsImportConfigurator);
70 if (source
.isDirectory()){
71 makeDirectory(cdmImport
, taxonXImportConfigurator
, source
);
74 success
&= importFile(cdmImport
, taxonXImportConfigurator
, source
);
75 } catch (URISyntaxException e
) {
83 private boolean makeDirectory(CdmDefaultImport
<IImportConfigurator
> cdmImport
, TaxonXImportConfigurator taxonXImportConfigurator
, File source
){
84 boolean success
= true;
86 for (File file
: source
.listFiles() ){
88 doCount(count
++, 300, "Files");
90 success
&= importFile(cdmImport
, taxonXImportConfigurator
, file
);
91 } catch (URISyntaxException e
) {
96 if (! file
.getName().startsWith(".")){
97 makeDirectory(cdmImport
, taxonXImportConfigurator
, file
);
104 private boolean importFile(CdmDefaultImport
<IImportConfigurator
> cdmImport
,
105 TaxonXImportConfigurator config
, File file
) throws URISyntaxException
{
106 boolean success
= true;
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
);
118 } catch (MalformedURLException e
) {
124 protected void doCount(int count
, int modCount
, String pluralString
){
125 if ((count
% modCount
) == 0 && count
!= 0 ){ logger
.info(pluralString
+ " handled: " + (count
));}
131 public static void main(String
[] args
) {
132 System
.out
.println("Start import from Source("+ source
.toString() + ") ...");
134 PalmaeTaxonXImportActivator importer
= new PalmaeTaxonXImportActivator();
136 importer
.runImport();
139 System
.out
.println("End import from Source ("+ source
.toString() + ")...");