]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.application/src/org/simantics/application/db/DatabaseHandle.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.application / src / org / simantics / application / db / DatabaseHandle.java
index f81a7b8a341e05d1bedfdb5601a6148e0f2e96f9..3856e37d4c1e708dce153b984a932c36abc638ea 100644 (file)
-/*******************************************************************************\r
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- *     VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.application.db;\r
-\r
-import java.io.IOException;\r
-\r
-import org.simantics.application.arguments.Arguments;\r
-import org.simantics.application.arguments.IArguments;\r
-import org.simantics.application.arguments.SimanticsArguments;\r
-import org.simantics.db.ServerI;\r
-import org.simantics.db.Session;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.service.LifecycleSupport;\r
-import org.simantics.utils.datastructures.disposable.AbstractDisposable;\r
-import org.simantics.utils.datastructures.disposable.IDisposable;\r
-\r
-public class DatabaseHandle extends AbstractDisposable implements IDatabaseHandle, IDisposable {\r
-\r
-    private ServerI       server;\r
-\r
-    private Session       session;\r
-\r
-    @SuppressWarnings("unused")\r
-    private final boolean deleteAtDispose;\r
-\r
-    /**\r
-     * @param arguments\r
-     * @return\r
-     * @throws Exception\r
-     */\r
-    public static DatabaseHandle open(String[] arguments) throws Exception {\r
-        IArguments args = Arguments.parse(arguments, SimanticsArguments.SERVER);\r
-        if (!args.contains(SimanticsArguments.SERVER))\r
-            throw new IllegalArgumentException("Missing " + SimanticsArguments.SERVER.getArgument() + " argument, a server is required.");\r
-\r
-        DatabaseHandle handle = new DatabaseHandle();\r
-        handle.init(args.get(SimanticsArguments.SERVER), false);\r
-        return handle;\r
-    }\r
-\r
-    /**\r
-     * @param arguments\r
-     * @return\r
-     * @throws Exception\r
-     */\r
-    public static DatabaseHandle open(String serverAddress) throws Exception {\r
-        return new DatabaseHandle().init(serverAddress, false);\r
-    }\r
-\r
-//    /**\r
-//     * @param arguments\r
-//     * @return\r
-//     * @throws Exception\r
-//     */\r
-//    public static DatabaseHandle open(ServerAddress address) throws Exception {\r
-//        return DatabaseHandle.open(address.getDbid());\r
-//    }\r
-\r
-    /**\r
-     * @param arguments\r
-     * @return\r
-     * @throws Exception\r
-     */\r
-    public static DatabaseHandle checkout(String serverAddress) throws Exception {\r
-        return new DatabaseHandle().init(serverAddress, true);\r
-    }\r
-\r
-//    /**\r
-//     * @param arguments\r
-//     * @return\r
-//     * @throws Exception\r
-//     */\r
-//    public static DatabaseHandle checkout(ServerAddress address) throws Exception {\r
-//        return new DatabaseHandle().init(address.getDbid(), true);\r
-//    }\r
-\r
-    private DatabaseHandle() {\r
-        deleteAtDispose = false;\r
-    }\r
-\r
-    /**\r
-     * @param arguments\r
-     * @param deleteAtDispose\r
-     * @throws Exception\r
-     */\r
-    public DatabaseHandle(String[] arguments, boolean deleteAtDispose) throws Exception {\r
-        this.deleteAtDispose = deleteAtDispose;\r
-\r
-        IArguments args = Arguments.parse(arguments,\r
-                SimanticsArguments.SERVER,\r
-                SimanticsArguments.CHECKOUT);\r
-\r
-        if (!args.contains(SimanticsArguments.SERVER))\r
-            throw new IllegalArgumentException("Missing " + SimanticsArguments.SERVER.getArgument() + " argument, a server is required.");\r
-        boolean checkout = args.contains(SimanticsArguments.CHECKOUT);\r
-\r
-        init(args.get(SimanticsArguments.SERVER), checkout);\r
-    }\r
-\r
-    /**\r
-     * @param checkout\r
-     * @return this\r
-     * @throws Exception\r
-     * @throws IOException\r
-     */\r
-    private DatabaseHandle init(String serverAddress, boolean checkout) throws IOException, Exception {\r
-        if (checkout) {\r
-            // Let UndoCoreManager pick a port on localhost for the working\r
-            // copy by setting the address of the local ServerInfo to null.\r
-            throw new UnsupportedOperationException("re-implement checkout");\r
-//            activation = UndoCoreManager.getManager().checkout(\r
-//                    new ServerInfo("Remote Server", server),\r
-//                    new ServerInfo(UUID.randomUUID().toString()));\r
-//\r
-//            ServerAddress localServer = activation.getDescriptor().getLocal().getAddress();\r
-//            session = DatabaseUtils.connect(localServer);\r
-        } else {\r
-            session = DatabaseUtils.connect(serverAddress);\r
-//            session = DatabaseUtils.connect(new ServerAddress("", 0, serverAddress));\r
-        }\r
-\r
-        return this;\r
-    }\r
-\r
-    @Override\r
-    protected void doDispose() {\r
-        // TODO: make this robust and safe\r
-\r
-        if (session != null) {\r
-            try {\r
-                LifecycleSupport support = session.getService(LifecycleSupport.class);\r
-                support.close(-1, false);\r
-                session = null;\r
-            } catch (DatabaseException e) {\r
-            }\r
-        }\r
-\r
-//        if (activation != null) {\r
-//            try {\r
-//                UndoCoreManager manager = UndoCoreManager.getManager();\r
-//                manager.deactivate(activation, 3000, TimeUnit.MILLISECONDS);\r
-//\r
-//                if (deleteAtDispose) {\r
-//                    IServerDescriptor desc = activation.getDescriptor();\r
-//                    manager.deleteLocal(new ServerInfo[] { desc.getParent(), desc.getLocal() });\r
-//                }\r
-//            } catch (IOException e) {\r
-//            } catch (InterruptedException e) {\r
-//            }\r
-//            activation = null;\r
-//        }\r
-    }\r
-\r
-    /* (non-Javadoc)\r
-     * @see org.simantics.application.db.IDatabaseHandle#getServer()\r
-     */\r
-    @Override\r
-    public ServerI getServer() {\r
-        return server;\r
-    }\r
-\r
-    /* (non-Javadoc)\r
-     * @see org.simantics.application.db.IDatabaseHandle#getSession()\r
-     */\r
-    @Override\r
-    public Session getSession() {\r
-        return session;\r
-    }\r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.application.db;
+
+import java.io.IOException;
+
+import org.simantics.application.arguments.Arguments;
+import org.simantics.application.arguments.IArguments;
+import org.simantics.application.arguments.SimanticsArguments;
+import org.simantics.db.ServerI;
+import org.simantics.db.Session;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.service.LifecycleSupport;
+import org.simantics.utils.datastructures.disposable.AbstractDisposable;
+import org.simantics.utils.datastructures.disposable.IDisposable;
+
+public class DatabaseHandle extends AbstractDisposable implements IDatabaseHandle, IDisposable {
+
+    private ServerI       server;
+
+    private Session       session;
+
+    @SuppressWarnings("unused")
+    private final boolean deleteAtDispose;
+
+    /**
+     * @param arguments
+     * @return
+     * @throws Exception
+     */
+    public static DatabaseHandle open(String[] arguments) throws Exception {
+        IArguments args = Arguments.parse(arguments, SimanticsArguments.SERVER);
+        if (!args.contains(SimanticsArguments.SERVER))
+            throw new IllegalArgumentException("Missing " + SimanticsArguments.SERVER.getArgument() + " argument, a server is required.");
+
+        DatabaseHandle handle = new DatabaseHandle();
+        handle.init(args.get(SimanticsArguments.SERVER), false);
+        return handle;
+    }
+
+    /**
+     * @param arguments
+     * @return
+     * @throws Exception
+     */
+    public static DatabaseHandle open(String serverAddress) throws Exception {
+        return new DatabaseHandle().init(serverAddress, false);
+    }
+
+//    /**
+//     * @param arguments
+//     * @return
+//     * @throws Exception
+//     */
+//    public static DatabaseHandle open(ServerAddress address) throws Exception {
+//        return DatabaseHandle.open(address.getDbid());
+//    }
+
+    /**
+     * @param arguments
+     * @return
+     * @throws Exception
+     */
+    public static DatabaseHandle checkout(String serverAddress) throws Exception {
+        return new DatabaseHandle().init(serverAddress, true);
+    }
+
+//    /**
+//     * @param arguments
+//     * @return
+//     * @throws Exception
+//     */
+//    public static DatabaseHandle checkout(ServerAddress address) throws Exception {
+//        return new DatabaseHandle().init(address.getDbid(), true);
+//    }
+
+    private DatabaseHandle() {
+        deleteAtDispose = false;
+    }
+
+    /**
+     * @param arguments
+     * @param deleteAtDispose
+     * @throws Exception
+     */
+    public DatabaseHandle(String[] arguments, boolean deleteAtDispose) throws Exception {
+        this.deleteAtDispose = deleteAtDispose;
+
+        IArguments args = Arguments.parse(arguments,
+                SimanticsArguments.SERVER,
+                SimanticsArguments.CHECKOUT);
+
+        if (!args.contains(SimanticsArguments.SERVER))
+            throw new IllegalArgumentException("Missing " + SimanticsArguments.SERVER.getArgument() + " argument, a server is required.");
+        boolean checkout = args.contains(SimanticsArguments.CHECKOUT);
+
+        init(args.get(SimanticsArguments.SERVER), checkout);
+    }
+
+    /**
+     * @param checkout
+     * @return this
+     * @throws Exception
+     * @throws IOException
+     */
+    private DatabaseHandle init(String serverAddress, boolean checkout) throws IOException, Exception {
+        if (checkout) {
+            // Let UndoCoreManager pick a port on localhost for the working
+            // copy by setting the address of the local ServerInfo to null.
+            throw new UnsupportedOperationException("re-implement checkout");
+//            activation = UndoCoreManager.getManager().checkout(
+//                    new ServerInfo("Remote Server", server),
+//                    new ServerInfo(UUID.randomUUID().toString()));
+//
+//            ServerAddress localServer = activation.getDescriptor().getLocal().getAddress();
+//            session = DatabaseUtils.connect(localServer);
+        } else {
+            session = DatabaseUtils.connect(serverAddress);
+//            session = DatabaseUtils.connect(new ServerAddress("", 0, serverAddress));
+        }
+
+        return this;
+    }
+
+    @Override
+    protected void doDispose() {
+        // TODO: make this robust and safe
+
+        if (session != null) {
+            try {
+                LifecycleSupport support = session.getService(LifecycleSupport.class);
+                support.close(-1, false);
+                session = null;
+            } catch (DatabaseException e) {
+            }
+        }
+
+//        if (activation != null) {
+//            try {
+//                UndoCoreManager manager = UndoCoreManager.getManager();
+//                manager.deactivate(activation, 3000, TimeUnit.MILLISECONDS);
+//
+//                if (deleteAtDispose) {
+//                    IServerDescriptor desc = activation.getDescriptor();
+//                    manager.deleteLocal(new ServerInfo[] { desc.getParent(), desc.getLocal() });
+//                }
+//            } catch (IOException e) {
+//            } catch (InterruptedException e) {
+//            }
+//            activation = null;
+//        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.simantics.application.db.IDatabaseHandle#getServer()
+     */
+    @Override
+    public ServerI getServer() {
+        return server;
+    }
+
+    /* (non-Javadoc)
+     * @see org.simantics.application.db.IDatabaseHandle#getSession()
+     */
+    @Override
+    public Session getSession() {
+        return session;
+    }
+
+}