/** Constant <code>TAG_DATASOURCE="tagDataSource"</code> */
public static final String TAG_DATASOURCE = "tagDataSource";
private static final String CURRENT_DATASOURCE = "currentDataSource";
+ private static final String CURRENT_DATASOURCE_POSTFIX = "currentDataSourcePostFix";
private static final String DEFAULT_DATASOURCE_STATE_FILENAME = "datasource.xml";
+
private static final String DEFAULT_DATASOURCE_NAME = "cdm";
+ private static final String DEFAULT_DATASOURCE_POSTFIX = CdmPersistentDataSource.DATASOURCE_BEAN_POSTFIX;
private static ICdmSource currentCdmSource;
private static IMemento memento;
- private static String lastUsedDataSourceName;
+
+ private static String lastUsedCdmSourceName;
+ private static String lastUsedCdmSourcePostFix;
+
+
/**
* <p>Getter for the field <code>lastUsedDataSourceName</code>.</p>
*
* @return a {@link java.lang.String} object.
*/
- public static String getLastUsedDataSourceName(){
- if(lastUsedDataSourceName == null){
+ public static void updateLastUsedDataSource(){
+ if(lastUsedCdmSourceName == null){
memento = readMemento();
- lastUsedDataSourceName = memento != null ? memento.getString(CURRENT_DATASOURCE) : DEFAULT_DATASOURCE_NAME;
+ lastUsedCdmSourceName = memento != null ? memento.getString(CURRENT_DATASOURCE) : DEFAULT_DATASOURCE_NAME;
+ lastUsedCdmSourcePostFix = memento != null ? memento.getString(CURRENT_DATASOURCE_POSTFIX) : DEFAULT_DATASOURCE_POSTFIX;
+
}
- return lastUsedDataSourceName;
+
}
/**
public static ICdmSource getCurrentCdmSource() throws CdmRemoteSourceException {
if (currentCdmSource == null) {
- String lastUsedCdmSourceName = getLastUsedDataSourceName();
- if(lastUsedCdmSourceName.endsWith(CdmPersistentDataSource.DATASOURCE_BEAN_POSTFIX)) {
+ updateLastUsedDataSource();
+
+ if(lastUsedCdmSourceName == null) {
+ return null;
+ }
+ // for post fix = null , source is by default a data source
+ if(lastUsedCdmSourcePostFix == null || lastUsedCdmSourcePostFix.equals(CdmPersistentDataSource.DATASOURCE_BEAN_POSTFIX)) {
try {
currentCdmSource = CdmPersistentDataSource.NewInstance(lastUsedCdmSourceName);
} catch (DataSourceNotFoundException e) {
save(h2DataSource.getName(), h2DataSource);
setCurrentCdmSource(h2DataSource);
}
- } else if (lastUsedCdmSourceName.endsWith(CdmPersistentRemoteSource.REMOTESOURCE_BEAN_POSTFIX)) {
+ } else if (lastUsedCdmSourcePostFix.equals(CdmPersistentRemoteSource.REMOTESOURCE_BEAN_POSTFIX)) {
currentCdmSource = CdmPersistentRemoteSource.NewInstance(lastUsedCdmSourceName);
} else {
throw new CdmRemoteSourceException("Unkown Cdm Source Type");
*********************************************************/
private static void saveAsCurrentDatabaseToMemento(ICdmSource cdmSource){
- if(memento == null)
+ if(memento == null) {
memento = readMemento();
+ }
memento.putString(CURRENT_DATASOURCE, cdmSource.getName());
+
+ // Set postfix to distinguish between data and remote sources
+ if(cdmSource instanceof CdmPersistentRemoteSource) {
+ memento.putString(CURRENT_DATASOURCE_POSTFIX, CdmPersistentRemoteSource.REMOTESOURCE_BEAN_POSTFIX);
+ } else {
+ memento.putString(CURRENT_DATASOURCE_POSTFIX, CdmPersistentDataSource.DATASOURCE_BEAN_POSTFIX);
+ }
+
+
saveMementoToFile(memento);
}