X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Fvariable%2FAbstractConstantPropertyVariable.java;h=f2b7ff47b7919b60340614df48cb57d1f5672719;hb=035118aa5f35c9e5acd1f34d22065055dfdee486;hp=5bf91e7e4395f243c9f71da7a8e49ac19ef1ec0e;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/variable/AbstractConstantPropertyVariable.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/variable/AbstractConstantPropertyVariable.java index 5bf91e7e4..f2b7ff47b 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/variable/AbstractConstantPropertyVariable.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/variable/AbstractConstantPropertyVariable.java @@ -1,157 +1,157 @@ -package org.simantics.db.layer0.variable; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import org.simantics.databoard.binding.Binding; -import org.simantics.databoard.type.Datatype; -import org.simantics.db.ReadGraph; -import org.simantics.db.Resource; -import org.simantics.db.WriteGraph; -import org.simantics.db.exception.DatabaseException; -import org.simantics.utils.ObjectUtils; - -abstract public class AbstractConstantPropertyVariable extends AbstractPropertyVariable { - - final protected Variable parent; - final String name; - final Binding binding; - final Map properties; - - public AbstractConstantPropertyVariable(Variable parent, String name, Binding binding, Collection propertyBuilders, Set classifications) { - assert parent != null; - assert name != null; - this.parent = parent; - this.name = name; - this.binding = binding; - this.properties = new HashMap(propertyBuilders.size()); - for(ConstantPropertyVariableBuilder builder : propertyBuilders) { - properties.put(builder.getName(), builder.build(this)); - } - if(!classifications.isEmpty()) - properties.put(Variables.CLASSIFICATIONS, new ConstantPropertyVariable(this, Variables.CLASSIFICATIONS, classifications, null)); - } - - public AbstractConstantPropertyVariable(Variable parent, String name, Binding binding) { - this(parent, name, binding, Collections.emptyList(), Collections.emptySet()); - } - - @Override - public void setValue(WriteGraph graph, Object value, Binding binding) - throws DatabaseException { - throw new DatabaseException("Value is constant."); - } - - @Override - public String getName(ReadGraph graph) throws DatabaseException { - return name; - } - - @Override - public Resource getType(ReadGraph graph) throws DatabaseException { - return null; - } - - @Override - public Resource getPossibleType(ReadGraph graph) throws DatabaseException { - return null; - } - - @Override - public Resource getType(ReadGraph graph, Resource baseType) throws DatabaseException { - return null; - } - - @Override - public Resource getPossibleType(ReadGraph graph, Resource baseType) throws DatabaseException { - return null; - } - -// @Override -// public Object getSerialized(ReadGraph graph) throws DatabaseException { -// return name; -// } - - @Override - public Variable getParent(ReadGraph graph) throws DatabaseException { - return parent; - } - - @Override - public Resource getRepresents(ReadGraph graph) throws DatabaseException { - return null; - } - - @Override - public Datatype getDatatype(ReadGraph graph) throws DatabaseException { - return binding != null ? binding.type() : null; - } - - @Override - public Resource getPropertyResource(ReadGraph graph) throws DatabaseException { - return null; - } - - @Override - public Resource getContainerResource(ReadGraph graph) throws DatabaseException { - return null; - } - - @Override - public Variable getPredicate(ReadGraph graph) throws DatabaseException { - return null; - } - - @Override - protected Variable getPossibleDomainProperty(ReadGraph graph, String name) - throws DatabaseException { - return properties.get(name); - } - - @Override - public Map collectDomainProperties(ReadGraph graph, - Map properties) throws DatabaseException { - if(!this.properties.isEmpty()) { - if(properties == null) properties = new HashMap(this.properties.size()); - properties.putAll(this.properties); - } - return properties; - } - - @Override - public Set getClassifications(ReadGraph graph) throws DatabaseException { - Variable property = getPossibleDomainProperty(graph, Variables.CLASSIFICATIONS); - if(property != null) return property.getValue(graph); - else return Collections.emptySet(); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + name.hashCode(); - result = prime * result + parent.hashCode(); - result = prime * result + ((binding == null) ? 0 : binding.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - AbstractConstantPropertyVariable other = (AbstractConstantPropertyVariable) obj; - if (!name.equals(other.name)) - return false; - if (!parent.equals(other.parent)) - return false; - return ObjectUtils.objectEquals(binding, other.binding); - } - -} +package org.simantics.db.layer0.variable; + +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import org.simantics.databoard.binding.Binding; +import org.simantics.databoard.type.Datatype; +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.WriteGraph; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.exception.NonWritableVariableException; +import org.simantics.utils.ObjectUtils; + +abstract public class AbstractConstantPropertyVariable extends AbstractPropertyVariable { + + final protected Variable parent; + final String name; + final Binding binding; + final Map properties; + + public AbstractConstantPropertyVariable(Variable parent, String name, Binding binding, Collection propertyBuilders, Set classifications) { + assert parent != null; + assert name != null; + this.parent = parent; + this.name = name; + this.binding = binding; + this.properties = new HashMap(propertyBuilders.size()); + for(ConstantPropertyVariableBuilder builder : propertyBuilders) { + properties.put(builder.getName(), builder.build(this)); + } + if(!classifications.isEmpty()) + properties.put(Variables.CLASSIFICATIONS, new ConstantPropertyVariable(this, Variables.CLASSIFICATIONS, classifications, null)); + } + + public AbstractConstantPropertyVariable(Variable parent, String name, Binding binding) { + this(parent, name, binding, Collections.emptyList(), Collections.emptySet()); + } + + @Override + public void setValue(WriteGraph graph, Object value, Binding binding) throws DatabaseException { + throw new NonWritableVariableException("Value is constant."); + } + + @Override + public String getName(ReadGraph graph) throws DatabaseException { + return name; + } + + @Override + public Resource getType(ReadGraph graph) throws DatabaseException { + return null; + } + + @Override + public Resource getPossibleType(ReadGraph graph) throws DatabaseException { + return null; + } + + @Override + public Resource getType(ReadGraph graph, Resource baseType) throws DatabaseException { + return null; + } + + @Override + public Resource getPossibleType(ReadGraph graph, Resource baseType) throws DatabaseException { + return null; + } + +// @Override +// public Object getSerialized(ReadGraph graph) throws DatabaseException { +// return name; +// } + + @Override + public Variable getParent(ReadGraph graph) throws DatabaseException { + return parent; + } + + @Override + public Resource getRepresents(ReadGraph graph) throws DatabaseException { + return null; + } + + @Override + public Datatype getDatatype(ReadGraph graph) throws DatabaseException { + return binding != null ? binding.type() : null; + } + + @Override + public Resource getPropertyResource(ReadGraph graph) throws DatabaseException { + return null; + } + + @Override + public Resource getContainerResource(ReadGraph graph) throws DatabaseException { + return null; + } + + @Override + public Variable getPredicate(ReadGraph graph) throws DatabaseException { + return null; + } + + @Override + protected Variable getPossibleDomainProperty(ReadGraph graph, String name) + throws DatabaseException { + return properties.get(name); + } + + @Override + public Map collectDomainProperties(ReadGraph graph, + Map properties) throws DatabaseException { + if(!this.properties.isEmpty()) { + if(properties == null) properties = new HashMap(this.properties.size()); + properties.putAll(this.properties); + } + return properties; + } + + @Override + public Set getClassifications(ReadGraph graph) throws DatabaseException { + Variable property = getPossibleDomainProperty(graph, Variables.CLASSIFICATIONS); + if(property != null) return property.getValue(graph); + else return Collections.emptySet(); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + name.hashCode(); + result = prime * result + parent.hashCode(); + result = prime * result + ((binding == null) ? 0 : binding.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + AbstractConstantPropertyVariable other = (AbstractConstantPropertyVariable) obj; + if (!name.equals(other.name)) + return false; + if (!parent.equals(other.parent)) + return false; + return ObjectUtils.objectEquals(binding, other.binding); + } + +}