Merge branch 'release/5.18.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.local / src / main / java / eu / etaxonomy / taxeditor / local / server / CdmStoreLocal.java
1 /**
2 * Copyright (C) 2020 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.taxeditor.local.server;
10
11 import org.eclipse.core.runtime.jobs.Job;
12 import org.eclipse.swt.widgets.Display;
13 import org.springframework.core.io.Resource;
14
15 import eu.etaxonomy.cdm.api.application.ICdmRepository;
16 import eu.etaxonomy.cdm.cache.CdmRemoteCacheManager;
17 import eu.etaxonomy.cdm.config.ICdmSource;
18 import eu.etaxonomy.cdm.database.DbSchemaValidation;
19 import eu.etaxonomy.taxeditor.local.CdmServer;
20 import eu.etaxonomy.taxeditor.model.MessagingUtils;
21 import eu.etaxonomy.taxeditor.store.CdmStore;
22
23
24 /**
25 * @author k.luther
26 * @since Sep 18, 2020
27 */
28 public class CdmStoreLocal extends CdmStore {
29
30 protected static CdmStoreConnectorLocal job;
31 private static CdmServer managedServer;
32 /**
33 * @param repository
34 * @param cdmSource
35 */
36 protected CdmStoreLocal(ICdmRepository repository, ICdmSource cdmSource) {
37 super(repository, cdmSource);
38 // TODO Auto-generated constructor stub
39 }
40
41
42 /**
43 * Initialize with a specific datasource
44 *
45 * @param datasource
46 * a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
47 */
48 public static void connect(ICdmSource cdmSource) {
49 connect(cdmSource, DEFAULT_DB_SCHEMA_VALIDATION,
50 DEFAULT_APPLICATION_CONTEXT);
51 }
52
53 public static void connect(ICdmSource cdmSource, RemotingLoginDialogLocal loginDialog) {
54 connect(cdmSource,
55 DEFAULT_DB_SCHEMA_VALIDATION,
56 DEFAULT_APPLICATION_CONTEXT,
57 loginDialog);
58 }
59
60 /**
61 * Initialize and provide
62 *
63 * @param datasource
64 * @param dbSchemaValidation
65 * @param applicationContextBean
66 */
67 private static void connect(final ICdmSource cdmSource,
68 final DbSchemaValidation dbSchemaValidation,
69 final Resource applicationContextBean) {
70
71 MessagingUtils.info("Connecting to datasource: " + cdmSource);
72
73 job = new CdmStoreConnectorLocal(Display.getDefault(), cdmSource,
74 dbSchemaValidation, applicationContextBean);
75 job.setUser(true);
76 job.setPriority(Job.BUILD);
77 job.schedule();
78 }
79
80 private static void connect(final ICdmSource cdmSource,
81 final DbSchemaValidation dbSchemaValidation,
82 final Resource applicationContextBean,
83 RemotingLoginDialogLocal remotingLoginDialog) {
84 RemotingLoginDialogLocal loginDialog = remotingLoginDialog;
85 if(isActive()) {
86 // before we connect we clear the entity caches and the sessions
87 CdmRemoteCacheManager.removeEntityCaches();
88 if(getCurrentSessionManager(true) != null) {
89 getCurrentSessionManager(true).disposeAll();
90 }
91 }
92 MessagingUtils.info("Connecting to datasource: " + cdmSource);
93
94 job = new CdmStoreConnectorLocal(Display.getDefault(),
95 cdmSource,
96 dbSchemaValidation,
97 applicationContextBean);
98 job.start(loginDialog);
99
100 }
101
102 public static boolean isConnecting() {
103 return job != null && job.getState() == Job.RUNNING;
104 }
105
106 public static void setManagedServer(CdmServer server) {
107 managedServer = server;
108 }
109
110 public static CdmServer getManagedServer() {
111 return managedServer;
112 }
113 }