Project

General

Profile

Download (2.78 KB) Statistics
| Branch: | Tag: | Revision:
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.CdmApplicationDefaultController;
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 CdmApplicationDefaultController} 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 = CdmApplicationDefaultController.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 CdmApplicationDefaultController}. 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
}
(6-6/53)