3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
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.
11 package eu
.etaxonomy
.taxeditor
.view
.datasource
;
13 import java
.sql
.SQLException
;
14 import java
.util
.HashMap
;
17 import eu
.etaxonomy
.cdm
.database
.ICdmDataSource
;
18 import eu
.etaxonomy
.cdm
.model
.common
.CdmMetaData
;
19 import eu
.etaxonomy
.cdm
.model
.common
.CdmMetaData
.MetaDataPropertyName
;
20 import eu
.etaxonomy
.taxeditor
.store
.StoreUtil
;
23 * <p>CdmMetaDataAwareDataSourceContainer class.</p>
26 * @created Sep 22, 2010
29 public class CdmMetaDataAwareDataSourceContainer
{
33 /** Constant <code>DEFAULT_ENTRY="-"</code> */
34 public static final String DEFAULT_ENTRY
= "-";
36 private ICdmDataSource dataSource
;
38 private boolean running
;
40 private Map
<MetaDataPropertyName
, String
> metaDataMap
;
43 * <p>Constructor for CdmMetaDataAwareDataSourceContainer.</p>
45 * @param dataSource a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
46 * @param view a {@link eu.etaxonomy.taxeditor.view.datasource.CdmDataSourceViewPart} object.
48 public CdmMetaDataAwareDataSourceContainer(ICdmDataSource dataSource
){
49 this.dataSource
= dataSource
;
51 metaDataMap
= getDefaultMetaDataMap();
56 * <p>Getter for the field <code>dataSource</code>.</p>
58 * @return the dataSource
60 public ICdmDataSource
getDataSource() {
64 public void getMetaDataFromDataSource(){
66 running
= dataSource
.testConnection();
67 } catch (Exception e
) {
69 for(MetaDataPropertyName metaDataPropertyName
: MetaDataPropertyName
.values()){
70 metaDataMap
.put(metaDataPropertyName
, DEFAULT_ENTRY
);
78 for(MetaDataPropertyName metaDataPropertyName
: MetaDataPropertyName
.values()){
79 Object result
= dataSource
.getSingleValue(metaDataPropertyName
.getSqlQuery());
81 metaDataMap
.put(metaDataPropertyName
, (String
) result
);
84 dataSource
.closeOpenConnections();
85 } catch (SQLException e
) {
86 StoreUtil
.warn(this.getClass(), "SQLException when trying to access: " + dataSource
.getName() + ". " + e
.getMessage());
89 } catch (Exception e
) {
90 StoreUtil
.error(this.getClass(), e
);
94 private Map
<MetaDataPropertyName
, String
> getDefaultMetaDataMap(){
95 Map
<MetaDataPropertyName
, String
> resultMap
= new HashMap
<MetaDataPropertyName
, String
>(MetaDataPropertyName
.values().length
);
97 for(MetaDataPropertyName metaDataPropertyName
: MetaDataPropertyName
.values()){
98 resultMap
.put(metaDataPropertyName
, null);
105 * <p>Getter for the field <code>metaDataMap</code>.</p>
107 * @return the metaDataMap
109 public Map
<MetaDataPropertyName
, String
> getMetaDataMap() {
114 * <p>isDataSourceCompatible</p>
118 public boolean isDataSourceCompatible(){
119 String version
= metaDataMap
.get(MetaDataPropertyName
.DB_SCHEMA_VERSION
);
120 return version
== null || version
.equals(DEFAULT_ENTRY
) ?
false : CdmMetaData
.isDbSchemaVersionCompatible(version
);
126 * @param metaDataPropertyName a {@link eu.etaxonomy.cdm.model.common.CdmMetaData.MetaDataPropertyName} object.
127 * @return a {@link java.lang.String} object.
129 public String
getMetaData(MetaDataPropertyName metaDataPropertyName
){
130 String property
= metaDataMap
.get(metaDataPropertyName
);
131 return property
!= null ? property
: DEFAULT_ENTRY
;
137 * @return the running
139 public boolean isRunning() {
144 * @see java.lang.Object#toString()
148 public String
toString() {
149 return dataSource
.getName();