X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.procore%2Fsrc%2Ffi%2Fvtt%2Fsimantics%2Fprocore%2Finternal%2FDirectQuerySupportImpl.java;h=7f27a0261a0dd97f45cca02e79da1e5805fcd2af;hp=9d6b019e4a2d22de5a3954f77f125abde174a468;hb=4b3689543c26ac085970dd200218a9a6c122467b;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07 diff --git a/bundles/org.simantics.db.procore/src/fi/vtt/simantics/procore/internal/DirectQuerySupportImpl.java b/bundles/org.simantics.db.procore/src/fi/vtt/simantics/procore/internal/DirectQuerySupportImpl.java index 9d6b019e4..7f27a0261 100644 --- a/bundles/org.simantics.db.procore/src/fi/vtt/simantics/procore/internal/DirectQuerySupportImpl.java +++ b/bundles/org.simantics.db.procore/src/fi/vtt/simantics/procore/internal/DirectQuerySupportImpl.java @@ -8,6 +8,7 @@ import org.simantics.db.Resource; 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; @@ -30,10 +31,13 @@ import org.simantics.db.procore.cluster.ResourceTableSmall; 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) { @@ -484,14 +488,9 @@ public class DirectQuerySupportImpl implements DirectQuerySupport { if(subject < 0) { if(!SessionImplSocket.areVirtualStatementsLoaded(session.virtualGraphServerSupport, subject, predicate)) { - SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, predicate, new Callback() { - - @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; } @@ -524,28 +523,16 @@ public class DirectQuerySupportImpl implements DirectQuerySupport { 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() { - - @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; } @@ -578,14 +565,9 @@ public class DirectQuerySupportImpl implements DirectQuerySupport { if(subject < 0) { if(!SessionImplSocket.areVirtualStatementsLoaded(session.virtualGraphServerSupport, subject)) { - SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, new Callback() { - - @Override - public void run(ReadGraphImpl graph) { - getValue4(graph, containerCluster, subject, procedure); - } - - }); + SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, + g -> getValue4(g, containerCluster, subject, procedure) + ); return; } @@ -627,14 +609,9 @@ public class DirectQuerySupportImpl implements DirectQuerySupport { if(cluster.hasVirtual() && session.virtualGraphServerSupport.virtuals.contains(subject)) { if(!SessionImplSocket.areVirtualStatementsLoaded(session.virtualGraphServerSupport, subject)) { - SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, new Callback() { - - @Override - public void run(ReadGraphImpl graph) { - getValue4(graph, containerCluster, subject, procedure); - } - - }); + SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, + g -> getValue4(g, containerCluster, subject, procedure) + ); return; } @@ -682,14 +659,9 @@ public class DirectQuerySupportImpl implements DirectQuerySupport { if(subject < 0) { if(!SessionImplSocket.areVirtualStatementsLoaded(session.virtualGraphServerSupport, subject)) { - SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, new Callback() { - - @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; } @@ -731,14 +703,9 @@ public class DirectQuerySupportImpl implements DirectQuerySupport { if(cluster.hasVirtual() && session.virtualGraphServerSupport.virtuals.contains(subject)) { if(!SessionImplSocket.areVirtualStatementsLoaded(session.virtualGraphServerSupport, subject)) { - SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, new Callback() { - - @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; } @@ -813,7 +780,7 @@ public class DirectQuerySupportImpl implements DirectQuerySupport { 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); @@ -822,13 +789,13 @@ public class DirectQuerySupportImpl implements DirectQuerySupport { 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); } } @@ -842,14 +809,9 @@ public class DirectQuerySupportImpl implements DirectQuerySupport { if(subject < 0) { if(!SessionImplSocket.areVirtualStatementsLoaded(session.virtualGraphServerSupport, subject, predicate)) { - SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, predicate, new Callback() { - - @Override - public void run(ReadGraphImpl graph) { - getRelatedValue4(graph, subject, procedure); - } - - }); + SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, predicate, + g -> getRelatedValue4(g, subject, procedure) + ); return; } @@ -896,14 +858,9 @@ public class DirectQuerySupportImpl implements DirectQuerySupport { if(cluster.hasVirtual() && session.virtualGraphServerSupport.virtuals.contains(subject)) { if(!SessionImplSocket.areVirtualStatementsLoaded(session.virtualGraphServerSupport, subject, predicate)) { - SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, predicate, new Callback() { - - @Override - public void run(ReadGraphImpl graph) { - getRelatedValue4(graph, subject, procedure); - } - - }); + SessionImplSocket.loadVirtualStatements(session.virtualGraphServerSupport, graph, subject, predicate, + g -> getRelatedValue4(graph, subject, procedure) + ); return; }