Project

General

Profile

Download (3.17 KB) Statistics
| Branch: | Tag: | Revision:
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.remote.store;
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.model.MessagingUtils;
20
import eu.etaxonomy.taxeditor.remote.ui.RemotingLoginDialog;
21
import eu.etaxonomy.taxeditor.store.CdmStore;
22

    
23
/**
24
 * @author k.luther
25
 * @since Sep 17, 2020
26
 */
27
public class CdmStoreRemote extends CdmStore {
28

    
29
    protected static CdmStoreConnector job;
30

    
31
    public CdmStoreRemote(ICdmRepository repository,
32
            ICdmSource cdmSource){
33
        super(repository, cdmSource);
34
    }
35
    public static void connect(ICdmSource cdmSource, RemotingLoginDialog loginDialog) {
36
        connect(cdmSource,
37
                DEFAULT_DB_SCHEMA_VALIDATION,
38
                DEFAULT_APPLICATION_CONTEXT,
39
                loginDialog);
40
    }
41

    
42
    private static void connect(final ICdmSource cdmSource,
43
            final DbSchemaValidation dbSchemaValidation,
44
            final Resource applicationContextBean,
45
            RemotingLoginDialog remotingLoginDialog) {
46
        RemotingLoginDialog loginDialog = remotingLoginDialog;
47
        if(isActive()) {
48
            // before we connect we clear the entity caches and the sessions
49
           CdmRemoteCacheManager.removeEntityCaches();
50
            if(getCurrentSessionManager(true) != null) {
51
                getCurrentSessionManager(true).disposeAll();
52
            }
53
        }
54
        MessagingUtils.info("Connecting to datasource: " + cdmSource);
55

    
56
        job = new CdmStoreConnector(Display.getDefault(),
57
                cdmSource,
58
                dbSchemaValidation,
59
                applicationContextBean);
60
        job.start(loginDialog);
61

    
62
    }
63
    /**
64
     * Initialize and provide
65
     *
66
     * @param datasource
67
     * @param dbSchemaValidation
68
     * @param applicationContextBean
69
     */
70
    private static void connect(final ICdmSource cdmSource,
71
            final DbSchemaValidation dbSchemaValidation,
72
            final Resource applicationContextBean) {
73

    
74
        MessagingUtils.info("Connecting to datasource: " + cdmSource);
75

    
76
        job = new CdmStoreConnector(Display.getDefault(), cdmSource,
77
                dbSchemaValidation, applicationContextBean);
78
        job.setUser(true);
79
        job.setPriority(Job.BUILD);
80
        job.schedule();
81
    }
82

    
83

    
84

    
85
    public static boolean isConnecting() {
86
        return job != null && job.getState() == Job.RUNNING;
87
    }
88

    
89
    /**
90
     * Initialize with a specific datasource
91
     *
92
     * @param datasource
93
     *            a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
94
     */
95
    public static void connect(ICdmSource cdmSource) {
96
        connect(cdmSource, DEFAULT_DB_SCHEMA_VALIDATION,
97
                DEFAULT_APPLICATION_CONTEXT);
98
    }
99
}
(2-2/2)