import org.simantics.db.common.procedure.wrapper.NoneToAsyncProcedure;
import org.simantics.db.common.procedure.wrapper.SyncToAsyncProcedure;
import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.exception.NoSingleResultException;
import org.simantics.db.impl.ClusterI;
import org.simantics.db.impl.ClusterI.ClusterTypeEnum;
import org.simantics.db.impl.ForEachObjectContextProcedure;
import org.simantics.db.procore.cluster.ValueTableSmall;
import org.simantics.db.request.AsyncRead;
import org.simantics.db.service.DirectQuerySupport;
-import org.simantics.utils.datastructures.Callback;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class DirectQuerySupportImpl implements DirectQuerySupport {
+ private static final Logger LOGGER = LoggerFactory.getLogger(DirectQuerySupportImpl.class);
+
final private SessionImplSocket session;
DirectQuerySupportImpl(SessionImplSocket session) {
if(subject < 0) {
if(!SessionImplSocket.areVirtualStatementsLoaded(session.virtualGraphServerSupport, subject, predicate)) {
- SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, predicate, new Callback<ReadGraphImpl>() {
-
- @Override
- public void run(ReadGraphImpl graph) {
- getRelatedValue4(graph, subject, context, procedure);
- }
-
- });
+ SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, predicate,
+ g -> getRelatedValue4(g, subject, context, procedure)
+ );
return;
}
final org.simantics.db.procore.cluster.ClusterImpl cluster = session.clusterTable.getClusterByResourceKey(subject);
if(!cluster.isLoaded()) {
- cluster.load(session.clusterTranslator, new Runnable() {
-
- @Override
- public void run() {
- getRelatedValue4(graph, subject, context, procedure);
- }
-
- });
+ cluster.load(session.clusterTranslator, () -> getRelatedValue4(graph, subject, context, procedure));
return;
}
if(cluster.hasVirtual() && session.virtualGraphServerSupport.virtuals.contains(subject)) {
if(!SessionImplSocket.areVirtualStatementsLoaded(session.virtualGraphServerSupport, subject, predicate)) {
- SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, predicate, new Callback<ReadGraphImpl>() {
-
- @Override
- public void run(ReadGraphImpl graph) {
- getRelatedValue4(graph, subject, context, procedure);
- }
-
- });
+ SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, predicate,
+ g -> getRelatedValue4(g, subject, context, procedure)
+ );
return;
}
if(subject < 0) {
if(!SessionImplSocket.areVirtualStatementsLoaded(session.virtualGraphServerSupport, subject)) {
- SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, new Callback<ReadGraphImpl>() {
-
- @Override
- public void run(ReadGraphImpl graph) {
- getValue4(graph, containerCluster, subject, procedure);
- }
-
- });
+ SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject,
+ g -> getValue4(g, containerCluster, subject, procedure)
+ );
return;
}
if(cluster.hasVirtual() && session.virtualGraphServerSupport.virtuals.contains(subject)) {
if(!SessionImplSocket.areVirtualStatementsLoaded(session.virtualGraphServerSupport, subject)) {
- SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, new Callback<ReadGraphImpl>() {
-
- @Override
- public void run(ReadGraphImpl graph) {
- getValue4(graph, containerCluster, subject, procedure);
- }
-
- });
+ SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject,
+ g -> getValue4(g, containerCluster, subject, procedure)
+ );
return;
}
if(subject < 0) {
if(!SessionImplSocket.areVirtualStatementsLoaded(session.virtualGraphServerSupport, subject)) {
- SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, new Callback<ReadGraphImpl>() {
-
- @Override
- public void run(ReadGraphImpl graph) {
- getValue4(graph, containerCluster, subject, context, procedure);
- }
-
- });
+ SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject,
+ g -> getValue4(g, containerCluster, subject, context, procedure)
+ );
return;
}
if(cluster.hasVirtual() && session.virtualGraphServerSupport.virtuals.contains(subject)) {
if(!SessionImplSocket.areVirtualStatementsLoaded(session.virtualGraphServerSupport, subject)) {
- SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, new Callback<ReadGraphImpl>() {
-
- @Override
- public void run(ReadGraphImpl graph) {
- getValue4(graph, containerCluster, subject, context, procedure);
- }
-
- });
+ SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject,
+ g -> getValue4(g, containerCluster, subject, context, procedure)
+ );
return;
}
int so = cluster.getSingleObject(subject, procedure, session.clusterTranslator);
if(so == 0) {
if(result == 0) {
- procedure.exception(graph, new DatabaseException("No objects " + subject + " " + procedure.predicateKey));
+ procedure.exception(graph, new NoSingleResultException("No objects " + subject + " " + procedure.predicateKey, result));
// graph.dec();
} else {
getValue4(graph, cluster, result, context, procedure);
if(result == 0) {
getValue4(graph, cluster, so, context, procedure);
} else {
- procedure.exception(graph, new DatabaseException("Multiple objects"));
+ procedure.exception(graph, new NoSingleResultException("Multiple objects for " + subject + " " + procedure.predicateKey, result));
// graph.dec();
}
}
} catch (DatabaseException e) {
- e.printStackTrace();
+ LOGGER.error("Could not compute related value for subject {} with predicate {}", subject, procedure.predicateKey);
}
}
if(subject < 0) {
if(!SessionImplSocket.areVirtualStatementsLoaded(session.virtualGraphServerSupport, subject, predicate)) {
- SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, predicate, new Callback<ReadGraphImpl>() {
-
- @Override
- public void run(ReadGraphImpl graph) {
- getRelatedValue4(graph, subject, procedure);
- }
-
- });
+ SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, predicate,
+ g -> getRelatedValue4(g, subject, procedure)
+ );
return;
}
if(cluster.hasVirtual() && session.virtualGraphServerSupport.virtuals.contains(subject)) {
if(!SessionImplSocket.areVirtualStatementsLoaded(session.virtualGraphServerSupport, subject, predicate)) {
- SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, predicate, new Callback<ReadGraphImpl>() {
-
- @Override
- public void run(ReadGraphImpl graph) {
- getRelatedValue4(graph, subject, procedure);
- }
-
- });
+ SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, predicate,
+ g -> getRelatedValue4(graph, subject, procedure)
+ );
return;
}