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.
9 package eu
.etaxonomy
.taxeditor
.local
.view
.datasource
;
11 import java
.util
.HashMap
;
14 import eu
.etaxonomy
.cdm
.config
.CdmSourceException
;
15 import eu
.etaxonomy
.cdm
.config
.ICdmSource
;
16 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmMetaData
;
17 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmMetaDataPropertyName
;
18 import eu
.etaxonomy
.taxeditor
.model
.MessagingUtils
;
21 * <p>CdmMetaDataAwareDataSourceContainer class.</p>
24 * @created Sep 22, 2010
26 public class CdmMetaDataAwareDataSourceContainer
{
28 /** Constant <code>DEFAULT_ENTRY="-"</code> */
29 public static final String DEFAULT_ENTRY
= "-";
31 private ICdmSource cdmSource
;
33 private boolean running
;
35 private Map
<CdmMetaDataPropertyName
, String
> metaDataMap
;
38 * <p>Constructor for CdmMetaDataAwareDataSourceContainer.</p>
40 * @param dataSource a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
41 * @param view a {@link eu.etaxonomy.taxeditor.webapp.view.datasource.CdmDataSourceViewPart} object.
43 public CdmMetaDataAwareDataSourceContainer(ICdmSource cdmSource
){
44 this.cdmSource
= cdmSource
;
46 metaDataMap
= getDefaultMetaDataMap();
49 public ICdmSource
getCdmSource() {
53 public void getMetaDataFromDataSource(){
55 running
= cdmSource
.checkConnection();
56 } catch (Exception e
) {
58 for(CdmMetaDataPropertyName metaDataPropertyName
: CdmMetaDataPropertyName
.values()){
59 metaDataMap
.put(metaDataPropertyName
, DEFAULT_ENTRY
);
67 metaDataMap
= cdmSource
.getMetaDataMap();
68 cdmSource
.closeOpenConnections();
69 // } catch (CdmSourceException e) {
70 // StoreUtil.warn(this.getClass(), "SQLException when trying to access: " + cdmSource.getName() + ". " + e.getMessage());
73 } catch (Exception e
) {
74 if(e
instanceof CdmSourceException
&& e
.getMessage().toLowerCase().contains("\"cdmmetadata\"")){
75 MessagingUtils
.error(this.getClass(), "Data source "+((CdmSourceException
) e
).getSourceName()+" does not have a CDMMETADATA table", null);
78 MessagingUtils
.error(this.getClass(), e
);
83 private Map
<CdmMetaDataPropertyName
, String
> getDefaultMetaDataMap(){
84 Map
<CdmMetaDataPropertyName
, String
> resultMap
= new HashMap
<>(CdmMetaDataPropertyName
.values().length
);
86 for(CdmMetaDataPropertyName metaDataPropertyName
: CdmMetaDataPropertyName
.values()){
87 resultMap
.put(metaDataPropertyName
, null);
93 public Map
<CdmMetaDataPropertyName
, String
> getMetaDataMap() {
97 public boolean isDataSourceCompatible(){
98 String version
= metaDataMap
.get(CdmMetaDataPropertyName
.DB_SCHEMA_VERSION
);
99 return version
== null || version
.equals(DEFAULT_ENTRY
) ?
false : CdmMetaData
.isDbSchemaVersionCompatible(version
);
102 public String
getMetaData(CdmMetaDataPropertyName metaDataPropertyName
){
103 String property
= metaDataMap
.get(metaDataPropertyName
);
104 return property
!= null ? property
: DEFAULT_ENTRY
;
107 public boolean isRunning() {
112 public String
toString() {
113 return cdmSource
.getName();