added PostFix to memento to distinguish between remote and data source
authorCherian Mathew <c.mathew@bgbm.org>
Wed, 25 Jun 2014 15:34:13 +0000 (15:34 +0000)
committerCherian Mathew <c.mathew@bgbm.org>
Wed, 25 Jun 2014 15:34:13 +0000 (15:34 +0000)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/CdmDataSourceRepository.java

index f6c4828b2a0264b114468f982203bffe01a29412..fbf4c53573c5ab3c4cecbfcf5db13f2a62037048 100644 (file)
@@ -43,24 +43,33 @@ public class CdmDataSourceRepository{
        /** 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;
+               
        }
 
        /**
@@ -135,8 +144,13 @@ public class CdmDataSourceRepository{
        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) {
@@ -146,7 +160,7 @@ public class CdmDataSourceRepository{
                                        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");
@@ -259,9 +273,19 @@ public class CdmDataSourceRepository{
         *********************************************************/
        
        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);
        }