--- /dev/null
+/**
+* Copyright (C) 2020 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.webapp.server;
+
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.swt.widgets.Display;
+import org.springframework.core.io.Resource;
+
+import eu.etaxonomy.cdm.api.application.ICdmRepository;
+import eu.etaxonomy.cdm.cache.CdmRemoteCacheManager;
+import eu.etaxonomy.cdm.config.ICdmSource;
+import eu.etaxonomy.cdm.database.DbSchemaValidation;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.webapp.CdmServer;
+
+
+/**
+ * @author k.luther
+ * @since Sep 18, 2020
+ */
+public class CdmStoreLocal extends CdmStore {
+
+ protected static CdmStoreConnectorLocal job;
+ private static CdmServer managedServer;
+ /**
+ * @param repository
+ * @param cdmSource
+ */
+ protected CdmStoreLocal(ICdmRepository repository, ICdmSource cdmSource) {
+ super(repository, cdmSource);
+ // TODO Auto-generated constructor stub
+ }
+
+
+ /**
+ * Initialize with a specific datasource
+ *
+ * @param datasource
+ * a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
+ */
+ public static void connect(ICdmSource cdmSource) {
+ connect(cdmSource, DEFAULT_DB_SCHEMA_VALIDATION,
+ DEFAULT_APPLICATION_CONTEXT);
+ }
+
+ public static void connect(ICdmSource cdmSource, RemotingLoginDialogLocal loginDialog) {
+ connect(cdmSource,
+ DEFAULT_DB_SCHEMA_VALIDATION,
+ DEFAULT_APPLICATION_CONTEXT,
+ loginDialog);
+ }
+
+ /**
+ * Initialize and provide
+ *
+ * @param datasource
+ * @param dbSchemaValidation
+ * @param applicationContextBean
+ */
+ private static void connect(final ICdmSource cdmSource,
+ final DbSchemaValidation dbSchemaValidation,
+ final Resource applicationContextBean) {
+
+ MessagingUtils.info("Connecting to datasource: " + cdmSource);
+
+ job = new CdmStoreConnectorLocal(Display.getDefault(), cdmSource,
+ dbSchemaValidation, applicationContextBean);
+ job.setUser(true);
+ job.setPriority(Job.BUILD);
+ job.schedule();
+ }
+
+ private static void connect(final ICdmSource cdmSource,
+ final DbSchemaValidation dbSchemaValidation,
+ final Resource applicationContextBean,
+ RemotingLoginDialogLocal remotingLoginDialog) {
+ RemotingLoginDialogLocal loginDialog = remotingLoginDialog;
+ if(isActive()) {
+ // before we connect we clear the entity caches and the sessions
+ CdmRemoteCacheManager.removeEntityCaches();
+ if(getCurrentSessionManager(true) != null) {
+ getCurrentSessionManager(true).disposeAll();
+ }
+ }
+ MessagingUtils.info("Connecting to datasource: " + cdmSource);
+
+ job = new CdmStoreConnectorLocal(Display.getDefault(),
+ cdmSource,
+ dbSchemaValidation,
+ applicationContextBean);
+ job.start(loginDialog);
+
+ }
+
+ public static boolean isConnecting() {
+ return job != null && job.getState() == Job.RUNNING;
+ }
+
+ public static void setManagedServer(CdmServer server) {
+ managedServer = server;
+ }
+
+ public static CdmServer getManagedServer() {
+ return managedServer;
+ }
+}