X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.impl%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fimpl%2Fgraph%2FReadGraphImpl.java;h=614a96df3c47d29ea45e249dfb10df9653aaedf4;hb=refs%2Fchanges%2F29%2F1529%2F8;hp=9b6d74044ccacc0d27e0039d3646ed0b9d5fabe7;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/ReadGraphImpl.java b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/ReadGraphImpl.java index 9b6d74044..614a96df3 100644 --- a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/ReadGraphImpl.java +++ b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/ReadGraphImpl.java @@ -11,8 +11,6 @@ *******************************************************************************/ package org.simantics.db.impl.graph; -import gnu.trove.map.hash.TObjectIntHashMap; - import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; @@ -29,6 +27,7 @@ import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.Set; +import java.util.function.Consumer; import org.eclipse.core.runtime.Platform; import org.simantics.databoard.Accessors; @@ -181,10 +180,11 @@ import org.simantics.scl.reflection.ValueNotFoundException; import org.simantics.scl.runtime.function.Function3; import org.simantics.utils.DataContainer; import org.simantics.utils.Development; -import org.simantics.utils.datastructures.Callback; import org.simantics.utils.datastructures.Pair; import org.simantics.utils.datastructures.collections.CollectionUtils; +import gnu.trove.map.hash.TObjectIntHashMap; + public class ReadGraphImpl implements ReadGraph { final static boolean EMPTY_RESOURCE_CHECK = false; @@ -283,7 +283,7 @@ public class ReadGraphImpl implements ReadGraph { } catch (ResourceNotFoundException e) { - throw new ResourceNotFoundException(e); + throw new ResourceNotFoundException(id, e); } catch (ValidationException e) { @@ -347,7 +347,7 @@ public class ReadGraphImpl implements ReadGraph { } catch (ResourceNotFoundException e) { - throw new ResourceNotFoundException(e); + throw new ResourceNotFoundException(id, e); } catch (ServiceException e) { @@ -900,83 +900,57 @@ public class ReadGraphImpl implements ReadGraph { if( relation == null) throw new IllegalArgumentException("relation can not be null"); try { - int single = processor.getSingleObject(this, subject, relation); - if(single == 0) throw new NoSingleResultException("subject=" + subject + " relation="+relation); + if (single == 0) { + if (EMPTY_RESOURCE_CHECK) { + if (!hasStatement(subject)) { + throw new EmptyResourceException("Resource " + debugString(subject)); + } + } + throw new NoSingleResultException("No single object for subject " + debugString(subject) + + " and relation " + debugString(relation), single); + } return processor.querySupport.getResource(single); - } catch (NoSingleResultException e) { - - if(EMPTY_RESOURCE_CHECK) { - if(!hasStatement(subject)) throw new EmptyResourceException("Resource " + debugString(subject)); - } - - throw new NoSingleResultException("No single object for subject " - + debugString(subject) + " and relation " - + debugString(relation), e); - + throw e; } catch (DatabaseException e) { - throw new ServiceException(e); - } - } @Override - final public Statement getSingleStatement(final Resource subject, - final Resource relation) throws NoSingleResultException, - ManyObjectsForFunctionalRelationException, ServiceException { - + final public Statement getSingleStatement(final Resource subject, final Resource relation) throws NoSingleResultException, ManyObjectsForFunctionalRelationException, ServiceException { assert (subject != null); assert (relation != null); - try { - Collection statements = getStatements(subject, relation); - if(statements.size() == 1) return statements.iterator().next(); - else throw new NoSingleResultException(""); - - } catch (NoSingleResultException e) { - - if(EMPTY_RESOURCE_CHECK) { - if(!hasStatement(subject)) throw new EmptyResourceException("Resource " + debugString(subject)); - } - - throw new NoSingleResultException("No single statement for subject " - + debugString(subject) + " and relation " - + debugString(relation), e); - - } catch (DatabaseException e) { - - throw new ServiceException(e); - - } - + if (statements.size() == 1) { + return statements.iterator().next(); + } else { + if (EMPTY_RESOURCE_CHECK) + if (!hasStatement(subject)) + throw new EmptyResourceException("Resource " + debugString(subject)); + throw new NoSingleResultException("No single statement for subject " + debugString(subject) + + " and relation " + debugString(relation), statements.size()); + } + } catch (ServiceException e) { + throw new ServiceException(e); + } } @Override - final public Resource getSingleType(final Resource subject) throws NoSingleResultException, - ServiceException { - + final public Resource getSingleType(final Resource subject) throws NoSingleResultException, ServiceException { assert (subject != null); - try { - ArrayList principalTypes = (ArrayList)getPrincipalTypes(subject); - if(principalTypes.size() == 1) return principalTypes.get(0); - else throw new NoSingleResultException(""); - - } catch (NoSingleResultException e) { - - throw new NoSingleResultException(e); - + if (principalTypes.size() == 1) { + return principalTypes.get(0); + } else { + throw new NoSingleResultException("No single type for subject " + debugString(subject), principalTypes.size()); + } } catch (ServiceException e) { - throw new ServiceException(e); - } - } @Override @@ -988,23 +962,10 @@ public class ReadGraphImpl implements ReadGraph { assert (baseType != null); try { - return syncRequest(new SingleType(subject, baseType)); - - } catch (NoSingleResultException e) { - - throw new NoSingleResultException(new NoSingleResultException("subject=" + subject + ", baseType=" + baseType, e)); - - } catch (ServiceException e) { - - throw new ServiceException(e); - } catch (DatabaseException e) { - - throw new ServiceException(INTERNAL_ERROR_STRING, e); - + throw new NoSingleResultException("subject=" + subject + ", baseType=" + baseType, 0, e); } - } @Override @@ -1142,16 +1103,11 @@ public class ReadGraphImpl implements ReadGraph { assert (relation != null); try { - Resource object = getSingleObject(subject, relation); return getValue(object); - } catch (NoSingleResultException e) { - - throw new NoSingleResultException(e); - + throw new NoSingleResultException("No single value found for subject " + debugString(subject) + " and relation " + debugString(relation), e.getResultCount(), e); } catch (DoesNotContainValueException e) { - try { Layer0 L0 = processor.getL0(this); Resource object = getPossibleObject(subject, relation); @@ -1159,23 +1115,19 @@ public class ReadGraphImpl implements ReadGraph { if(isInstanceOf(object, L0.Literal)) { throw new DoesNotContainValueException(e); } else { - throw new InvalidLiteralException("The object " + object + " is not an instance of L0.Literal (use getRelatedValue2 instead)"); + throw new InvalidLiteralException("The object " + object + " is not an instance of L0.Literal (use getRelatedValue2 instead)", e); } } else { - throw new DoesNotContainValueException("The object " + object + " is not an instance of L0.Value"); + throw new DoesNotContainValueException("The object " + object + " is not an instance of L0.Value", e); } } catch (DoesNotContainValueException e2) { throw e2; } catch (DatabaseException e2) { throw new InternalException("The client failed to analyse the cause of the following exception", e); } - } catch (ServiceException e) { - throw new ServiceException(e); - - } - + } } @Override @@ -1186,16 +1138,11 @@ public class ReadGraphImpl implements ReadGraph { assert (relation != null); try { - Resource object = getSingleObject(subject, relation); return getVariantValue(object); - } catch (NoSingleResultException e) { - - throw new NoSingleResultException(e); - + throw new NoSingleResultException("No single object for subject " + debugString(subject) + " and relation " + debugString(relation), e.getResultCount(), e); } catch (DoesNotContainValueException e) { - try { Layer0 L0 = processor.getL0(this); Resource object = getPossibleObject(subject, relation); @@ -1203,23 +1150,19 @@ public class ReadGraphImpl implements ReadGraph { if(isInstanceOf(object, L0.Literal)) { throw new DoesNotContainValueException(e); } else { - throw new InvalidLiteralException("The object " + object + " is not an instance of L0.Literal (use getRelatedValue2 instead)"); + throw new InvalidLiteralException("The object " + object + " is not an instance of L0.Literal (use getRelatedValue2 instead)", e); } } else { - throw new DoesNotContainValueException("The object " + object + " is not an instance of L0.Value"); + throw new DoesNotContainValueException("The object " + object + " is not an instance of L0.Value", e); } } catch (DoesNotContainValueException e2) { throw e2; } catch (DatabaseException e2) { throw new InternalException("The client failed to analyse the cause of the following exception", e); } - } catch (ServiceException e) { - throw new ServiceException(e); - } - } @Override @@ -1230,40 +1173,23 @@ public class ReadGraphImpl implements ReadGraph { assert (relation != null); try { - Resource object = getSingleObject(subject, relation); return getValue(object, binding); - } catch (NoSingleResultException e) { - String message = ""; - try { - String subjectName = NameUtils.getSafeName(this, subject, true); String relationName = NameUtils.getSafeName(this, relation, true); message = "Subject: " + subjectName + ", Relation: " + relationName; - } catch (DatabaseException e2) { } - - throw new NoSingleResultException(message); - + throw new NoSingleResultException(message, e.getResultCount(), e); } catch (DoesNotContainValueException e) { - throw new DoesNotContainValueException(e); - } catch (ServiceException e) { - throw new ServiceException(e); - - } catch (DatabaseException e) { - - throw new ServiceException(INTERNAL_ERROR_STRING, e); - } - } @Override @@ -1949,7 +1875,7 @@ public class ReadGraphImpl implements ReadGraph { } - final AsyncProcedure NONE = new AsyncProcedure() { + final AsyncProcedure NONE = new AsyncProcedure() { @Override public void execute(AsyncReadGraph graph, Object result) { @@ -2152,7 +2078,7 @@ public class ReadGraphImpl implements ReadGraph { if (parent != null || listener != null || ((request.getFlags() & RequestFlags.SCHEDULE) > 0)) { - Object syncParent = request; +// Object syncParent = request; // final ReadGraphImpl newGraph = newSync(); @@ -2180,7 +2106,7 @@ public class ReadGraphImpl implements ReadGraph { // System.out.println("direct call " + request ); // Do not set the sync state.parent for external threads - Object syncParent = request; +// Object syncParent = request; // final ReadGraphImpl newGraph = newSync(); @@ -2342,7 +2268,7 @@ public class ReadGraphImpl implements ReadGraph { if (parent != null || listener != null) { - Object syncParent = request; +// Object syncParent = request; // final ReadGraphImpl newGraph = newSync(); @@ -2352,7 +2278,7 @@ public class ReadGraphImpl implements ReadGraph { } else { - Object syncParent = request; +// Object syncParent = request; // final ReadGraphImpl newGraph = newSync(); @@ -2471,7 +2397,7 @@ public class ReadGraphImpl implements ReadGraph { if (parent != null || listener != null) { - Object syncParent = request; +// Object syncParent = request; // final ReadGraphImpl newGraph = newSync(); @@ -2519,7 +2445,7 @@ public class ReadGraphImpl implements ReadGraph { if (parent != null || listener != null) { - Object syncParent = request; +// Object syncParent = request; // final ReadGraphImpl newGraph = newSync(); @@ -2529,7 +2455,7 @@ public class ReadGraphImpl implements ReadGraph { } else { - Object syncParent = request; +// Object syncParent = request; // final ReadGraphImpl newGraph = newSync(); @@ -5912,7 +5838,7 @@ public class ReadGraphImpl implements ReadGraph { } @Override - public void asyncRequest(Write request, Callback callback) { + public void asyncRequest(Write request, Consumer callback) { assert (request != null); @@ -5936,7 +5862,7 @@ public class ReadGraphImpl implements ReadGraph { @Override public void asyncRequest(DelayedWrite r, - Callback callback) { + Consumer callback) { throw new Error("Not implemented."); } @@ -5955,7 +5881,7 @@ public class ReadGraphImpl implements ReadGraph { } @Override - public void asyncRequest(WriteOnly r, Callback callback) { + public void asyncRequest(WriteOnly r, Consumer callback) { throw new Error("Not implemented."); } @@ -6470,7 +6396,6 @@ public class ReadGraphImpl implements ReadGraph { } } - @SuppressWarnings("unchecked") @Override public Variant getVariantValue2(Resource r, Object context) throws DatabaseException { Layer0 L0 = processor.getL0(this);