Project

General

Profile

Download (4.02 KB) Statistics
| Branch: | Tag: | Revision:
1 5785e608 n.hoffmann
/**
2
* Copyright (C) 2007 EDIT
3 f78917b1 Patrick Plitzner
* European Distributed Institute of Taxonomy
4 5785e608 n.hoffmann
* http://www.e-taxonomy.eu
5 f78917b1 Patrick Plitzner
*
6 5785e608 n.hoffmann
* 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 f211dd28 n.hoffmann
package eu.etaxonomy.taxeditor.view.datasource;
11 5785e608 n.hoffmann
12
import java.util.HashMap;
13
import java.util.Map;
14
15 2e25ff01 Cherian Mathew
import eu.etaxonomy.cdm.config.CdmSourceException;
16
import eu.etaxonomy.cdm.config.ICdmSource;
17 27f5197f Cherian Mathew
import eu.etaxonomy.cdm.model.metadata.CdmMetaData;
18 6740eed5 Andreas Müller
import eu.etaxonomy.cdm.model.metadata.CdmMetaDataPropertyName;
19 41e2f693 Cherian Mathew
import eu.etaxonomy.taxeditor.model.MessagingUtils;
20 5785e608 n.hoffmann
21
/**
22 3be6ef3e n.hoffmann
 * <p>CdmMetaDataAwareDataSourceContainer class.</p>
23
 *
24 5785e608 n.hoffmann
 * @author n.hoffmann
25
 * @created Sep 22, 2010
26
 * @version 1.0
27
 */
