Merge branch 'release/4.7.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / store / CdmStore.java
index 2ed42b85b4a8abb4419df3ffa335da12fc48b57c..60a9018c3040580e38152dac827ff5f1fd0c7858 100644 (file)
@@ -25,7 +25,7 @@ import org.springframework.security.core.context.SecurityContextHolder;
 import eu.etaxonomy.cdm.api.application.CdmApplicationException;
 import eu.etaxonomy.cdm.api.application.CdmApplicationRemoteController;
 import eu.etaxonomy.cdm.api.application.CdmApplicationState;
-import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
+import eu.etaxonomy.cdm.api.application.ICdmRepository;
 import eu.etaxonomy.cdm.api.cache.CdmServiceCacher;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.service.IAgentService;
@@ -58,7 +58,6 @@ import eu.etaxonomy.cdm.persistence.hibernate.permission.Role;
 import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;
 import eu.etaxonomy.taxeditor.io.ExportManager;
 import eu.etaxonomy.taxeditor.io.ImportManager;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.remoting.cache.CdmRemoteCacheManager;
@@ -67,7 +66,6 @@ import eu.etaxonomy.taxeditor.session.mock.MockCdmEntitySessionManager;
 import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
 import eu.etaxonomy.taxeditor.ui.dialog.RemotingLoginDialog;
 import eu.etaxonomy.taxeditor.util.ProgressMonitorClientManager;
-import eu.etaxonomy.taxeditor.view.datasource.CdmDataSourceViewPart;
 import eu.etaxonomy.taxeditor.webapp.CDMServer;
 
 /**
@@ -91,7 +89,7 @@ public class CdmStore {
 
     private static CdmStore instance;
 
-    //private final ICdmApplicationConfiguration applicationConfiguration;
+    //private final ICdmRepository applicationConfiguration;
 
     private static ContextManager contextManager = new ContextManager();
 
@@ -126,17 +124,30 @@ public class CdmStore {
      *
      * @return a {@link eu.etaxonomy.taxeditor.store.CdmStore} object.
      */
-    protected static CdmStore getDefault({
+    protected static CdmStore getDefault(boolean connecting){
         if (instance != null && instance.isConnected) {
             return instance;
         } else{// if (instance == null || !instance.isConnected) {
+            if (connecting){
+                MessagingUtils.dataSourceNotAvailableWarningDialog(instance);
+            }else{
+                MessagingUtils.noDataSourceWarningDialog(instance);
+            }
 
-            MessagingUtils.noDataSourceWarningDialog(instance);
 
-            AbstractUtility.showView(CdmDataSourceViewPart.ID);
             return null;
         }
     }
+    /**
+     * <p>
+     * getDefault
+     * </p>
+     *
+     * @return a {@link eu.etaxonomy.taxeditor.store.CdmStore} object.
+     */
+    protected static CdmStore getDefault(){
+       return getDefault(false);
+    }
 
     /**
      * Initialize the with the last edited datasource
@@ -202,8 +213,8 @@ public class CdmStore {
         if(isActive()) {
             // before we connect we clear the entity caches and the sessions
             CdmRemoteCacheManager.removeEntityCaches();
-            if(getCurrentSessionManager() != null) {
-                getCurrentSessionManager().disposeAll();
+            if(getCurrentSessionManager(true) != null) {
+                getCurrentSessionManager(true).disposeAll();
             }
         }
         MessagingUtils.info("Connecting to datasource: " + cdmSource);
@@ -262,16 +273,16 @@ public class CdmStore {
         CdmApplicationState.dispose();
     }
 
-    static void setInstance(ICdmApplicationConfiguration applicationController,
+    static void setInstance(ICdmRepository applicationController,
             ICdmSource cdmSource) {
         instance = new CdmStore(applicationController, cdmSource);
         CdmApplicationState.setCdmServiceCacher(new CdmServiceCacher());
-        
+
     }
 
-    private CdmStore(ICdmApplicationConfiguration applicationController,
+    private CdmStore(ICdmRepository repository,
             ICdmSource cdmSource) {
-        CdmApplicationState.setCurrentAppConfig(applicationController);
+        CdmApplicationState.setCurrentAppConfig(repository);
         CdmApplicationState.setCurrentDataChangeService(new CdmUIDataChangeService());
         this.cdmSource = cdmSource;
         isConnected = true;
@@ -282,7 +293,7 @@ public class CdmStore {
      *
      * @return
      */
-    private ICdmApplicationConfiguration getApplicationConfiguration() {
+    private ICdmRepository getApplicationConfiguration() {
         try {
             return CdmApplicationState.getCurrentAppConfig();
         } catch (Exception e) {
@@ -300,7 +311,7 @@ public class CdmStore {
      *         {@link eu.etaxonomy.cdm.remote.api.application.CdmApplicationController}
      *         object.
      */
-    public static ICdmApplicationConfiguration getCurrentApplicationConfiguration() {
+    public static ICdmRepository getCurrentApplicationConfiguration() {
         if (getDefault() != null) {
             return getDefault().getApplicationConfiguration();
         }
@@ -344,17 +355,21 @@ public class CdmStore {
             return mockCdmEntitySessionManager;
         }
     }
-
     public static  ICdmEntitySessionManager getCurrentSessionManager() {
-        if (getDefault() != null) {
-            return getDefault().getSessionManager();
+        return getCurrentSessionManager(false);
+    }
+
+
+    public static  ICdmEntitySessionManager getCurrentSessionManager(boolean connecting) {
+        if (getDefault(connecting) != null) {
+            return getDefault(connecting).getSessionManager();
         }
         return null;
 
     }
 
     /**
-     * Generic method that will scan the getters of {@link ICdmApplicationConfiguration} for the given service
+     * Generic method that will scan the getters of {@link ICdmRepository} for the given service
      * interface. If a matching getter is found the according service implementation is returned by
      * invoking the getter otherwise the method returns <code>null</code>.
      *