X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Finternal%2FSimanticsInternal.java;h=8ae309e6825c9d01af3ded4c754db378a42d55e9;hb=refs%2Fchanges%2F66%2F1266%2F1;hp=ce4fd23d9bb4436c4e563a3e9e4333e14fd7fc85;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git
diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/internal/SimanticsInternal.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/internal/SimanticsInternal.java
index ce4fd23d9..8ae309e68 100644
--- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/internal/SimanticsInternal.java
+++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/internal/SimanticsInternal.java
@@ -1,206 +1,206 @@
-/*******************************************************************************
- * 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.db.layer0.internal;
-
-import java.io.File;
-import java.util.concurrent.TimeUnit;
-
-import org.eclipse.core.runtime.Platform;
-import org.simantics.db.Resource;
-import org.simantics.db.Session;
-import org.simantics.db.exception.DatabaseException;
-import org.simantics.db.layer0.util.SimanticsClipboard;
-import org.simantics.db.layer0.util.SimanticsKeys;
-import org.simantics.db.management.ISessionContext;
-import org.simantics.db.management.ISessionContextProvider;
-import org.simantics.db.management.ISessionContextProviderSource;
-import org.simantics.db.request.ReadInterface;
-import org.simantics.db.request.WriteInterface;
-import org.simantics.layer0.Layer0;
-import org.simantics.operation.Layer0X;
-import org.simantics.utils.threads.ThreadUtils;
-
-/**
- * An internal facade for accessing basic Simantics platform services.
- * Usable without a graphical UI, i.e. in headless contexts.
- *
- * Use org.simantics.Simantics instead where ever possible.
- */
-public class SimanticsInternal {
-
- private static ISessionContextProviderSource providerSource = null;
-
- /**
- * Queue execution of a runnable.
- *
- * @param runnable
- */
- public static void async(Runnable runnable) {
- ThreadUtils.getBlockingWorkExecutor().execute(runnable);
- }
-
- public static void async(Runnable runnable, int delay, TimeUnit unit) {
- ThreadUtils.getTimer().schedule(runnable, delay, unit);
- }
-
- /**
- * Queue execution of a non-blocking runnable. Use this method with caution.
- * A non-blocking runnable nevers locks anything, No Locks, No semaphores,
- * No Object.wait(), No synchronized() {} blocks.
- *
- * @param runnable a non-blocking runnable
- */
- public static void asyncNonblocking(Runnable runnable) {
- ThreadUtils.getNonBlockingWorkExecutor().execute(runnable);
- }
-
- /**
- * Schedule execution of a non-blocking runnable. Use this method with caution.
- * A non-blocking runnable never locks anything, No Locks, No semaphores,
- * No Object,wait(), No synchronized() {} blocks.
- *
- * @param runnable a non-blocking runnable
- * @param initialDelay
- * @param period
- */
- public static void asyncNonblocking(Runnable runnable, int initialDelay, int period) {
- ThreadUtils.getNonBlockingWorkExecutor().scheduleAtFixedRate(runnable, initialDelay, period, TimeUnit.MILLISECONDS);
- }
-
- public static synchronized ISessionContext setSessionContext(ISessionContext ctx) {
- return getSessionContextProvider().setSessionContext(ctx);
- }
-
- public static void setSessionContextProviderSource(ISessionContextProviderSource source) {
- if (source == null)
- throw new IllegalArgumentException("null provider source");
- providerSource = source;
- }
-
- public static ISessionContextProviderSource getProviderSource() {
- if (providerSource == null)
- throw new IllegalStateException(
- "providerSource must be initialized by the application before using class Simantics");
- return providerSource;
- }
-
- public static ISessionContextProvider getSessionContextProvider() {
- return getProviderSource().getActive();
- }
-
- /**
- * Returns the database session context associated with the currently active
- * context. This method should be used to retrieve session contexts only
- * when the client is sure that the correct context is active.
- *
- * @return the session context associated with the currently active context
- * or null
if the context has no session context
- */
- public static ISessionContext getSessionContext() {
- ISessionContextProvider provider = getSessionContextProvider();
- return provider != null ? provider.getSessionContext() : null;
- }
-
- /**
- * Returns the database Session bound to the currently active context.
- *
- *
- * The method always returns a non-null Session or produces an - * IllegalStateException if a Session was not attainable. - *
- * - * @return the Session bound to the currently active workbench window - * @throws IllegalStateException if no Session was available - */ - public static Session getSession() { - ISessionContext ctx = getSessionContext(); - if (ctx == null) - throw new IllegalStateException("Session unavailable, no database session open"); - return ctx.getSession(); - } - - /** - * Returns the database Session bound to the currently active context. - * Differently from {@link #getSession()}, this method returns - *null
if there is no current Session available.
- *
- * @see #getSession()
- * @return the Session bound to the currently active context or
- * null
- */
- public static Session peekSession() {
- ISessionContext ctx = getSessionContext();
- return ctx == null ? null : ctx.peekSession();
- }
-
- /**
- * @return the currently open and active project as an IProject
- * @throws IllegalStateException if there is no currently active database
- * session, which also means there is no active project at the
- * moment
- */
- public static Resource getProject() {
- ISessionContext ctx = getSessionContext();
- if (ctx == null)
- throw new IllegalStateException("No current database session");
- return ctx.getHint(SimanticsKeys.KEY_PROJECT);
- }
-
- /**
- * @return the currently open and active project as an IProject or null if
- * there is either no project or no active database session
- */
- public static Resource peekProject() {
- ISessionContext ctx = getSessionContext();
- return ctx != null ? (Resource) ctx.getHint(SimanticsKeys.KEY_PROJECT) : null;
- }
-
- private static SimanticsClipboard clipboard = SimanticsClipboard.EMPTY;
-
- /**
- * @param content
- */
- public static void setClipboard(SimanticsClipboard content) {
- if (content == null)
- throw new NullPointerException("null clipboard content");
- clipboard = content;
- }
-
- public static SimanticsClipboard getClipboard() {
- return clipboard;
- }
-
- public static Layer0 getLayer0() throws DatabaseException {
- return Layer0.getInstance(getSession());
- }
-
- public static Layer0X getLayer0X() throws DatabaseException {
- return Layer0X.getInstance(getSession());
- }
-
-
- public static null
if the context has no session context
+ */
+ public static ISessionContext getSessionContext() {
+ ISessionContextProvider provider = getSessionContextProvider();
+ return provider != null ? provider.getSessionContext() : null;
+ }
+
+ /**
+ * Returns the database Session bound to the currently active context.
+ *
+ * + * The method always returns a non-null Session or produces an + * IllegalStateException if a Session was not attainable. + *
+ * + * @return the Session bound to the currently active workbench window + * @throws IllegalStateException if no Session was available + */ + public static Session getSession() { + ISessionContext ctx = getSessionContext(); + if (ctx == null) + throw new IllegalStateException("Session unavailable, no database session open"); + return ctx.getSession(); + } + + /** + * Returns the database Session bound to the currently active context. + * Differently from {@link #getSession()}, this method returns + *null
if there is no current Session available.
+ *
+ * @see #getSession()
+ * @return the Session bound to the currently active context or
+ * null
+ */
+ public static Session peekSession() {
+ ISessionContext ctx = getSessionContext();
+ return ctx == null ? null : ctx.peekSession();
+ }
+
+ /**
+ * @return the currently open and active project as an IProject
+ * @throws IllegalStateException if there is no currently active database
+ * session, which also means there is no active project at the
+ * moment
+ */
+ public static Resource getProject() {
+ ISessionContext ctx = getSessionContext();
+ if (ctx == null)
+ throw new IllegalStateException("No current database session");
+ return ctx.getHint(SimanticsKeys.KEY_PROJECT);
+ }
+
+ /**
+ * @return the currently open and active project as an IProject or null if
+ * there is either no project or no active database session
+ */
+ public static Resource peekProject() {
+ ISessionContext ctx = getSessionContext();
+ return ctx != null ? (Resource) ctx.getHint(SimanticsKeys.KEY_PROJECT) : null;
+ }
+
+ private static SimanticsClipboard clipboard = SimanticsClipboard.EMPTY;
+
+ /**
+ * @param content
+ */
+ public static void setClipboard(SimanticsClipboard content) {
+ if (content == null)
+ throw new NullPointerException("null clipboard content");
+ clipboard = content;
+ }
+
+ public static SimanticsClipboard getClipboard() {
+ return clipboard;
+ }
+
+ public static Layer0 getLayer0() throws DatabaseException {
+ return Layer0.getInstance(getSession());
+ }
+
+ public static Layer0X getLayer0X() throws DatabaseException {
+ return Layer0X.getInstance(getSession());
+ }
+
+
+ public static