import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.swt.widgets.Display;
-import org.hibernate.collection.internal.AbstractPersistentCollection;
-import org.hibernate.proxy.AbstractLazyInitializer;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.security.access.PermissionEvaluator;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
+
+import eu.etaxonomy.cdm.api.application.CdmApplicationRemoteConfiguration;
+import eu.etaxonomy.cdm.api.application.CdmApplicationRemoteController;
import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.service.IService;
import eu.etaxonomy.cdm.config.ICdmSource;
import eu.etaxonomy.cdm.database.DbSchemaValidation;
-import eu.etaxonomy.cdm.database.ICdmDataSource;
import eu.etaxonomy.cdm.ext.geo.IEditGeoService;
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
import eu.etaxonomy.cdm.persistence.hibernate.permission.ICdmPermissionEvaluator;
import eu.etaxonomy.cdm.persistence.hibernate.permission.Role;
-import eu.etaxonomy.cdm.remote.CdmRemoteSourceException;
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.session.ICdmEntitySessionManager;
+import eu.etaxonomy.taxeditor.session.mock.MockCdmEntitySessionManager;
import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
import eu.etaxonomy.taxeditor.view.datasource.CdmDataSourceViewPart;
private ICdmSource cdmSource;
private boolean isConnected;
+
+
/**
* <p>
protected static CdmStore getDefault() {
if (instance != null && instance.isConnected) {
return instance;
- } else if (instance == null || !instance.isConnected) {
+ } else{// if (instance == null || !instance.isConnected) {
- MessagingUtils
- .warningDialog(
- "Application is not connected to a datastore",
- instance,
- "The requested operation is only available when "
- + "connected to a datasource. You may choose a datasource to connect to or create a new one in the datasource view.");
+ MessagingUtils.noDataSourceWarningDialog(instance);
AbstractUtility.showView(CdmDataSourceViewPart.ID);
-
+ return null;
}
-
- throw new RuntimeException();
}
/**
try {
cdmSource = CdmDataSourceRepository.getCurrentCdmSource();
connect(cdmSource);
- } catch (CdmRemoteSourceException e) {
+ } catch (Exception e) {
MessagingUtils.messageDialog("Connection to CDM Source Failed", CdmStore.class, "Could not connect to target CDM Source", e);
}
-
+
}
/**
private CdmStore(ICdmApplicationConfiguration applicationController,
ICdmSource cdmSource) {
- this.applicationConfiguration = applicationController;
+ this.applicationConfiguration = applicationController;
this.cdmSource = cdmSource;
isConnected = true;
}
public static ConversationHolder createConversation() {
ConversationHolder conversation = getCurrentApplicationConfiguration()
.NewConversation();
- try{
+ try {
conversation.startTransaction();
}catch(Exception e){
MessagingUtils.messageDialog("No database connection", CdmStore.class, "No database connection available", e);
}
return conversation;
}
+
+ //FIXME:Remoting should be removed after moving completely to remoting
+ private MockCdmEntitySessionManager mockCdmEntitySessionManager;
+
+ private ICdmEntitySessionManager getSessionManager() {
+ //FIXME:Remoting we should only have CdmApplicationRemoteConfiguration after move to remoting
+ // bad hack which should be finally removed
+ if(getCurrentApplicationConfiguration() instanceof CdmApplicationRemoteController) {
+ return ((CdmApplicationRemoteController)getCurrentApplicationConfiguration()).getCdmEntitySessionManager();
+ } else {
+ if(mockCdmEntitySessionManager == null) {
+ mockCdmEntitySessionManager = new MockCdmEntitySessionManager();
+ }
+ return mockCdmEntitySessionManager;
+ }
+ }
+
+ public static ICdmEntitySessionManager getCurrentSessionManager() {
+ if (getDefault() != null) {
+ return getDefault().getSessionManager();
+ }
+ return null;
+
+ }
/**
* Generic method that will scan the getters of {@link ICdmApplicationConfiguration} for the given service
}
return null;
}
-
+
/**
* <p>
* getDataSource