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.common.Indexing;
import org.simantics.db.common.procedure.adapter.ProcedureAdapter;
import org.simantics.db.exception.DatabaseException;
import org.simantics.db.exception.RuntimeDatabaseException;
ontologyPolicy = OntologyRecoveryPolicy.ReinstallDatabase;
}
+ if (args.contains(SimanticsArguments.DISABLE_INDEX)) {
+ Indexing.setDefaultDependenciesIndexingEnabled(false);
+ }
+
+ String databaseDriverId = defaultDatabaseDriverId;
+ if (args.contains(SimanticsArguments.DATABASE_ID)) {
+ databaseDriverId = args.get(SimanticsArguments.DATABASE_ID);
+ Simantics.setDefaultDatabaseDriver(databaseDriverId);
+ }
+
int localPort = 0;
if (args.contains(SimanticsArguments.LOCAL_SERVER_PORT)) {
try {
// }
// }
- return startUpHeadless(progress, workspacePolicy, ontologyPolicy, localPort /*, remoteDatabase*/);
+ return startUpHeadless(progress, workspacePolicy, ontologyPolicy, localPort, databaseDriverId /*, remoteDatabase*/);
}
/**
* @return
* @throws PlatformException
*/
- public static ISessionContext startUpHeadless(IProgressMonitor progress, RecoveryPolicy workspacePolicy, OntologyRecoveryPolicy ontologyPolicy, int localPort) throws PlatformException {
+ public static ISessionContext startUpHeadless(IProgressMonitor progress, RecoveryPolicy workspacePolicy, OntologyRecoveryPolicy ontologyPolicy, int localPort, String databaseDriverId) throws PlatformException {
if (SimanticsPlatform.INSTANCE.sessionContext != null) {
throw new RuntimeDatabaseException("Simantics is already up and running.");
}
if (progress == null)
progress = new NullProgressMonitor();
- return SimanticsPlatform.INSTANCE.startUp(defaultDatabaseDriverId, progress, workspacePolicy, ontologyPolicy, true, new ConsoleUserAgent());
+ return SimanticsPlatform.INSTANCE.startUp(databaseDriverId, progress, workspacePolicy, ontologyPolicy, true, new ConsoleUserAgent());
}
/**
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.
@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 {
- T t = (T)((Function)SCLOsgi.MODULE_REPOSITORY.getValue(module, function)).applyArray(args);
- return t;
- } catch (ValueNotFound e) {
- throw new DatabaseException("SCL Value not found: " + e.name);
- } catch (Throwable t) {
- throw new DatabaseException(t);
- } finally {
- sclContext.put("graph", oldGraph);
- }
+ public static <T> T applySCL(String module, String function, Object ... args) throws DatabaseException {
+ try {
+ T t = (T)((Function)SCLOsgi.MODULE_REPOSITORY.getValue(module, function)).applyArray(args);
+ return t;
+ } 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);
+ }
+ }
+ 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 applySCL(module, function, args);
+ } catch (DatabaseException dbe) {
+ throw dbe;
+ } catch (Throwable t) {
+ throw new DatabaseException(t);
+ } finally {
+ sclContext.put("graph", oldGraph);
+ }
}
@SuppressWarnings("unchecked")
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);