package org.openflexo.foundation.ontology.xsd; import java.util.ArrayList; import java.util.List; import org.openflexo.foundation.Inspectors; import org.openflexo.foundation.ontology.FlexoOntology; import org.openflexo.foundation.ontology.OntologyObject; import org.openflexo.foundation.ontology.OntologyObjectProperty; public class XSOntObjectProperty extends XSOntProperty implements OntologyObjectProperty { private AbstractXSOntObject range; private boolean noRangeFoundYet = true; private List<XSOntObjectProperty> superProperties; protected XSOntObjectProperty(XSOntology ontology, String name, String uri) { super(ontology, name, uri); range = ontology.getThingConcept(); superProperties = new ArrayList<XSOntObjectProperty>(); } protected XSOntObjectProperty(XSOntology ontology, String name) { this(ontology, name, XS_ONTOLOGY_URI + "#" + name); } public void addSuperProperty(XSOntObjectProperty parent) { superProperties.add(parent); } public void clearSuperProperties() { superProperties.clear(); } @Override public List<XSOntObjectProperty> getSuperProperties() { return superProperties; } @Override public List<XSOntObjectProperty> getSubProperties(FlexoOntology context) { // TODO return new ArrayList<XSOntObjectProperty>(); } @Override public OntologyObject getRange() { return range; } public void newRangeFound(AbstractXSOntObject range) { if (noRangeFoundYet) { this.range = range; noRangeFoundYet = false; } else { this.range = getOntology().getThingConcept(); } } public void resetRange() { this.range = getOntology().getThingConcept(); noRangeFoundYet = true; } @Override public boolean isLiteralRange() { // TODO Auto-generated method stub return false; } @Override public String getDisplayableDescription() { return getName(); } @Override public boolean isOntologyObjectProperty() { return true; } @Override public String getClassNameKey() { return "XSD_ontology_object_property"; } @Override public String getInspectorName() { if (getIsReadOnly()) { return Inspectors.VE.ONTOLOGY_OBJECT_PROPERTY_READ_ONLY_INSPECTOR; } else { return Inspectors.VE.ONTOLOGY_OBJECT_PROPERTY_INSPECTOR; } } }