package org.simantics.plant3d.geometry; import java.util.HashMap; import java.util.Map; import org.simantics.databoard.Bindings; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.common.request.ResourceRead; import org.simantics.db.exception.DatabaseException; import org.simantics.layer0.Layer0; import org.simantics.plant3d.ontology.Plant3D; public class ParameterRead extends ResourceRead> { public ParameterRead(Resource resource) { super(resource); } @Override public Map perform(ReadGraph graph) throws DatabaseException { Map parameters = new HashMap<>(); Layer0 L0 = Layer0.getInstance(graph); Plant3D P3D = Plant3D.getInstance(graph); for (Resource assertion : graph.getObjects(resource, L0.Asserts)) { Resource rel = graph.getSingleObject(assertion, L0.HasPredicate); if (!rel.equals(P3D.hasParameter)) continue; Resource param = graph.getSingleObject(assertion, L0.HasObject); String name = graph.getRelatedValue(param, L0.HasName, Bindings.STRING); Object value = graph.getRelatedValue(param, P3D.hasParameterValue); parameters.put(name, value); } for (Resource param : graph.getObjects(resource, P3D.hasParameter)) { String name = graph.getRelatedValue(param, L0.HasName, Bindings.STRING); Object value = graph.getRelatedValue(param, P3D.hasParameterValue); parameters.put(name, value); } return parameters; } }