]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.acorn/src/org/simantics/acorn/AcornDriver.java
Merge remote-tracking branch 'origin/svn' commit 'ccc1271c9d6657fb9dcf4cf3cb115fa0c8c...
[simantics/platform.git] / bundles / org.simantics.acorn / src / org / simantics / acorn / AcornDriver.java
1 package org.simantics.acorn;
2
3 import java.nio.file.Path;
4 import java.nio.file.Paths;
5 import java.util.Properties;
6
7 import org.simantics.db.DatabaseUserAgent;
8 import org.simantics.db.Driver;
9 import org.simantics.db.ServerI;
10 import org.simantics.db.ServerReference;
11 import org.simantics.db.Session;
12 import org.simantics.db.SessionReference;
13 import org.simantics.db.exception.DatabaseException;
14
15 public class AcornDriver implements Driver {
16
17     public static final String AcornDriverName = "acorn";
18
19     @Override
20     public String getName() {
21         return AcornDriverName;
22     }
23
24     @Override
25     public DatabaseUserAgent getDatabaseUserAgent(String address) throws DatabaseException {
26         Path dbFolder = Paths.get(address);
27         return AcornDatabaseManager.getDatabase(dbFolder).getUserAgent();
28     }
29
30     @Override
31     public void setDatabaseUserAgent(String address, DatabaseUserAgent dbUserAgent) throws DatabaseException {
32         Path dbFolder = Paths.get(address);
33         AcornDatabaseManager.getDatabase(dbFolder).setUserAgent(dbUserAgent);
34     }
35
36     @Override
37     public Session getSession(String address, Properties properties) throws DatabaseException {
38         Path dbFolder = Paths.get(address);
39         Session session = AcornSessionManagerImpl.getInstance().createSession(new SessionReference() {
40             
41             @Override
42             public ServerReference getServerReference() {
43                 return new ServerReference() {
44                     
45                     @Override
46                     public Path getDBFolder() {
47                         return dbFolder;
48                     }
49                 };
50             }
51
52             @Override
53             public long getSessionId() {
54                 return 0L;
55             }
56         }, null);
57         if (!properties.containsKey("clientId"))
58             properties.put("clientId", dbFolder.toFile().getAbsolutePath());
59         session.registerService(Properties.class, properties);
60         Session s = session.peekService(Session.class);
61         if (null == s)
62             session.registerService(Session.class, session);
63         return session;
64     }
65
66     @Override
67     public ServerI getServer(String address, Properties properties) throws DatabaseException {
68         return new ServerI() {
69             
70             @Override
71             public void stop() throws DatabaseException {
72                 // nop
73             }
74             
75             @Override
76             public void start() throws DatabaseException {
77                 // nop
78             }
79             
80             @Override
81             public boolean isActive() throws DatabaseException {
82                 return true;
83             }
84             
85             @Override
86             public String getAddress() throws DatabaseException {
87                 return address;
88             }
89             
90             @Override
91             public String executeAndDisconnect(String command) throws DatabaseException {
92                 return "";
93             }
94             
95             @Override
96             public String execute(String command) throws DatabaseException {
97                 return "";
98             }
99         };
100     }
101
102     @Override
103     public Management getManagement(String address, Properties properties) throws DatabaseException {
104         Path dbFolder = Paths.get(address);
105         return new AcornManagement(dbFolder, properties);
106     }
107
108 }