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
.UUID
;
14 import org
.apache
.log4j
.Logger
;
16 import eu
.etaxonomy
.cdm
.api
.application
.CdmApplicationController
;
17 import eu
.etaxonomy
.cdm
.database
.DataSourceNotFoundException
;
18 import eu
.etaxonomy
.cdm
.database
.DbSchemaValidation
;
19 import eu
.etaxonomy
.cdm
.database
.ICdmDataSource
;
20 import eu
.etaxonomy
.cdm
.io
.common
.IImportConfigurator
.CHECK
;
21 import eu
.etaxonomy
.cdm
.io
.common
.IImportConfigurator
.DO_REFERENCES
;
22 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
23 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
24 import eu
.etaxonomy
.cdm
.model
.common
.init
.TermNotFoundException
;
25 import eu
.etaxonomy
.cdm
.model
.description
.Feature
;
26 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalCode
;
27 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceBase
;
34 public abstract class ImportConfiguratorBase
/*implements IImportConfigurator*/ {
35 private static final Logger logger
= Logger
.getLogger(ImportConfiguratorBase
.class);
38 private boolean deleteAll
= false;
40 private boolean doAuthors
= true;
42 private DO_REFERENCES doReferences
= DO_REFERENCES
.ALL
;
45 private CHECK check
= CHECK
.CHECK_AND_IMPORT
;
49 private boolean doTaxonNames
= true;
50 private boolean doRelNames
= true;
51 private boolean doNameStatus
= true;
52 private boolean doTypes
= true;
53 private boolean doNameFacts
= true;
56 private boolean doTaxa
= true;
57 private boolean doRelTaxa
= true;
58 private boolean doFacts
= true;
61 private boolean doOccurrence
= true;
64 private NomenclaturalCode nomenclaturalCode
= null;
67 protected IIO authorIO
= null;
68 protected IIO referenceIO
= null;
69 protected IIO taxonNameIO
= null;
70 protected IIO nameStatusIO
= null;
71 protected IIO nameRelationIO
= null;
72 protected IIO taxonIO
= null;
73 protected IIO taxonRelationIO
= null;
74 protected IIO typeIO
= null;
75 protected IIO descriptionIO
= null;
76 protected IIO occurrenceIO
= null;
77 protected IIO taxonNameRelationIO
= null;
78 protected IIO nameFactsIO
= null;
80 protected ICdmIO
<IImportConfigurator
>[] iCdmIoArray
;
82 private MapWrapper
<Feature
> featureMap
= new MapWrapper
<Feature
>(null);
84 //uuid of concept reference
85 private UUID secUuid
= UUID
.randomUUID();
86 private int sourceSecId
= -1;
88 private Object source
;
89 protected ReferenceBase sourceReference
;
90 private ICdmDataSource destination
;
91 private Person commentator
= Person
.NewTitledInstance("automatic BerlinModel2CDM importer");
93 private Language factLanguage
= Language
.ENGLISH();
94 private DbSchemaValidation dbSchemaValidation
= DbSchemaValidation
.VALIDATE
;
95 private CdmApplicationController cdmApp
= null;
97 /* *****************CONSTRUCTOR *****************************/
99 public ImportConfiguratorBase(){
104 abstract protected void makeIOs();
107 * @param source the source to set
109 protected void setSource(Object source
) {
110 this.source
= source
;
115 * @param source the source to get
117 protected Object
getSource() {
123 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isValid()
125 public boolean isValid(){
126 boolean result
= true;
128 logger
.warn("Connection to BerlinModel could not be established");
131 if (destination
== null){
132 logger
.warn("Connection to Cdm could not be established");
141 /* ****************** GETTER/SETTER **************************/
143 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDeleteAll()
145 public boolean isDeleteAll() {
149 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDeleteAll(boolean)
151 public void setDeleteAll(boolean deleteAll
) {
152 this.deleteAll
= deleteAll
;
155 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoAuthors()
157 public boolean isDoAuthors() {
161 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoAuthors(boolean)
163 public void setDoAuthors(boolean doAuthors
) {
164 this.doAuthors
= doAuthors
;
168 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getDoReferences()
170 public DO_REFERENCES
getDoReferences() {
174 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoReferences(eu.etaxonomy.cdm.io.tcs.TcsImportConfigurator.DO_REFERENCES)
176 public void setDoReferences(DO_REFERENCES doReferences
) {
177 this.doReferences
= doReferences
;
181 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getCheck()
183 public CHECK
getCheck() {
187 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setCheck(eu.etaxonomy.cdm.io.tcs.TcsImportConfigurator.CHECK)
189 public void setCheck(CHECK check
) {
195 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoTaxonNames()
197 public boolean isDoTaxonNames() {
201 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoTaxonNames(boolean)
203 public void setDoTaxonNames(boolean doTaxonNames
) {
204 this.doTaxonNames
= doTaxonNames
;
207 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoRelNames()
209 public boolean isDoRelNames() {
213 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoRelNames(boolean)
215 public void setDoRelNames(boolean doRelNames
) {
216 this.doRelNames
= doRelNames
;
219 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoNameStatus()
221 public boolean isDoNameStatus() {
225 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoNameStatus(boolean)
227 public void setDoNameStatus(boolean doNameStatus
) {
228 this.doNameStatus
= doNameStatus
;
231 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoNameFacts()
233 public boolean isDoNameFacts() {
237 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoNameFacts(boolean)
239 public void setDoNameFacts(boolean doNameFacts
) {
240 this.doNameFacts
= doNameFacts
;
243 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoTypes()
245 public boolean isDoTypes() {
249 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoTypes(boolean)
251 public void setDoTypes(boolean doTypes
) {
252 this.doTypes
= doTypes
;
255 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoTaxa()
257 public boolean isDoTaxa() {
261 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoTaxa(boolean)
263 public void setDoTaxa(boolean doTaxa
) {
264 this.doTaxa
= doTaxa
;
267 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoRelTaxa()
269 public boolean isDoRelTaxa() {
273 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoRelTaxa(boolean)
275 public void setDoRelTaxa(boolean doRelTaxa
) {
276 this.doRelTaxa
= doRelTaxa
;
279 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoFacts()
281 public boolean isDoFacts() {
285 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoFacts(boolean)
287 public void setDoFacts(boolean doFacts
) {
288 this.doFacts
= doFacts
;
291 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoOccurrence()
293 public boolean isDoOccurrence() {
297 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoOccurrence(boolean)
299 public void setDoOccurrence(boolean doOccurrence
) {
300 this.doOccurrence
= doOccurrence
;
305 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getDestination()
307 public ICdmDataSource
getDestination() {
311 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDestination(eu.etaxonomy.cdm.database.ICdmDataSource)
313 public void setDestination(ICdmDataSource destination
) {
314 this.destination
= destination
;
318 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getDbSchemaValidation()
320 public DbSchemaValidation
getDbSchemaValidation() {
321 return dbSchemaValidation
;
324 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDbSchemaValidation(eu.etaxonomy.cdm.database.DbSchemaValidation)
326 public void setDbSchemaValidation(DbSchemaValidation dbSchemaValidation
) {
327 this.dbSchemaValidation
= dbSchemaValidation
;
331 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getSourceReference()
333 public abstract ReferenceBase
getSourceReference();
335 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setSourceReference(eu.etaxonomy.cdm.model.reference.ReferenceBase)
337 public void setSourceReference(ReferenceBase sourceReference
) {
338 this.sourceReference
= sourceReference
;
341 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getSourceReferenceTitle()
343 public String
getSourceReferenceTitle() {
344 return getSourceReference().getTitleCache();
347 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setSourceReferenceTitle(java.lang.String)
349 public void setSourceReferenceTitle(String sourceReferenceTitle
) {
350 getSourceReference().setTitleCache(sourceReferenceTitle
);
355 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getCommentator()
357 public Person
getCommentator() {
362 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setCommentator(eu.etaxonomy.cdm.model.agent.Person)
364 public void setCommentator(Person commentator
) {
365 this.commentator
= commentator
;
370 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getFactLanguage()
372 public Language
getFactLanguage() {
378 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setFactLanguage(eu.etaxonomy.cdm.model.common.Language)
380 public void setFactLanguage(Language factLanguage
) {
381 this.factLanguage
= factLanguage
;
386 * @return the nomenclaturalCode
388 public NomenclaturalCode
getNomenclaturalCode() {
389 return nomenclaturalCode
;
394 * @param nomenclaturalCode the nomenclaturalCode to set
396 public void setNomenclaturalCode(NomenclaturalCode nomenclaturalCode
) {
397 this.nomenclaturalCode
= nomenclaturalCode
;
402 * @return the secUuid
404 public UUID
getSecUuid() {
410 * @param secUuid the secUuid to set
412 public void setSecUuid(UUID secUuid
) {
413 this.secUuid
= secUuid
;
417 * @return the sourceSecId
419 public int getSourceSecId() {
424 * @param sourceSecId the sourceSecId to set
426 public void setSourceSecId(int sourceSecId
) {
427 this.sourceSecId
= sourceSecId
;
432 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getAuthorIO()
434 public IIO
getAuthorIO() {
435 return this.authorIO
;
440 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getDescriptionIO()
442 public IIO
getDescriptionIO() {
443 return descriptionIO
;
448 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getNameFactsIO()
450 public IIO
getNameFactsIO() {
451 return this.nameFactsIO
;
456 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getNameStatusIO()
458 public IIO
getNameStatusIO() {
459 return this.nameStatusIO
;
464 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getOccurrenceIO()
466 public IIO
getOccurrenceIO() {
467 return this.occurrenceIO
;
472 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getReferenceIO()
474 public IIO
getReferenceIO() {
475 return this.referenceIO
;
480 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getTaxonIO()
482 public IIO
getTaxonIO() {
488 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getTaxonNameIO()
490 public IIO
getTaxonNameIO() {
491 return this.taxonNameIO
;
496 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getTaxonNameRelationIO()
498 public IIO
getTaxonNameRelationIO() {
499 return this.taxonNameRelationIO
;
504 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getTaxonRelationIO()
506 public IIO
getTaxonRelationIO() {
507 return this.getTaxonRelationIO();
512 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getTypeIO()
514 public IIO
getTypeIO() {
519 * @return the iioArray
521 public ICdmIO
<IImportConfigurator
>[] getICdmIo() {
526 * @return the featureMap
528 public MapWrapper
<Feature
> getFeatureMap() {
533 * @param featureMap the featureMap to set
535 public void setFeatureMap(MapWrapper
<Feature
> featureMap
) {
536 this.featureMap
= featureMap
;
541 * Returns a <code>CdmApplicationController</code> created by the values of this configuration.
542 * If a controller was already created before the last created controller is returned.
545 public CdmApplicationController
getCdmAppController(){
546 return getCdmAppController(false);
550 * Returns a new instance of <code>CdmApplicationController</code> created by the values of this configuration.
553 public CdmApplicationController
getNewCdmAppController(){
554 return getCdmAppController(true);
558 * Returns a <code>CdmApplicationController</code> created by the values of this configuration.
559 * If create new is true always a new controller is returned, else the last created controller is returned. If no controller has
560 * been created before a new controller is returned.
563 public CdmApplicationController
getCdmAppController(boolean createNew
){
564 if (cdmApp
== null || createNew
== true){
566 cdmApp
= CdmApplicationController
.NewInstance(this.getDestination(), this.getDbSchemaValidation());
567 } catch (DataSourceNotFoundException e
) {
568 logger
.error("could not connect to destination database");
570 }catch (TermNotFoundException e
) {
571 logger
.error("could not find needed term in destination datasource");