package org.openflexo.foundation.viewpoint;
import org.openflexo.foundation.ontology.OntologyClass;
import org.openflexo.foundation.ontology.OntologyIndividual;
import org.openflexo.foundation.validation.ValidationError;
import org.openflexo.foundation.validation.ValidationIssue;
import org.openflexo.foundation.validation.ValidationRule;
import org.openflexo.foundation.viewpoint.ViewPoint.ViewPointBuilder;
public class IndividualPatternRole extends OntologicObjectPatternRole {
public IndividualPatternRole(ViewPointBuilder builder) {
super(builder);
}
@Override
public PatternRoleType getType() {
return PatternRoleType.Individual;
}
@Override
public String getPreciseType() {
if (getOntologicType() != null) {
return getOntologicType().getName();
}
return "";
}
@Override
public Class<?> getAccessedClass() {
return OntologyIndividual.class;
}
private String conceptURI;
public String _getConceptURI() {
return conceptURI;
}
public void _setConceptURI(String conceptURI) {
this.conceptURI = conceptURI;
}
public OntologyClass getOntologicType() {
if (getViewPoint() != null) {
getViewPoint().loadWhenUnloaded();
if (getViewPoint().getViewpointOntology() != null) {
return getViewPoint().getViewpointOntology().getClass(_getConceptURI());
}
}
return null;
}
public void setOntologicType(OntologyClass ontologyClass) {
conceptURI = ontologyClass != null ? ontologyClass.getURI() : null;
}
public static class IndividualPatternRoleMustDefineAValidConceptClass extends
ValidationRule<IndividualPatternRoleMustDefineAValidConceptClass, IndividualPatternRole> {
public IndividualPatternRoleMustDefineAValidConceptClass() {
super(IndividualPatternRole.class, "pattern_role_must_define_a_valid_concept_class");
}
@Override
public ValidationIssue<IndividualPatternRoleMustDefineAValidConceptClass, IndividualPatternRole> applyValidation(
IndividualPatternRole patternRole) {
if (patternRole.getOntologicType() == null) {
return new ValidationError<IndividualPatternRoleMustDefineAValidConceptClass, IndividualPatternRole>(this, patternRole,
"pattern_role_does_not_define_any_concept_class");
}
return null;
}
}
}