// $Id$
/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
-*
+*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
package eu.etaxonomy.taxeditor.view.datasource;
-import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import eu.etaxonomy.cdm.config.CdmSourceException;
import eu.etaxonomy.cdm.config.ICdmSource;
-import eu.etaxonomy.cdm.database.ICdmDataSource;
import eu.etaxonomy.cdm.model.metadata.CdmMetaData;
import eu.etaxonomy.cdm.model.metadata.CdmMetaData.MetaDataPropertyName;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
* @version 1.0
*/
public class CdmMetaDataAwareDataSourceContainer {
-
-
-
+
+
+
/** Constant <code>DEFAULT_ENTRY="-"</code> */
public static final String DEFAULT_ENTRY = "-";
-
+
private ICdmSource cdmSource;
-
+
private boolean running;
-
+
private Map<MetaDataPropertyName, String> metaDataMap;
-
+
/**
* <p>Constructor for CdmMetaDataAwareDataSourceContainer.</p>
*
*/
public CdmMetaDataAwareDataSourceContainer(ICdmSource cdmSource){
this.cdmSource = cdmSource;
-
+
metaDataMap = getDefaultMetaDataMap();
-
+
}
// /**
// public ICdmDataSource getDataSource() {
// return dataSource;
// }
-
+
public ICdmSource getCdmSource() {
return cdmSource;
}
-
+
public void getMetaDataFromDataSource(){
try {
running = cdmSource.checkConnection();
} catch (Exception e) {
running = false;
for(MetaDataPropertyName metaDataPropertyName : MetaDataPropertyName.values()){
- metaDataMap.put(metaDataPropertyName, DEFAULT_ENTRY);
+ metaDataMap.put(metaDataPropertyName, DEFAULT_ENTRY);
}
}
if(isRunning()){
// try {
- metaDataMap = cdmSource.getMetaDataMap();
+ metaDataMap = cdmSource.getMetaDataMap();
cdmSource.closeOpenConnections();
// } catch (CdmSourceException e) {
// StoreUtil.warn(this.getClass(), "SQLException when trying to access: " + cdmSource.getName() + ". " + e.getMessage());
- // }
+ // }
}
} catch (Exception e) {
- MessagingUtils.error(this.getClass(), e);
+ if(e instanceof CdmSourceException && e.getMessage().toLowerCase().contains("\"cdmmetadata\"")){
+ MessagingUtils.error(this.getClass(), "Data source "+((CdmSourceException) e).getSourceName()+" does not have a CDMMETADATA table", null);
+ }
+ else{
+ MessagingUtils.error(this.getClass(), e);
+ }
}
}
-
+
private Map<MetaDataPropertyName, String> getDefaultMetaDataMap(){
Map<MetaDataPropertyName, String> resultMap = new HashMap<MetaDataPropertyName, String>(MetaDataPropertyName.values().length);
-
+
for(MetaDataPropertyName metaDataPropertyName : MetaDataPropertyName.values()){
resultMap.put(metaDataPropertyName, null);
}
-
+
return resultMap;
}
public Map<MetaDataPropertyName, String> getMetaDataMap() {
return metaDataMap;
}
-
+
/**
* <p>isDataSourceCompatible</p>
*
String property = metaDataMap.get(metaDataPropertyName);
return property != null ? property : DEFAULT_ENTRY;
}
-
+
/**
* <p>isRunning</p>
*
public boolean isRunning() {
return running;
}
-
+
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/