Merge branch 'release/5.10.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / store / CdmStoreConnector.java
index 6eecb7f51b4e4e8f435f9efb258d58358040ad8e..a7cf9fbc78793bfb52da9fdd98af69113ab158a5 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 /**
  * Copyright (C) 2007 EDIT
  * European Distributed Institute of Taxonomy
@@ -26,15 +25,18 @@ import org.springframework.core.io.Resource;
 
 import eu.etaxonomy.cdm.api.application.CdmApplicationController;
 import eu.etaxonomy.cdm.api.application.CdmApplicationRemoteController;
-import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
+import eu.etaxonomy.cdm.api.application.ICdmRepository;
 import eu.etaxonomy.cdm.config.CdmSourceException;
 import eu.etaxonomy.cdm.config.ICdmSource;
 import eu.etaxonomy.cdm.database.DbSchemaValidation;
 import eu.etaxonomy.cdm.database.ICdmDataSource;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.metadata.CdmMetaData;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
 import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.taxeditor.event.EventUtility;
+import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
+import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.CdmProgressMonitorAdapter;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.remoting.source.ICdmRemoteSource;
@@ -64,7 +66,7 @@ class CdmStoreConnector extends Job {
             ICdmSource cdmSource,
             DbSchemaValidation dbSchemaValidation,
             Resource applicationContextBean) {
-        super(String.format("Creating data model for %s", cdmSource));
+        super(String.format(Messages.CdmStoreConnector_CREATING_DATAMODEL, cdmSource));
         this.display = display;
         this.cdmSource = cdmSource;
         this.dbSchemaValidation = dbSchemaValidation;
@@ -100,7 +102,7 @@ class CdmStoreConnector extends Job {
             CdmStore.close(monitor);
         }
 
-        ICdmApplicationConfiguration applicationController = null;
+        ICdmRepository applicationController = null;
 
         if (!monitor.isCanceled()) {
             CdmProgressMonitorAdapter subprogressMonitor = CdmProgressMonitorAdapter
@@ -110,11 +112,18 @@ class CdmStoreConnector extends Job {
             try {
                 Thread.currentThread().setPriority(10);
                 applicationController = getApplicationController(cdmSource,subprogressMonitor);
+                MessagingUtils.informationDialog(Messages.CdmStoreConnector_SUCCESS, Messages.CdmStoreConnector_DATA_MODEL_CREATION_SUCCESSFUL);
+                //FIXME E4 migrate or delete because data source view is not used anymore
+//                CdmDataSourceViewPartE4 dataSourceView = (CdmDataSourceViewPartE4) WorkbenchUtility.getE4WrappedPart(AbstractUtility.getView("eu.etaxonomy.taxeditor.view.datasource", false));
+//                if(dataSourceView!=null){
+//                    dataSourceView.refresh();
+//                }
+                EventUtility.postEvent(WorkbenchEventConstants.REFRESH_DATASOURCE, true);
                 return Status.OK_STATUS;
             } catch (Exception e) {
                 if(! causeIsCancelationExceptionRecursive(e)){
-                    MessagingUtils.errorDialog("Could not create data model", CdmStoreConnector.class, "An error occurred while trying to create "
-                            + "data model for data source: " + cdmSource.getName()+"\n Please clear the data base and retry. ", TaxeditorStorePlugin.PLUGIN_ID, e, true);
+                    MessagingUtils.errorDialog(Messages.CdmStoreConnector_COULD_NOT_CREATE_DATAMODEL, CdmStoreConnector.class,
+                               String.format(Messages.CdmStoreConnector_ERROR_DURING_DATAMODEL_CREATION, cdmSource.getName()), TaxeditorStorePlugin.PLUGIN_ID, e, true);
                     return Status.CANCEL_STATUS;
                 }
             } finally {
@@ -122,8 +131,7 @@ class CdmStoreConnector extends Job {
                 Thread.currentThread().setPriority(oldPriority);
             }
         }
-
-            return Status.CANCEL_STATUS;
+        return Status.CANCEL_STATUS;
 
     }
 
@@ -170,7 +178,7 @@ class CdmStoreConnector extends Job {
                             }
                         });
 
-                        ICdmApplicationConfiguration applicationController = null;
+                        ICdmRepository applicationController = null;
 
                         if (!monitor.isCanceled()) {
                             CdmProgressMonitorAdapter subprogressMonitor = CdmProgressMonitorAdapter
@@ -182,7 +190,7 @@ class CdmStoreConnector extends Job {
 
                         if (!monitor.isCanceled()) {
                             CdmStore.setInstance(applicationController, cdmSource);
-                            monitor.subTask("Authenticating user");
+                            monitor.subTask(Messages.CdmStoreConnector_AUTHENTICATING_USER);
                             display.syncExec(new Runnable() {
                                 /*
                                  * (non-Javadoc)
@@ -195,15 +203,17 @@ class CdmStoreConnector extends Job {
                                     try {
                                         // create new security context
                                         CdmStore.getLoginManager().doAuthenticate(loginDialog.getUsername(), loginDialog.getPassword());
-                                        loginDialog.onComplete();
+                                        //loginDialog.onComplete();
                                         CdmStore.getContextManager().notifyContextStart();
+                                        loginDialog.onComplete();
                                         getInstance(Rank.class).resetTerms();
                                         getInstance(NomenclaturalStatusType.class).resetTerms();
                                         Rank.initDefaultTerms();
                                         NomenclaturalStatusType.initDefaultTerms();
                                     } catch(CdmAuthenticationException cae) {
                                         loginDialog.hide(false);
-                                        loginDialog.setMessage(cae.getMessage());
+                                        loginDialog.setMessage(Messages.RemotingLoginDialog_MISSING_PERMISSION);
+
                                     }
 
                                 }
@@ -243,7 +253,7 @@ class CdmStoreConnector extends Job {
     }
 
 
-    private ICdmApplicationConfiguration getApplicationController(ICdmSource cdmSource, CdmProgressMonitorAdapter subprogressMonitor) {
+    private ICdmRepository getApplicationController(ICdmSource cdmSource, CdmProgressMonitorAdapter subprogressMonitor) {
         if(cdmSource instanceof ICdmDataSource) {
             return  CdmApplicationController.NewInstance(applicationContextBean,
                     (ICdmDataSource)cdmSource,
@@ -280,7 +290,7 @@ class CdmStoreConnector extends Job {
      * @throws SQLException
      */
     private void checkDbSchemaVersionCompatibility(IProgressMonitor monitor) {
-        monitor.subTask("Checking if datasource is compatible with this editor.");
+        monitor.subTask(Messages.CdmStoreConnector_CHECK_IF_EDITOR_IS_COMPATIBLE);
         String dbSchemaVersion;
 
         String message = null;
@@ -294,9 +304,9 @@ class CdmStoreConnector extends Job {
                 // if the datasource version is greater than the taxeditor compatible version then the taxeditor needs to
                 // be updated else the datasource needs to be updated
                 if(compareVersion > 0) {
-                    message = "Please update the Taxonomic Editor (Help->Check for Updates) or choose a compatible datasource";
+                    message = Messages.CdmStoreConnector_UPDATE_EDITOR_OR_CHOOSE_COMPATIBLE_DATASOURCE;
                 } else if (compareVersion < 0) {
-                    message = "Please update the chosen datasource or choose a new data source to connect to in the Datasource View.";
+                    message = Messages.CdmStoreConnector_UPDATE_DATASOUREC_OR_CHOOSE_NEW_DATASOURCE;
                 }
             }
             monitor.worked(1);
@@ -308,13 +318,9 @@ class CdmStoreConnector extends Job {
             // Show an error message
             MessagingUtils
             .messageDialog(
-                    "Datasource Compatibility Check failed",
+                    Messages.CdmStoreConnector_COMPATIBILITY_CHECK_FAILED,
                     this,
-                    "The database schema for the chosen "
-                            + "datasource '"
-                            + cdmSource
-                            + "' \n is not compatible for this version of the taxonomic editor. \n\n"
-                            + message,
+                    String.format(Messages.CdmStoreConnector_SCHEME_NOT_COMPATIBLE, cdmSource, message),
                             null);
 
             monitor.setCanceled(true);
@@ -323,7 +329,7 @@ class CdmStoreConnector extends Job {
     }
 
     private void checkIsNonEmptyCdmDatabase(IProgressMonitor monitor) {
-        monitor.subTask("Checking if datasource is a non empty CDM database.");
+        monitor.subTask(Messages.CdmStoreConnector_CHECK_IF_NON_EMPTY);
         boolean isDbEmpty = false;
         try {
             isDbEmpty = cdmSource.isDbEmpty();
@@ -347,12 +353,12 @@ class CdmStoreConnector extends Job {
 
     private void checkDatabaseReachable(IProgressMonitor monitor) {
         try {
-            monitor.subTask("Checking if datasource is reachable.");
+            monitor.subTask(Messages.CdmStoreConnector_CHECK_IF_REACHABLE);
             cdmSource.checkConnection();
             monitor.worked(1);
         } catch (CdmSourceException e) {
-            MessagingUtils.messageDialog("Could not connect to chosen datasource",
-                    this, "Reason: " + e.getMessage(), e);
+            MessagingUtils.messageDialog(Messages.CdmStoreConnector_COULD_NOT_CONNECT_TO_CHOSEN_DATASOURCE,
+                    this, Messages.CdmStoreConnector_REASON + e.getMessage(), e);
             monitor.setCanceled(true);
         }
     }