--- /dev/null
+package org.simantics.db.procore.internal;\r
+\r
+import java.io.IOException;\r
+import java.util.Properties;\r
+\r
+import org.simantics.db.DatabaseUserAgent;\r
+import org.simantics.db.Driver;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.ServerI;\r
+import org.simantics.db.Session;\r
+import org.simantics.db.authentication.UserAuthenticationAgent;\r
+import org.simantics.db.authentication.UserAuthenticator;\r
+import org.simantics.db.common.auth.UserAuthenticationAgents;\r
+import org.simantics.db.common.request.ReadRequest;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.procore.ProCoreDriver;\r
+import org.simantics.layer0.Layer0;\r
+\r
+import fi.vtt.simantics.procore.BackdoorAuthenticator;\r
+import fi.vtt.simantics.procore.SessionManagerSource;\r
+import fi.vtt.simantics.procore.internal.SessionImplVirtual;\r
+import fi.vtt.simantics.procore.internal.SessionImplVirtualInit;\r
+\r
+public class ProCoreDriverVirtual implements Driver {\r
+ private static final Boolean DEBUG = true;\r
+ private final UserAuthenticator authenticator = new BackdoorAuthenticator();\r
+ private final UserAuthenticationAgent agent = UserAuthenticationAgents.staticAgent(authenticator);\r
+\r
+ public ProCoreDriverVirtual() {\r
+ initLogging();\r
+ }\r
+\r
+ private void initLogging() {\r
+ try {\r
+ SessionManagerSource.getSessionManager();\r
+ } catch (IOException e) {\r
+ if (DEBUG)\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public Session getSession(String address, Properties args) throws DatabaseException {\r
+ Session s = new SessionImplVirtual(agent);\r
+ if (args.containsKey("builtinInitializer"))\r
+ return new SessionImplVirtualInit(agent);\r
+ else if (args.containsKey("noinitialise")) {\r
+ if (DEBUG)\r
+ System.out.println("noinitialise");\r
+ } else {\r
+ s.syncRequest(new ReadRequest() {\r
+ @Override\r
+ public void run(ReadGraph g) {\r
+ // Registers Builtins with the session ServiceLocator.\r
+ Layer0.getInstance(g);\r
+ }\r
+ });\r
+ }\r
+ return s;\r
+ }\r
+\r
+ @Override\r
+ public ServerI getServer(String address, Properties info) throws DatabaseException {\r
+ return SessionImplVirtual.newVirtualProCoreServer();\r
+ }\r
+\r
+ @Override\r
+ public String getName() {\r
+ return ProCoreDriver.ProCoreDriverNameVirtual;\r
+ }\r
+ @Override\r
+ public DatabaseUserAgent getDatabaseUserAgent(String address) {\r
+ return null;\r
+ }\r
+ @Override\r
+ public void setDatabaseUserAgent(String address, DatabaseUserAgent dbUserAgent) {\r
+ }\r
+ @Override\r
+ public Management getManagement(String address, Properties info) throws DatabaseException {\r
+ return null; // No management for virtual database.\r
+ }\r
+\r
+}\r