Popup message before editing an unpersisted object #5489
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / view / datasource / CdmMetaDataAwareDataSourceContainer.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.taxeditor.view.datasource;
12
13 import java.sql.SQLException;
14 import java.util.HashMap;
15 import java.util.Map;
16
17 import eu.etaxonomy.cdm.config.CdmSourceException;
18 import eu.etaxonomy.cdm.config.ICdmSource;
19 import eu.etaxonomy.cdm.database.ICdmDataSource;
20 import eu.etaxonomy.cdm.model.metadata.CdmMetaData;
21 import eu.etaxonomy.cdm.model.metadata.CdmMetaData.MetaDataPropertyName;
22 import eu.etaxonomy.taxeditor.model.MessagingUtils;
23
24 /**
25 * <p>CdmMetaDataAwareDataSourceContainer class.</p>
26 *
27 * @author n.hoffmann
28 * @created Sep 22, 2010
29 * @version 1.0
30 */
31 public class CdmMetaDataAwareDataSourceContainer {
32
33
34
35 /** Constant <code>DEFAULT_ENTRY="-"</code> */
36 public static final String DEFAULT_ENTRY = "-";
37
38 private ICdmSource cdmSource;
39
40 private boolean running;
41
42 private Map<MetaDataPropertyName, String> metaDataMap;
43
44 /**
45 * <p>Constructor for CdmMetaDataAwareDataSourceContainer.</p>
46 *
47 * @param dataSource a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
48 * @param view a {@link eu.etaxonomy.taxeditor.view.datasource.CdmDataSourceViewPart} object.
49 */
50 public CdmMetaDataAwareDataSourceContainer(ICdmSource cdmSource){
51 this.cdmSource = cdmSource;
52
53 metaDataMap = getDefaultMetaDataMap();
54
55 }
56
57 // /**
58 // * <p>Getter for the field <code>dataSource</code>.</p>
59 // *
60 // * @return the dataSource
61 // */
62 // public ICdmDataSource getDataSource() {
63 // return dataSource;
64 // }
65
66 public ICdmSource getCdmSource() {
67 return cdmSource;
68 }
69
70 public void getMetaDataFromDataSource(){
71 try {
72 running = cdmSource.checkConnection();
73 } catch (Exception e) {
74 running = false;
75 for(MetaDataPropertyName metaDataPropertyName : MetaDataPropertyName.values()){
76 metaDataMap.put(metaDataPropertyName, DEFAULT_ENTRY);
77 }
78 }
79
80 try {
81 if(isRunning()){
82
83 // try {
84 metaDataMap = cdmSource.getMetaDataMap();
85 cdmSource.closeOpenConnections();
86 // } catch (CdmSourceException e) {
87 // StoreUtil.warn(this.getClass(), "SQLException when trying to access: " + cdmSource.getName() + ". " + e.getMessage());
88 // }
89 }
90 } catch (Exception e) {
91 MessagingUtils.error(this.getClass(), e);
92 }
93 }
94
95 private Map<MetaDataPropertyName, String> getDefaultMetaDataMap(){
96 Map<MetaDataPropertyName, String> resultMap = new HashMap<MetaDataPropertyName, String>(MetaDataPropertyName.values().length);
97
98 for(MetaDataPropertyName metaDataPropertyName : MetaDataPropertyName.values()){
99 resultMap.put(metaDataPropertyName, null);
100 }
101
102 return resultMap;
103 }
104
105 /**
106 * <p>Getter for the field <code>metaDataMap</code>.</p>
107 *
108 * @return the metaDataMap
109 */
110 public Map<MetaDataPropertyName, String> getMetaDataMap() {
111 return metaDataMap;
112 }
113
114 /**
115 * <p>isDataSourceCompatible</p>
116 *
117 * @return a boolean.
118 */
119 public boolean isDataSourceCompatible(){
120 String version = metaDataMap.get(MetaDataPropertyName.DB_SCHEMA_VERSION);
121 return version == null || version.equals(DEFAULT_ENTRY) ? false : CdmMetaData.isDbSchemaVersionCompatible(version);
122 }
123
124 /**
125 * <p>getMetaData</p>
126 *
127 * @param metaDataPropertyName a {@link eu.etaxonomy.cdm.model.common.CdmMetaData.MetaDataPropertyName} object.
128 * @return a {@link java.lang.String} object.
129 */
130 public String getMetaData(MetaDataPropertyName metaDataPropertyName){
131 String property = metaDataMap.get(metaDataPropertyName);
132 return property != null ? property : DEFAULT_ENTRY;
133 }
134
135 /**
136 * <p>isRunning</p>
137 *
138 * @return the running
139 */
140 public boolean isRunning() {
141 return running;
142 }
143
144 /* (non-Javadoc)
145 * @see java.lang.Object#toString()
146 */
147 /** {@inheritDoc} */
148 @Override
149 public String toString() {
150 return cdmSource.getName();
151 }
152 }