2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * 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.
10 package eu
.etaxonomy
.taxeditor
.view
.datasource
;
12 import java
.util
.HashMap
;
15 import eu
.etaxonomy
.cdm
.config
.CdmSourceException
;
16 import eu
.etaxonomy
.cdm
.config
.ICdmSource
;
17 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmMetaData
;
18 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmMetaData
.MetaDataPropertyName
;
19 import eu
.etaxonomy
.taxeditor
.model
.MessagingUtils
;
22 * <p>CdmMetaDataAwareDataSourceContainer class.</p>
25 * @created Sep 22, 2010
28 public class CdmMetaDataAwareDataSourceContainer
{
32 /** Constant <code>DEFAULT_ENTRY="-"</code> */
33 public static final String DEFAULT_ENTRY
= "-";
35 private ICdmSource cdmSource
;
37 private boolean running
;
39 private Map
<MetaDataPropertyName
, String
> metaDataMap
;
42 * <p>Constructor for CdmMetaDataAwareDataSourceContainer.</p>
44 * @param dataSource a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
45 * @param view a {@link eu.etaxonomy.taxeditor.view.datasource.CdmDataSourceViewPart} object.
47 public CdmMetaDataAwareDataSourceContainer(ICdmSource cdmSource
){
48 this.cdmSource
= cdmSource
;
50 metaDataMap
= getDefaultMetaDataMap();
55 // * <p>Getter for the field <code>dataSource</code>.</p>
57 // * @return the dataSource
59 // public ICdmDataSource getDataSource() {
63 public ICdmSource
getCdmSource() {
67 public void getMetaDataFromDataSource(){
69 running
= cdmSource
.checkConnection();
70 } catch (Exception e
) {
72 for(MetaDataPropertyName metaDataPropertyName
: MetaDataPropertyName
.values()){
73 metaDataMap
.put(metaDataPropertyName
, DEFAULT_ENTRY
);
81 metaDataMap
= cdmSource
.getMetaDataMap();
82 cdmSource
.closeOpenConnections();
83 // } catch (CdmSourceException e) {
84 // StoreUtil.warn(this.getClass(), "SQLException when trying to access: " + cdmSource.getName() + ". " + e.getMessage());
87 } catch (Exception e
) {
88 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);
92 MessagingUtils
.error(this.getClass(), e
);
97 private Map
<MetaDataPropertyName
, String
> getDefaultMetaDataMap(){
98 Map
<MetaDataPropertyName
, String
> resultMap
= new HashMap
<MetaDataPropertyName
, String
>(MetaDataPropertyName
.values().length
);
100 for(MetaDataPropertyName metaDataPropertyName
: MetaDataPropertyName
.values()){
101 resultMap
.put(metaDataPropertyName
, null);
108 * <p>Getter for the field <code>metaDataMap</code>.</p>
110 * @return the metaDataMap
112 public Map
<MetaDataPropertyName
, String
> getMetaDataMap() {
117 * <p>isDataSourceCompatible</p>
121 public boolean isDataSourceCompatible(){
122 String version
= metaDataMap
.get(MetaDataPropertyName
.DB_SCHEMA_VERSION
);
123 return version
== null || version
.equals(DEFAULT_ENTRY
) ?
false : CdmMetaData
.isDbSchemaVersionCompatible(version
);
129 * @param metaDataPropertyName a {@link eu.etaxonomy.cdm.model.common.CdmMetaData.MetaDataPropertyName} object.
130 * @return a {@link java.lang.String} object.
132 public String
getMetaData(MetaDataPropertyName metaDataPropertyName
){
133 String property
= metaDataMap
.get(metaDataPropertyName
);
134 return property
!= null ? property
: DEFAULT_ENTRY
;
140 * @return the running
142 public boolean isRunning() {
148 public String
toString() {
149 return cdmSource
.getName();