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