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
.io
.common
;
12 import java
.util
.HashMap
;
15 import org
.apache
.log4j
.Logger
;
17 import eu
.etaxonomy
.cdm
.api
.application
.CdmApplicationController
;
18 import eu
.etaxonomy
.cdm
.api
.service
.IService
;
19 import eu
.etaxonomy
.cdm
.database
.DataSourceNotFoundException
;
20 import eu
.etaxonomy
.cdm
.model
.agent
.TeamOrPersonBase
;
21 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
22 import eu
.etaxonomy
.cdm
.model
.common
.init
.TermNotFoundException
;
23 import eu
.etaxonomy
.cdm
.model
.name
.TaxonNameBase
;
24 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceBase
;
25 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonBase
;
33 public class CdmDefaultImport
<T
extends IImportConfigurator
> implements ICdmImport
<T
> {
34 private static final Logger logger
= Logger
.getLogger(CdmDefaultImport
.class);
37 final boolean OBLIGATORY
= true;
38 final boolean FACULTATIVE
= false;
39 final int modCount
= 1000;
41 IService service
= null;
43 Map
<String
, MapWrapper
<?
extends CdmBase
>> stores
= new HashMap
<String
, MapWrapper
<?
extends CdmBase
>>();
45 public CdmDefaultImport(){
46 stores
.put(ICdmIO
.AUTHOR_STORE
, new MapWrapper
<TeamOrPersonBase
>(service
));
47 stores
.put(ICdmIO
.REFERENCE_STORE
, new MapWrapper
<ReferenceBase
>(service
));
48 stores
.put(ICdmIO
.NOMREF_STORE
, new MapWrapper
<ReferenceBase
>(service
));
49 stores
.put(ICdmIO
.NOMREF_DETAIL_STORE
, new MapWrapper
<ReferenceBase
>(service
));
50 stores
.put(ICdmIO
.REF_DETAIL_STORE
, new MapWrapper
<ReferenceBase
>(service
));
51 stores
.put(ICdmIO
.TAXONNAME_STORE
, new MapWrapper
<TaxonNameBase
>(service
));
52 stores
.put(ICdmIO
.TAXON_STORE
, new MapWrapper
<TaxonBase
>(service
));
55 public boolean invoke(IImportConfigurator config
){
56 if (config
.getCheck().equals(IImportConfigurator
.CHECK
.CHECK_ONLY
)){
57 return doCheck(config
);
58 }else if (config
.getCheck().equals(IImportConfigurator
.CHECK
.CHECK_AND_IMPORT
)){
60 return doImport(config
);
61 }else if (config
.getCheck().equals(IImportConfigurator
.CHECK
.IMPORT_WITHOUT_CHECK
)){
62 return doImport(config
);
64 logger
.error("Unknown CHECK type");
70 protected boolean doCheck(IImportConfigurator config
){
71 boolean result
= true;
72 System
.out
.println("Start checking Source ("+ config
.getSourceNameString() + ") ...");
76 logger
.warn("CdmImportConfiguration is null");
78 }else if (! config
.isValid()){
79 logger
.warn("CdmImportConfiguration is not valid");
83 //do check for each class
84 for (Class
<ICdmIO
> ioClass
: config
.getIoClassList()){
87 cdmIo
= ioClass
.newInstance();
88 result
&= cdmIo
.check(config
);
89 } catch (Exception e
) {
96 System
.out
.println("End checking Source ("+ config
.getSourceNameString() + ") for import to CDM");
105 protected boolean doImport(IImportConfigurator config
){
106 CdmApplicationController cdmApp
;
107 boolean result
= true;
109 logger
.warn("Configuration is null");
111 }else if (! config
.isValid()){
112 logger
.warn("Configuration is not valid");
115 cdmApp
= config
.getCdmAppController();
117 //cdmApp = CdmApplicationController.NewInstance(config.getDestination(), config.getDbSchemaValidation());
119 // } catch (DataSourceNotFoundException e) {
120 // logger.warn("could not connect to destination database");
122 // }catch (TermNotFoundException e) {
123 // logger.warn("could not find needed term in destination datasource");
128 ReferenceBase sourceReference
= config
.getSourceReference();
129 System
.out
.println("Start import from Source ("+ config
.getSourceNameString() + ") to Cdm (" + cdmApp
.getDatabaseService().getUrl() + ") ...");
131 //do invoke for each class
132 for (Class
<ICdmIO
> ioClass
: config
.getIoClassList()){
135 cdmIo
= ioClass
.newInstance();
136 result
&= cdmIo
.invoke(config
, stores
);
137 } catch (Exception e
) {
144 System
.out
.println("End import from Source ("+ config
.getSourceNameString() + ") to Cdm (" + cdmApp
.getDatabaseService().getUrl() + ") ...");