import org.simantics.application.arguments.IArguments;
import org.simantics.application.arguments.SimanticsArguments;
import org.simantics.db.ReadGraph;
+import org.simantics.db.RequestProcessor;
import org.simantics.db.Resource;
import org.simantics.db.Session;
import org.simantics.db.WriteGraph;
import org.simantics.db.management.SingleSessionContextProviderSource;
import org.simantics.db.request.ReadInterface;
import org.simantics.db.request.WriteInterface;
+import org.simantics.db.service.XSupport;
import org.simantics.internal.FileServiceImpl;
import org.simantics.layer0.Layer0;
import org.simantics.project.IProject;
throw new IllegalStateException("Session unavailable, no database session open");
return ctx.getSession();
}
+
+ public static RequestProcessor getAvailableRequestProcessor() {
+ Object graph = SCLContext.getCurrent().get("graph");
+ if(graph instanceof ReadGraph)
+ return (RequestProcessor)graph;
+ else
+ return Simantics.getSession();
+ }
/**
* Returns the database Session bound to the currently active context.
}
}
+ public static void saveQueries(Session session) {
+ try {
+ XSupport xs = session.getService(XSupport.class);
+ xs.saveQueries();
+ } catch (Exception e) {
+ LOGGER.error("Saving database queries failed.", e);
+ }
+ }
@SuppressWarnings({ "unchecked", "rawtypes" })
public static <T> T applySCL(String module, String function, Object ... args) throws DatabaseException {
} catch (ValueNotFound e) {
throw new DatabaseException("SCL Value not found: " + e.name);
} catch (Throwable t) {
+ if (t instanceof DatabaseException)
+ throw (DatabaseException) t;
throw new DatabaseException(t);
}
}
- @SuppressWarnings({ "unchecked", "rawtypes" })
public static <T> T applySCL(String module, String function, ReadGraph graph, Object ... args) throws DatabaseException {
SCLContext sclContext = SCLContext.getCurrent();
Object oldGraph = sclContext.put("graph", graph);
try {
return (T)f.applyArray(args);
} catch (Throwable t) {
+ if (t instanceof DatabaseException)
+ throw (DatabaseException) t;
throw new DatabaseException(t);
} finally {
sclContext.put("graph", oldGraph);
try {
return (T)f.applyArray(args);
} catch (Throwable t) {
+ if (t instanceof DatabaseException)
+ throw (DatabaseException) t;
throw new DatabaseException(t);
} finally {
sclContext.put("graph", oldGraph);
try {
return function.apply(p0);
} catch (Throwable t) {
+ if (t instanceof DatabaseException)
+ throw (DatabaseException) t;
throw new DatabaseException(t);
} finally {
sclContext.put("graph", oldGraph);
try {
return function.apply(p0);
} catch (Throwable t) {
+ if (t instanceof DatabaseException)
+ throw (DatabaseException) t;
throw new DatabaseException(t);
} finally {
sclContext.put("graph", oldGraph);
try {
return function.apply(p0, p1);
} catch (Throwable t) {
+ if (t instanceof DatabaseException)
+ throw (DatabaseException) t;
throw new DatabaseException(t);
} finally {
sclContext.put("graph", oldGraph);