package org.openflexo.foundation.ontology;
import java.lang.reflect.Type;
import org.openflexo.antar.binding.CustomType;
public class SubClassOfClass implements CustomType {
public static SubClassOfClass getSubClassOfClass(OntologyClass anOntologyClass) {
if (anOntologyClass == null) {
return null;
}
if (anOntologyClass.getOntologyLibrary() != null) {
if (anOntologyClass.getOntologyLibrary().subclassesOfClass.get(anOntologyClass) != null) {
return anOntologyClass.getOntologyLibrary().subclassesOfClass.get(anOntologyClass);
} else {
SubClassOfClass returned = new SubClassOfClass(anOntologyClass);
anOntologyClass.getOntologyLibrary().subclassesOfClass.put(anOntologyClass, returned);
return returned;
}
}
return null;
}
private OntologyClass ontologyClass;
private SubClassOfClass(OntologyClass anOntologyClass) {
this.ontologyClass = anOntologyClass;
}
public OntologyClass getOntologyClass() {
return ontologyClass;
}
@Override
public Class getBaseClass() {
return OntologyClass.class;
}
@Override
public boolean isTypeAssignableFrom(Type aType, boolean permissive) {
// System.out.println("isTypeAssignableFrom " + aType + " (i am a " + this + ")");
if (aType instanceof SubClassOfClass) {
return ontologyClass.isSuperConceptOf(((SubClassOfClass) aType).getOntologyClass());
}
return false;
}
@Override
public String simpleRepresentation() {
return "Class" + ":" + ontologyClass.getName();
}
@Override
public String fullQualifiedRepresentation() {
return "Class" + ":" + ontologyClass.getURI();
}
}