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
.common
.ImportResult
;
27 import eu
.etaxonomy
.cdm
.io
.taxonx
.TaxonXImportConfigurator
;
34 public class PalmaeTaxonXImportActivator
{
35 private static final Logger logger
= Logger
.getLogger(PalmaeTaxonXImportActivator
.class);
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();
45 static CHECK check
= CHECK
.IMPORT_WITHOUT_CHECK
;
47 static boolean doDescriptions
= true;
48 static boolean doNomenclature
= true;
49 static boolean doMods
= true;
52 public ImportResult
runImport(){
53 ImportResult success
= new ImportResult();
55 ICdmDataSource destination
= cdmDestination
;
57 TaxonXImportConfigurator taxonXImportConfigurator
= TaxonXImportConfigurator
.NewInstance(null, destination
);
59 CdmDefaultImport
<IImportConfigurator
> cdmImport
= new CdmDefaultImport
<IImportConfigurator
>();
61 taxonXImportConfigurator
.setDoFacts(doDescriptions
);
62 taxonXImportConfigurator
.setDoTypes(doNomenclature
);
63 taxonXImportConfigurator
.setDoMods(doMods
);
65 taxonXImportConfigurator
.setCheck(check
);
66 taxonXImportConfigurator
.setDbSchemaValidation(hbm2dll
);
68 cdmImport
.startController(taxonXImportConfigurator
, destination
);
70 //new Test().invoke(tcsImportConfigurator);
71 if (source
.isDirectory()){
72 makeDirectory(cdmImport
, taxonXImportConfigurator
, source
);
75 success
= importFile(cdmImport
, taxonXImportConfigurator
, source
);
77 } catch (URISyntaxException e
) {
78 success
.addException(e
);
85 private ImportResult
makeDirectory(CdmDefaultImport
<IImportConfigurator
> cdmImport
, TaxonXImportConfigurator taxonXImportConfigurator
, File source
){
86 ImportResult success
= new ImportResult();
88 for (File file
: source
.listFiles() ){
90 doCount(count
++, 300, "Files");
92 success
= importFile(cdmImport
, taxonXImportConfigurator
, file
);
93 } catch (URISyntaxException e
) {
94 success
= new ImportResult();
95 success
.addException(e
);
99 if (! file
.getName().startsWith(".")){
100 makeDirectory(cdmImport
, taxonXImportConfigurator
, file
);
107 private ImportResult
importFile(CdmDefaultImport
<IImportConfigurator
> cdmImport
,
108 TaxonXImportConfigurator config
, File file
) throws URISyntaxException
{
109 ImportResult success
;
111 URL url
= file
.toURI().toURL();
112 config
.setSource(url
.toURI());
113 String originalSourceId
= file
.getName();
114 originalSourceId
=originalSourceId
.replace(".xml", "");
115 logger
.debug(originalSourceId
);
116 config
.setOriginalSourceId(originalSourceId
);
117 TransactionStatus tx
= cdmImport
.getCdmAppController().startTransaction();
118 success
= cdmImport
.invoke(config
);
119 cdmImport
.getCdmAppController().commitTransaction(tx
);
121 } catch (MalformedURLException e
) {
123 success
= new ImportResult();
124 success
.addException(e
);
129 protected void doCount(int count
, int modCount
, String pluralString
){
130 if ((count
% modCount
) == 0 && count
!= 0 ){ logger
.info(pluralString
+ " handled: " + (count
));}
136 public static void main(String
[] args
) {
137 System
.out
.println("Start import from Source("+ source
.toString() + ") ...");
139 PalmaeTaxonXImportActivator importer
= new PalmaeTaxonXImportActivator();
141 importer
.runImport();
144 System
.out
.println("End import from Source ("+ source
.toString() + ")...");