28
public class CdmMetaDataAwareDataSourceContainer {
29 f78917b1 Patrick Plitzner
30
31
32 3be6ef3e n.hoffmann
	/** Constant <code>DEFAULT_ENTRY="-"</code> */
33 5785e608 n.hoffmann
	public static final String DEFAULT_ENTRY = "-";
34 f78917b1 Patrick Plitzner
35 2e25ff01 Cherian Mathew
	private ICdmSource cdmSource;
36 f78917b1 Patrick Plitzner
37 3eb913da n.hoffmann
	private boolean running;
38 f78917b1 Patrick Plitzner
39 6740eed5 Andreas Müller
	private Map<CdmMetaDataPropertyName, String> metaDataMap;
40 f78917b1 Patrick Plitzner
41 3be6ef3e n.hoffmann
	/**
42
	 * <p>Constructor for CdmMetaDataAwareDataSourceContainer.</p>
43
	 *
44
	 * @param dataSource a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
45 f211dd28 n.hoffmann
	 * @param view a {@link eu.etaxonomy.taxeditor.view.datasource.CdmDataSourceViewPart} object.
46 3be6ef3e n.hoffmann
	 */
47 2e25ff01 Cherian Mathew
	public CdmMetaDataAwareDataSourceContainer(ICdmSource cdmSource){
48
		this.cdmSource = cdmSource;
49 f78917b1 Patrick Plitzner
50 27b59ab1 n.hoffmann
		metaDataMap = getDefaultMetaDataMap();
51 f78917b1 Patrick Plitzner
52 5785e608 n.hoffmann
	}
53
54 2e25ff01 Cherian Mathew
//	/**
55
//	 * <p>Getter for the field <code>dataSource</code>.</p>
56
//	 *
57
//	 * @return the dataSource
58
//	 */
59
//	public ICdmDataSource getDataSource() {
60
//		return dataSource;
61
//	}
62 f78917b1 Patrick Plitzner
63 2e25ff01 Cherian Mathew
	public ICdmSource getCdmSource() {
64
	return cdmSource;
65
}
66 f78917b1 Patrick Plitzner
67 6fb20daf n.hoffmann
	public void getMetaDataFromDataSource(){
68
		try {
69 2e25ff01 Cherian Mathew
			running = cdmSource.checkConnection();
70 6fb20daf n.hoffmann
		} catch (Exception e) {
71
			running = false;
72 6740eed5 Andreas Müller
			for(CdmMetaDataPropertyName metaDataPropertyName : CdmMetaDataPropertyName.values()){
73 f78917b1 Patrick Plitzner
				metaDataMap.put(metaDataPropertyName, DEFAULT_ENTRY);
74 c0555cd6 l.morris
			}
75 6fb20daf n.hoffmann
		}
76 2e25ff01 Cherian Mathew
77 5785e608 n.hoffmann
		try {
78 3eb913da n.hoffmann
			if(isRunning()){
79 2e25ff01 Cherian Mathew
80
				//				try {
81 f78917b1 Patrick Plitzner
				metaDataMap = cdmSource.getMetaDataMap();
82 2e25ff01 Cherian Mathew
				cdmSource.closeOpenConnections();
83
				//				} catch (CdmSourceException e) {
84
				//					StoreUtil.warn(this.getClass(), "SQLException when trying to access: " + cdmSource.getName() + ". " + e.getMessage());
85 f78917b1 Patrick Plitzner
				//				}
86 5785e608 n.hoffmann
			}
87
		} catch (Exception e) {
88 f78917b1 Patrick Plitzner
            if(e instanceof CdmSourceException && e.getMessage().toLowerCase().contains("\"cdmmetadata\"")){
89
                MessagingUtils.error(this.getClass(), "Data source "+((CdmSourceException) e).getSourceName()+" does not have a CDMMETADATA table", null);
90
            }
91
            else{
92
                MessagingUtils.error(this.getClass(), e);
93
            }
94 5785e608 n.hoffmann
		}
95
	}
96 f78917b1 Patrick Plitzner
97 6740eed5 Andreas Müller
	private Map<CdmMetaDataPropertyName, String> getDefaultMetaDataMap(){
98
		Map<CdmMetaDataPropertyName, String> resultMap = new HashMap<>(CdmMetaDataPropertyName.values().length);
99 f78917b1 Patrick Plitzner
100 6740eed5 Andreas Müller
		for(CdmMetaDataPropertyName metaDataPropertyName : CdmMetaDataPropertyName.values()){
101 3eb913da n.hoffmann
			resultMap.put(metaDataPropertyName, null);
102 5785e608 n.hoffmann
		}
103 f78917b1 Patrick Plitzner
104 5785e608 n.hoffmann
		return resultMap;
105
	}
106
107
	/**
108 3be6ef3e n.hoffmann
	 * <p>Getter for the field <code>metaDataMap</code>.</p>
109
	 *
110 5785e608 n.hoffmann
	 * @return the metaDataMap
111
	 */
112 6740eed5 Andreas Müller
	public Map<CdmMetaDataPropertyName, String> getMetaDataMap() {
113 5785e608 n.hoffmann
		return metaDataMap;
114
	}
115 f78917b1 Patrick Plitzner
116 3be6ef3e n.hoffmann
	/**
117
	 * <p>isDataSourceCompatible</p>
118
	 *
119
	 * @return a boolean.
120
	 */
121 3eb913da n.hoffmann
	public boolean isDataSourceCompatible(){
122 6740eed5 Andreas Müller
		String version = metaDataMap.get(CdmMetaDataPropertyName.DB_SCHEMA_VERSION);
123 c0555cd6 l.morris
		return version == null || version.equals(DEFAULT_ENTRY) ? false : CdmMetaData.isDbSchemaVersionCompatible(version);
124 3eb913da n.hoffmann
	}
125
126 3be6ef3e n.hoffmann
	/**
127
	 * <p>getMetaData</p>
128
	 *
129
	 * @param metaDataPropertyName a {@link eu.etaxonomy.cdm.model.common.CdmMetaData.MetaDataPropertyName} object.
130
	 * @return a {@link java.lang.String} object.
131
	 */
132 6740eed5 Andreas Müller
	public String getMetaData(CdmMetaDataPropertyName metaDataPropertyName){
133 ddb51c5b n.hoffmann
		String property = metaDataMap.get(metaDataPropertyName);
134
		return property != null ? property : DEFAULT_ENTRY;
135
	}
136 f78917b1 Patrick Plitzner
137 3eb913da n.hoffmann
	/**
138 3be6ef3e n.hoffmann
	 * <p>isRunning</p>
139
	 *
140 3eb913da n.hoffmann
	 * @return the running
141
	 */
142
	public boolean isRunning() {
143
		return running;
144
	}
145 f78917b1 Patrick Plitzner
146 3be6ef3e n.hoffmann
	/** {@inheritDoc} */
147 c883ceaa n.hoffmann
	@Override
148
	public String toString() {
149 2e25ff01 Cherian Mathew
		return cdmSource.getName();
150 c883ceaa n.hoffmann
	}
151 5785e608 n.hoffmann
}