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
.util
.HashMap
;
16 import eu
.etaxonomy
.cdm
.config
.CdmSourceException
;
17 import eu
.etaxonomy
.cdm
.config
.ICdmSource
;
18 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmMetaData
;
19 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmMetaData
.MetaDataPropertyName
;
20 import eu
.etaxonomy
.taxeditor
.model
.MessagingUtils
;
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 ICdmSource cdmSource
;
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(ICdmSource cdmSource
){
49 this.cdmSource
= cdmSource
;
51 metaDataMap
= getDefaultMetaDataMap();
56 // * <p>Getter for the field <code>dataSource</code>.</p>
58 // * @return the dataSource
60 // public ICdmDataSource getDataSource() {
64 public ICdmSource
getCdmSource() {
68 public void getMetaDataFromDataSource(){
70 running
= cdmSource
.checkConnection();
71 } catch (Exception e
) {
73 for(MetaDataPropertyName metaDataPropertyName
: MetaDataPropertyName
.values()){
74 metaDataMap
.put(metaDataPropertyName
, DEFAULT_ENTRY
);
82 metaDataMap
= cdmSource
.getMetaDataMap();
83 cdmSource
.closeOpenConnections();
84 // } catch (CdmSourceException e) {
85 // StoreUtil.warn(this.getClass(), "SQLException when trying to access: " + cdmSource.getName() + ". " + e.getMessage());
88 } catch (Exception e
) {
89 if(e
instanceof CdmSourceException
&& e
.getMessage().toLowerCase().contains("\"cdmmetadata\"")){
90 MessagingUtils
.error(this.getClass(), "Data source "+((CdmSourceException
) e
).getSourceName()+" does not have a CDMMETADATA table", null);
93 MessagingUtils
.error(this.getClass(), e
);
98 private Map
<MetaDataPropertyName
, String
> getDefaultMetaDataMap(){
99 Map
<MetaDataPropertyName
, String
> resultMap
= new HashMap
<MetaDataPropertyName
, String
>(MetaDataPropertyName
.values().length
);
101 for(MetaDataPropertyName metaDataPropertyName
: MetaDataPropertyName
.values()){
102 resultMap
.put(metaDataPropertyName
, null);
109 * <p>Getter for the field <code>metaDataMap</code>.</p>
111 * @return the metaDataMap
113 public Map
<MetaDataPropertyName
, String
> getMetaDataMap() {
118 * <p>isDataSourceCompatible</p>
122 public boolean isDataSourceCompatible(){
123 String version
= metaDataMap
.get(MetaDataPropertyName
.DB_SCHEMA_VERSION
);
124 return version
== null || version
.equals(DEFAULT_ENTRY
) ?
false : CdmMetaData
.isDbSchemaVersionCompatible(version
);
130 * @param metaDataPropertyName a {@link eu.etaxonomy.cdm.model.common.CdmMetaData.MetaDataPropertyName} object.
131 * @return a {@link java.lang.String} object.
133 public String
getMetaData(MetaDataPropertyName metaDataPropertyName
){
134 String property
= metaDataMap
.get(metaDataPropertyName
);
135 return property
!= null ? property
: DEFAULT_ENTRY
;
141 * @return the running
143 public boolean isRunning() {
148 * @see java.lang.Object#toString()
152 public String
toString() {
153 return cdmSource
.getName();