]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.procore/src/org/simantics/db/procore/internal/ProCoreDriverVirtual.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.procore / src / org / simantics / db / procore / internal / ProCoreDriverVirtual.java
diff --git a/bundles/org.simantics.db.procore/src/org/simantics/db/procore/internal/ProCoreDriverVirtual.java b/bundles/org.simantics.db.procore/src/org/simantics/db/procore/internal/ProCoreDriverVirtual.java
new file mode 100644 (file)
index 0000000..9db9ce6
--- /dev/null
@@ -0,0 +1,83 @@
+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