Object change mapper for PESI and empty epithet bugfix and empty hybrid formula bugfix
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / common / CdmDefaultIOBase.java
1 /**
2 * Copyright (C) 2008 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 */
6
7 package eu.etaxonomy.cdm.io.common;
8
9 import org.apache.log4j.Logger;
10 import org.springframework.core.io.ClassPathResource;
11
12 import eu.etaxonomy.cdm.api.application.CdmApplicationController;
13 import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
14 import eu.etaxonomy.cdm.database.DbSchemaValidation;
15 import eu.etaxonomy.cdm.database.ICdmDataSource;
16
17 /**
18 * This is an exporter that invokes the application aware defaultExport when
19 * invoked itself
20 *
21 * @author a.babadshanjan
22 * @created 17.11.2008
23 */
24 public class CdmDefaultIOBase<T extends IIoConfigurator> {
25 @SuppressWarnings("unused")
26 private static final Logger logger = Logger.getLogger(CdmDefaultIOBase.class);
27
28 public static final String DEFAULT_IO_APPLICATION_CONTEXT_RESOURCE = "/eu/etaxonomy/cdm/defaultIoApplicationContext.xml";
29
30
31 protected ICdmApplicationConfiguration cdmApp = null;
32
33 /**
34 * Creates a new {@link CdmApplicationController} if it does not exist yet
35 * or if createNew is <ocde>true</code>
36 *
37 * @param config
38 * @param destination
39 * @param omitTermLoading
40 * @param createNew
41 * @return
42 */
43 protected boolean startApplicationController(IIoConfigurator config,
44 ICdmDataSource cdmSource, boolean omitTermLoading, boolean createNew) {
45 if (config.getCdmAppController() != null) {
46 this.cdmApp = config.getCdmAppController();
47 }
48 DbSchemaValidation schemaValidation = config.getDbSchemaValidation();
49 if (this instanceof CdmDefaultExport) {
50 if (schemaValidation.equals(DbSchemaValidation.CREATE)
51 || schemaValidation.equals(DbSchemaValidation.CREATE_DROP)) {
52 throw new IllegalArgumentException(
53 "The export may not run with DbSchemaValidation.CREATE or DbSchemaValidation.CREATE_DROP as this value deletes the source database");
54 }
55 }
56
57 if (createNew == true || cdmApp == null) {
58 ClassPathResource applicationContextResource = new ClassPathResource(DEFAULT_IO_APPLICATION_CONTEXT_RESOURCE);
59 cdmApp = CdmApplicationController.NewInstance(applicationContextResource, cdmSource,schemaValidation, omitTermLoading);
60 if (cdmApp != null) {
61 return true;
62 } else {
63 return false;
64 }
65 }
66 return true;
67
68 }
69
70 /**
71 * Returns the {@link CdmApplicationController}. This is null if invoke()
72 * has not been called yet and if the controller has not been set manually
73 * by setCdmApp() yet.
74 *
75 * @return the cdmApp
76 */
77 public ICdmApplicationConfiguration getCdmAppController() {
78 return this.cdmApp;
79 }
80
81 /**
82 * @param cdmApp
83 * the cdmApp to set
84 */
85 public void setCdmAppController(ICdmApplicationConfiguration cdmApp) {
86 this.cdmApp = cdmApp;
87 }
88
89 }