Project

General

Profile

Download (2.63 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
package eu.etaxonomy.cdm.io.common;
7

    
8
import org.apache.log4j.Logger;
9
import org.springframework.core.io.ClassPathResource;
10

    
11
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
12
import eu.etaxonomy.cdm.api.application.ICdmRepository;
13
import eu.etaxonomy.cdm.database.DbSchemaValidation;
14
import eu.etaxonomy.cdm.database.ICdmDataSource;
15

    
16
/**
17
 * This is an exporter that invokes the application aware defaultExport when
18
 * invoked itself
19
 *
20
 * @author a.babadshanjan
21
 * @since 17.11.2008
22
 */
23
public class CdmDefaultIOBase<T extends IIoConfigurator> {
24

    
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
	protected ICdmRepository cdmApp = null;
31

    
32
	/**
33
	 * Creates a new {@link CdmApplicationController} if it does not exist yet
34
	 * or if createNew is <ocde>true</code>
35
	 */
36
	protected boolean startApplicationController(IIoConfigurator config,
37
			ICdmDataSource cdmSource, boolean omitTermLoading, boolean createNew) {
38
		if (config.getCdmAppController() != null) {
39
			this.cdmApp = config.getCdmAppController();
40
		}
41
		DbSchemaValidation schemaValidation = config.getDbSchemaValidation();
42
		if (this instanceof CdmDefaultExport) {
43
			if (schemaValidation.equals(DbSchemaValidation.CREATE)
44
					|| schemaValidation.equals(DbSchemaValidation.CREATE_DROP)) {
45
				throw new IllegalArgumentException(
46
						"The export may not run with DbSchemaValidation.CREATE or DbSchemaValidation.CREATE_DROP as this value deletes the source database");
47
			}
48
		}
49

    
50
		if (createNew == true || cdmApp == null) {
51
			ClassPathResource applicationContextResource = new ClassPathResource(DEFAULT_IO_APPLICATION_CONTEXT_RESOURCE);
52
			cdmApp = CdmApplicationController.NewInstance(applicationContextResource, cdmSource, schemaValidation,
53
			        config.getHibernateConfig(), omitTermLoading, config.getProgressMonitor());
54
			if (cdmApp != null) {
55
				return true;
56
			} else {
57
				return false;
58
			}
59
		}
60
		return true;
61

    
62
	}
63

    
64
	/**
65
	 * Returns the {@link CdmApplicationController}. This is null if invoke()
66
	 * has not been called yet and if the controller has not been set manually
67
	 * by setCdmApp() yet.
68
	 *
69
	 * @return the cdmApp
70
	 */
71
	public ICdmRepository getCdmAppController() {
72
		return this.cdmApp;
73
	}
74
	/**
75
	 * @see #getCdmAppController()
76
	 */
77
	public void setCdmAppController(ICdmRepository cdmApp) {
78
		this.cdmApp = cdmApp;
79
	}
80
}
(4-4/65)