Merge branch 'release/5.45.0'
[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 package eu.etaxonomy.cdm.io.common;
7
8 import org.apache.logging.log4j.LogManager;
9 import org.apache.logging.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.ICdmApplication;
14 import eu.etaxonomy.cdm.database.DbSchemaValidation;
15 import eu.etaxonomy.cdm.database.ICdmDataSource;
16 import eu.etaxonomy.cdm.io.api.application.CdmIoApplicationController;
17
18 /**
19 * This is an exporter that invokes the application aware defaultExport when
20 * invoked itself.
21 *
22 * @author a.babadshanjan
23 * @since 17.11.2008
24 */
25 public class CdmDefaultIOBase<T extends IIoConfigurator> {
26
27 @SuppressWarnings("unused")
28 private static final Logger logger = LogManager.getLogger();
29
30 public static final String DEFAULT_IO_APPLICATION_CONTEXT_RESOURCE = CdmIoApplicationController.DEFAULT_APPLICATION_CONTEXT_RESOURCE;
31
32 protected ICdmApplication cdmApp = null;
33
34 /**
35 * Creates a new {@link CdmApplicationController} if it does not exist yet
36 * or if createNew is <ocde>true</code>
37 */
38 protected boolean startApplicationController(IIoConfigurator config,
39 ICdmDataSource cdmSource, boolean omitTermLoading, boolean createNew) {
40 if (config.getCdmAppController() != null) {
41 this.cdmApp = config.getCdmAppController();
42 }
43 DbSchemaValidation schemaValidation = config.getDbSchemaValidation();
44 if (this instanceof CdmDefaultExport) {
45 if (schemaValidation.equals(DbSchemaValidation.CREATE)
46 || schemaValidation.equals(DbSchemaValidation.CREATE_DROP)) {
47 throw new IllegalArgumentException(
48 "The export may not run with DbSchemaValidation.CREATE or DbSchemaValidation.CREATE_DROP as this value deletes the source database");
49 }
50 }
51
52 if (createNew == true || cdmApp == null) {
53 ClassPathResource applicationContextResource = new ClassPathResource(DEFAULT_IO_APPLICATION_CONTEXT_RESOURCE);
54 cdmApp = CdmApplicationController.NewInstance(applicationContextResource, cdmSource, schemaValidation,
55 config.getHibernateConfig(), omitTermLoading, config.getProgressMonitor());
56 if (cdmApp != null) {
57 return true;
58 } else {
59 return false;
60 }
61 }
62 return true;
63
64 }
65
66 /**
67 * Returns the {@link CdmApplicationController}. This is null if invoke()
68 * has not been called yet and if the controller has not been set manually
69 * by setCdmApp() yet.
70 *
71 * @return the cdmApp
72 */
73 public ICdmApplication getCdmAppController() {
74 return this.cdmApp;
75 }
76 /**
77 * @see #getCdmAppController()
78 */
79 public void setCdmAppController(ICdmApplication cdmApp) {
80 this.cdmApp = cdmApp;
81 }
82 }