]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.acorn/src/org/simantics/acorn/AcornDriver.java
Merge commit 'b809a171b6dfb81ed9ef9e84870dcbcbc5912f0e'
[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 AcornServerI(address);
69     }
70
71     @Override
72     public Management getManagement(String address, Properties properties) throws DatabaseException {
73         Path dbFolder = Paths.get(address);
74         return new AcornManagement(dbFolder, properties);
75     }
76     
77     private static class AcornServerI implements ServerI {
78         
79         private String address;
80
81         public AcornServerI(String address) {
82             this.address = address;
83         }
84         
85         @Override
86         public void stop() throws DatabaseException {
87             AcornDatabaseManager.getDatabase(Paths.get(address)).tryToStop();
88         }
89         
90         @Override
91         public void start() throws DatabaseException {
92             AcornDatabaseManager.getDatabase(Paths.get(address)).start();
93         }
94         
95         @Override
96         public boolean isActive() throws DatabaseException {
97             return AcornDatabaseManager.getDatabase(Paths.get(address)).isRunning();
98         }
99         
100         @Override
101         public String getAddress() throws DatabaseException {
102             return address;
103         }
104         
105         @Override
106         public String executeAndDisconnect(String command) throws DatabaseException {
107             return "";
108         }
109         
110         @Override
111         public String execute(String command) throws DatabaseException {
112             return "";
113         }
114     }
115
116 }