import org.simantics.db.common.utils.ListUtils;
import org.simantics.db.common.utils.Logger;
import org.simantics.db.common.utils.NameUtils;
+import org.simantics.db.common.utils.NearestOwnerFinder;
import org.simantics.db.common.validation.L0Validations;
+import org.simantics.db.exception.AdaptionException;
import org.simantics.db.exception.DatabaseException;
import org.simantics.db.exception.DoesNotContainValueException;
import org.simantics.db.exception.NoSingleResultException;
import org.simantics.db.exception.RuntimeDatabaseException;
+import org.simantics.db.layer0.exception.InvalidVariableException;
+import org.simantics.db.layer0.exception.MissingVariableException;
import org.simantics.db.layer0.exception.MissingVariableValueException;
import org.simantics.db.layer0.exception.PendingVariableException;
-import org.simantics.db.layer0.exception.VariableException;
import org.simantics.db.layer0.request.PossibleURI;
import org.simantics.db.layer0.request.PropertyInfo;
import org.simantics.db.layer0.request.PropertyInfoRequest;
if(value == null) throw new MissingVariableValueException(variable.getPossibleURI(graph));
return value.getValue(binding);
} catch (AdaptException e) {
- throw new DatabaseException(e);
+ throw new AdaptionException("Could not get value for " + context.getURI(graph), e);
}
}
try {
modifier.apply(graph, context, value, Bindings.getBinding(value.getClass()));
} catch (BindingConstructionException e) {
- throw new DatabaseException(e);
+ throw new org.simantics.db.exception.BindingException("",e);
}
}
// Process graph properties
for(Resource predicate : predicates) {
- PropertyInfo info = graph.isImmutable(predicate) ?
- graph.syncRequest(new PropertyInfoRequest(predicate), TransientCacheAsyncListener.<PropertyInfo>instance()) :
- graph.syncRequest(new PropertyInfoRequest(predicate));
+ PropertyInfo info = //graph.isImmutable(predicate) ?
+ graph.syncRequest(new PropertyInfoRequest(predicate), TransientCacheAsyncListener.<PropertyInfo>instance());// :
+ //graph.syncRequest(new PropertyInfoRequest(predicate));
if(!info.isHasProperty) continue;
public Variable getVariable(ReadGraph graph, Variable context, String name) throws DatabaseException {
Variable parent = context.getParent(graph);
Resource container = parent.getPossibleRepresents(graph);
+ if(container == null)
+ return null;
Map<String,Resource> methods = graph.syncRequest(new UnescapedMethodMapOfResource(container));
Resource predicate = methods.get(name);
if(predicate != null) {
public Map<String, Variable> getVariables(ReadGraph graph, Variable context, Map<String, Variable> map) throws DatabaseException {
Variable parent = context.getParent(graph);
Resource container = parent.getPossibleRepresents(graph);
+ if(container == null)
+ return Collections.emptyMap();
Map<String,Resource> methods = graph.syncRequest(new UnescapedMethodMapOfResource(container));
for(Map.Entry<String, Resource> entry : methods.entrySet()) {
String name = entry.getKey();
public static PropertyInfo getPossiblePropertyInfoFromContext(ReadGraph graph, Variable variable, Resource context, String name) throws DatabaseException {
if(context == null) return null;
- Map<String, PropertyInfo> predicates = graph.syncRequest(new UnescapedPropertyMapOfResource(context));
+ Map<String, PropertyInfo> predicates = graph.syncRequest(new UnescapedPropertyMapOfResource(context), TransientCacheListener.instance());
return predicates.get(name);
}
}
if (variable.parentResource == null)
- throw new VariableException("Variable is not represented by any resource (URI=" + variable.getPossibleURI(graph) + ").");
+ throw new InvalidVariableException("Variable is not represented by any resource (URI=" + variable.getPossibleURI(graph) + ").");
try {
return graph.getRelatedValue2(variable.parentResource, variable.property.predicate, variable);
} catch (NoSingleResultException e) {
- throw new MissingVariableValueException(variable.getPossibleURI(graph));
+ throw new MissingVariableValueException(variable.getPossibleURI(graph), e);
} catch (DoesNotContainValueException e) {
- throw new MissingVariableValueException(variable.getPossibleURI(graph));
+ throw new MissingVariableValueException(variable.getPossibleURI(graph), e);
}
}
}
if (variable.parentResource == null)
- throw new VariableException("Variable is not represented by any resource (URI=" + variable.getPossibleURI(graph) + ").");
+ throw new MissingVariableException("Variable is not represented by any resource (URI=" + variable.getPossibleURI(graph) + ").", context.getPossibleRepresents(graph));
try {
return graph.getRelatedValue2(variable.parentResource, variable.property.predicate, variable);
} catch (NoSingleResultException e) {
- throw new MissingVariableValueException(variable.getPossibleURI(graph));
+ throw new MissingVariableValueException(variable.getPossibleURI(graph), e);
} catch (DoesNotContainValueException e) {
- throw new MissingVariableValueException(variable.getPossibleURI(graph));
+ throw new MissingVariableValueException(variable.getPossibleURI(graph), e);
}
}
ClusteringSupport cs = graph.getService(ClusteringSupport.class);
if(cs.isClusterSet(resource) && !base.equals(resource)) return resource;
- Resource nearest = CommonDBUtils.getNearestOwner(graph, Collections.singletonList(resource));
+ Resource nearest = NearestOwnerFinder.getNearestOwner(graph, resource);
if(nearest == null) return null;
return getPossibleNearestClusterSet(graph, base, nearest);