package eu.etaxonomy.taxeditor.store;
+import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.concurrent.CancellationException;
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.metadata.CdmMetaData;
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
+import eu.etaxonomy.cdm.model.name.Rank;
import eu.etaxonomy.taxeditor.model.CdmProgressMonitorAdapter;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.remoting.source.ICdmRemoteSource;
+import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
import eu.etaxonomy.taxeditor.ui.dialog.LoginDialog;
import eu.etaxonomy.taxeditor.ui.dialog.RemotingLoginDialog;
-import eu.etaxonomy.taxeditor.view.datasource.CdmDataSourceViewPart;
/**
try {
Thread.currentThread().setPriority(10);
applicationController = getApplicationController(cdmSource,subprogressMonitor);
+ return Status.OK_STATUS;
} catch (Exception e) {
if(! causeIsCancelationExceptionRecursive(e)){
- return new Status(IStatus.ERROR, "Could not connect to CDM Store", "An error occurred while trying to connect to datasource: " + cdmSource.getName(), 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);
+ return Status.CANCEL_STATUS;
}
} finally {
monitor.done();
}
}
-
-
- if (!monitor.isCanceled()) {
- CdmStore.setInstance(applicationController, cdmSource);
-
- display.asyncExec(new Runnable() {
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Runnable#run()
- */
- @Override
- public void run() {
- authenticate();
-
- startContext();
- }
- });
-
- MessagingUtils.info("Application context initialized.");
- return Status.OK_STATUS;
- } else {
- // Show datasource view if not shown yet
- display.asyncExec(new Runnable() {
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Runnable#run()
- */
- @Override
- public void run() {
- StoreUtil.showView(CdmDataSourceViewPart.ID);
- }
- });
return Status.CANCEL_STATUS;
- }
}
CdmStore.getLoginManager().doAuthenticate(loginDialog.getUsername(), loginDialog.getPassword());
loginDialog.onComplete();
CdmStore.getContextManager().notifyContextStart();
+ getInstance(Rank.class).resetTerms();
+ getInstance(NomenclaturalStatusType.class).resetTerms();
+ Rank.initDefaultTerms();
+ NomenclaturalStatusType.initDefaultTerms();
} catch(CdmAuthenticationException cae) {
loginDialog.hide(false);
loginDialog.setMessage(cae.getMessage());
}
}
+ /**
+ * Returns a new instance for the given class by using the default constructor.
+ * The constructor must be declared but can be unaccessible (e.g. private)
+ * @param termClass
+ * @return
+ */
+ private <T extends DefinedTermBase> T getInstance(Class<? extends DefinedTermBase> termClass) {
+ try {
+ Constructor<T> c = ((Class<T>)termClass).getDeclaredConstructor();
+ c.setAccessible(true);
+ T termInstance = c.newInstance();
+ return termInstance;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
private ICdmApplicationConfiguration getApplicationController(ICdmSource cdmSource, CdmProgressMonitorAdapter subprogressMonitor) {
if(cdmSource instanceof ICdmDataSource) {