(no commit message)
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / common / ImportConfiguratorBase.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.io.common;
11
12 import java.util.UUID;
13
14 import org.apache.log4j.Logger;
15
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;
28
29 /**
30 * @author a.mueller
31 * @created 20.06.2008
32 * @version 1.0
33 */
34 public abstract class ImportConfiguratorBase /*implements IImportConfigurator*/ {
35 private static final Logger logger = Logger.getLogger(ImportConfiguratorBase.class);
36
37 //TODO
38 private boolean deleteAll = false;
39
40 private boolean doAuthors = true;
41 //references
42 private DO_REFERENCES doReferences = DO_REFERENCES.ALL;
43
44 //check
45 private CHECK check = CHECK.CHECK_AND_IMPORT;
46
47
48 //names
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;
54
55 //taxa
56 private boolean doTaxa = true;
57 private boolean doRelTaxa = true;
58 private boolean doFacts = true;
59
60 //occurrence
61 private boolean doOccurrence = true;
62
63 //Nomenclatural Code
64 private NomenclaturalCode nomenclaturalCode = null;
65
66 //IOs
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;
79
80 protected ICdmIO<IImportConfigurator>[] iCdmIoArray;
81
82 private MapWrapper<Feature> featureMap = new MapWrapper<Feature>(null);
83
84 //uuid of concept reference
85 private UUID secUuid = UUID.randomUUID();
86 private int sourceSecId = -1;
87
88 private Object source;
89 protected ReferenceBase sourceReference;
90 private ICdmDataSource destination;
91 private Person commentator = Person.NewTitledInstance("automatic BerlinModel2CDM importer");
92
93 private Language factLanguage = Language.ENGLISH();
94 private DbSchemaValidation dbSchemaValidation = DbSchemaValidation.VALIDATE;
95 private CdmApplicationController cdmApp = null;
96
97 /* *****************CONSTRUCTOR *****************************/
98
99 public ImportConfiguratorBase(){
100 super();
101 makeIOs();
102 }
103
104 abstract protected void makeIOs();
105
106 /**
107 * @param source the source to set
108 */
109 protected void setSource(Object source) {
110 this.source = source;
111 }
112
113
114 /**
115 * @param source the source to get
116 */
117 protected Object getSource() {
118 return source;
119 }
120
121
122 /* (non-Javadoc)
123 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isValid()
124 */
125 public boolean isValid(){
126 boolean result = true;
127 if (source == null){
128 logger.warn("Connection to BerlinModel could not be established");
129 result = false;
130 }
131 if (destination == null){
132 logger.warn("Connection to Cdm could not be established");
133 result = false;
134 }
135
136 return result;
137 }
138
139
140
141 /* ****************** GETTER/SETTER **************************/
142 /* (non-Javadoc)
143 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDeleteAll()
144 */
145 public boolean isDeleteAll() {
146 return deleteAll;
147 }
148 /* (non-Javadoc)
149 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDeleteAll(boolean)
150 */
151 public void setDeleteAll(boolean deleteAll) {
152 this.deleteAll = deleteAll;
153 }
154 /* (non-Javadoc)
155 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoAuthors()
156 */
157 public boolean isDoAuthors() {
158 return doAuthors;
159 }
160 /* (non-Javadoc)
161 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoAuthors(boolean)
162 */
163 public void setDoAuthors(boolean doAuthors) {
164 this.doAuthors = doAuthors;
165 }
166
167 /* (non-Javadoc)
168 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getDoReferences()
169 */
170 public DO_REFERENCES getDoReferences() {
171 return doReferences;
172 }
173 /* (non-Javadoc)
174 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoReferences(eu.etaxonomy.cdm.io.tcs.TcsImportConfigurator.DO_REFERENCES)
175 */
176 public void setDoReferences(DO_REFERENCES doReferences) {
177 this.doReferences = doReferences;
178 }
179
180 /* (non-Javadoc)
181 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getCheck()
182 */
183 public CHECK getCheck() {
184 return this.check;
185 }
186 /* (non-Javadoc)
187 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setCheck(eu.etaxonomy.cdm.io.tcs.TcsImportConfigurator.CHECK)
188 */
189 public void setCheck(CHECK check) {
190 this.check = check;
191 }
192
193
194 /* (non-Javadoc)
195 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoTaxonNames()
196 */
197 public boolean isDoTaxonNames() {
198 return doTaxonNames;
199 }
200 /* (non-Javadoc)
201 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoTaxonNames(boolean)
202 */
203 public void setDoTaxonNames(boolean doTaxonNames) {
204 this.doTaxonNames = doTaxonNames;
205 }
206 /* (non-Javadoc)
207 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoRelNames()
208 */
209 public boolean isDoRelNames() {
210 return doRelNames;
211 }
212 /* (non-Javadoc)
213 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoRelNames(boolean)
214 */
215 public void setDoRelNames(boolean doRelNames) {
216 this.doRelNames = doRelNames;
217 }
218 /* (non-Javadoc)
219 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoNameStatus()
220 */
221 public boolean isDoNameStatus() {
222 return doNameStatus;
223 }
224 /* (non-Javadoc)
225 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoNameStatus(boolean)
226 */
227 public void setDoNameStatus(boolean doNameStatus) {
228 this.doNameStatus = doNameStatus;
229 }
230 /* (non-Javadoc)
231 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoNameFacts()
232 */
233 public boolean isDoNameFacts() {
234 return doNameFacts;
235 }
236 /* (non-Javadoc)
237 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoNameFacts(boolean)
238 */
239 public void setDoNameFacts(boolean doNameFacts) {
240 this.doNameFacts = doNameFacts;
241 }
242 /* (non-Javadoc)
243 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoTypes()
244 */
245 public boolean isDoTypes() {
246 return doTypes;
247 }
248 /* (non-Javadoc)
249 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoTypes(boolean)
250 */
251 public void setDoTypes(boolean doTypes) {
252 this.doTypes = doTypes;
253 }
254 /* (non-Javadoc)
255 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoTaxa()
256 */
257 public boolean isDoTaxa() {
258 return doTaxa;
259 }
260 /* (non-Javadoc)
261 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoTaxa(boolean)
262 */
263 public void setDoTaxa(boolean doTaxa) {
264 this.doTaxa = doTaxa;
265 }
266 /* (non-Javadoc)
267 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoRelTaxa()
268 */
269 public boolean isDoRelTaxa() {
270 return doRelTaxa;
271 }
272 /* (non-Javadoc)
273 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoRelTaxa(boolean)
274 */
275 public void setDoRelTaxa(boolean doRelTaxa) {
276 this.doRelTaxa = doRelTaxa;
277 }
278 /* (non-Javadoc)
279 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoFacts()
280 */
281 public boolean isDoFacts() {
282 return doFacts;
283 }
284 /* (non-Javadoc)
285 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoFacts(boolean)
286 */
287 public void setDoFacts(boolean doFacts) {
288 this.doFacts = doFacts;
289 }
290 /* (non-Javadoc)
291 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#isDoOccurrence()
292 */
293 public boolean isDoOccurrence() {
294 return doOccurrence;
295 }
296 /* (non-Javadoc)
297 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDoOccurrence(boolean)
298 */
299 public void setDoOccurrence(boolean doOccurrence) {
300 this.doOccurrence = doOccurrence;
301 }
302
303
304 /* (non-Javadoc)
305 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getDestination()
306 */
307 public ICdmDataSource getDestination() {
308 return destination;
309 }
310 /* (non-Javadoc)
311 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDestination(eu.etaxonomy.cdm.database.ICdmDataSource)
312 */
313 public void setDestination(ICdmDataSource destination) {
314 this.destination = destination;
315 }
316
317 /* (non-Javadoc)
318 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getDbSchemaValidation()
319 */
320 public DbSchemaValidation getDbSchemaValidation() {
321 return dbSchemaValidation;
322 }
323 /* (non-Javadoc)
324 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setDbSchemaValidation(eu.etaxonomy.cdm.database.DbSchemaValidation)
325 */
326 public void setDbSchemaValidation(DbSchemaValidation dbSchemaValidation) {
327 this.dbSchemaValidation = dbSchemaValidation;
328 }
329
330 /* (non-Javadoc)
331 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getSourceReference()
332 */
333 public abstract ReferenceBase getSourceReference();
334 /* (non-Javadoc)
335 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setSourceReference(eu.etaxonomy.cdm.model.reference.ReferenceBase)
336 */
337 public void setSourceReference(ReferenceBase sourceReference) {
338 this.sourceReference = sourceReference;
339 }
340 /* (non-Javadoc)
341 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getSourceReferenceTitle()
342 */
343 public String getSourceReferenceTitle() {
344 return getSourceReference().getTitleCache();
345 }
346 /* (non-Javadoc)
347 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setSourceReferenceTitle(java.lang.String)
348 */
349 public void setSourceReferenceTitle(String sourceReferenceTitle) {
350 getSourceReference().setTitleCache(sourceReferenceTitle);
351 }
352
353
354 /* (non-Javadoc)
355 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getCommentator()
356 */
357 public Person getCommentator() {
358 return commentator;
359 }
360
361 /* (non-Javadoc)
362 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setCommentator(eu.etaxonomy.cdm.model.agent.Person)
363 */
364 public void setCommentator(Person commentator) {
365 this.commentator = commentator;
366 }
367
368
369 /* (non-Javadoc)
370 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#getFactLanguage()
371 */
372 public Language getFactLanguage() {
373 return factLanguage;
374 }
375
376
377 /* (non-Javadoc)
378 * @see eu.etaxonomy.cdm.io.tcs.IImportConfigurator#setFactLanguage(eu.etaxonomy.cdm.model.common.Language)
379 */
380 public void setFactLanguage(Language factLanguage) {
381 this.factLanguage = factLanguage;
382 }
383
384
385 /**
386 * @return the nomenclaturalCode
387 */
388 public NomenclaturalCode getNomenclaturalCode() {
389 return nomenclaturalCode;
390 }
391
392
393 /**
394 * @param nomenclaturalCode the nomenclaturalCode to set
395 */
396 public void setNomenclaturalCode(NomenclaturalCode nomenclaturalCode) {
397 this.nomenclaturalCode = nomenclaturalCode;
398 }
399
400
401 /**
402 * @return the secUuid
403 */
404 public UUID getSecUuid() {
405 return secUuid;
406 }
407
408
409 /**
410 * @param secUuid the secUuid to set
411 */
412 public void setSecUuid(UUID secUuid) {
413 this.secUuid = secUuid;
414 }
415
416 /**
417 * @return the sourceSecId
418 */
419 public int getSourceSecId() {
420 return sourceSecId;
421 }
422
423 /**
424 * @param sourceSecId the sourceSecId to set
425 */
426 public void setSourceSecId(int sourceSecId) {
427 this.sourceSecId = sourceSecId;
428 }
429
430
431 /* (non-Javadoc)
432 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getAuthorIO()
433 */
434 public IIO getAuthorIO() {
435 return this.authorIO;
436 }
437
438
439 /* (non-Javadoc)
440 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getDescriptionIO()
441 */
442 public IIO getDescriptionIO() {
443 return descriptionIO;
444 }
445
446
447 /* (non-Javadoc)
448 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getNameFactsIO()
449 */
450 public IIO getNameFactsIO() {
451 return this.nameFactsIO;
452 }
453
454
455 /* (non-Javadoc)
456 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getNameStatusIO()
457 */
458 public IIO getNameStatusIO() {
459 return this.nameStatusIO;
460 }
461
462
463 /* (non-Javadoc)
464 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getOccurrenceIO()
465 */
466 public IIO getOccurrenceIO() {
467 return this.occurrenceIO;
468 }
469
470
471 /* (non-Javadoc)
472 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getReferenceIO()
473 */
474 public IIO getReferenceIO() {
475 return this.referenceIO;
476 }
477
478
479 /* (non-Javadoc)
480 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getTaxonIO()
481 */
482 public IIO getTaxonIO() {
483 return this.taxonIO;
484 }
485
486
487 /* (non-Javadoc)
488 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getTaxonNameIO()
489 */
490 public IIO getTaxonNameIO() {
491 return this.taxonNameIO;
492 }
493
494
495 /* (non-Javadoc)
496 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getTaxonNameRelationIO()
497 */
498 public IIO getTaxonNameRelationIO() {
499 return this.taxonNameRelationIO;
500 }
501
502
503 /* (non-Javadoc)
504 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getTaxonRelationIO()
505 */
506 public IIO getTaxonRelationIO() {
507 return this.getTaxonRelationIO();
508 }
509
510
511 /* (non-Javadoc)
512 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getTypeIO()
513 */
514 public IIO getTypeIO() {
515 return this.typeIO;
516 }
517
518 /**
519 * @return the iioArray
520 */
521 public ICdmIO<IImportConfigurator>[] getICdmIo() {
522 return iCdmIoArray;
523 }
524
525 /**
526 * @return the featureMap
527 */
528 public MapWrapper<Feature> getFeatureMap() {
529 return featureMap;
530 }
531
532 /**
533 * @param featureMap the featureMap to set
534 */
535 public void setFeatureMap(MapWrapper<Feature> featureMap) {
536 this.featureMap = featureMap;
537 }
538
539
540 /**
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.
543 * @return
544 */
545 public CdmApplicationController getCdmAppController(){
546 return getCdmAppController(false);
547 }
548
549 /**
550 * Returns a new instance of <code>CdmApplicationController</code> created by the values of this configuration.
551 * @return
552 */
553 public CdmApplicationController getNewCdmAppController(){
554 return getCdmAppController(true);
555 }
556
557 /**
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.
561 * @return
562 */
563 public CdmApplicationController getCdmAppController(boolean createNew){
564 if (cdmApp == null || createNew == true){
565 try {
566 cdmApp = CdmApplicationController.NewInstance(this.getDestination(), this.getDbSchemaValidation());
567 } catch (DataSourceNotFoundException e) {
568 logger.error("could not connect to destination database");
569 return null;
570 }catch (TermNotFoundException e) {
571 logger.error("could not find needed term in destination datasource");
572 return null;
573 }
574 }
575 return cdmApp;
576 }
577
578 }