package org.openflexo.foundation.viewpoint;
import org.openflexo.foundation.ontology.OntologyClass;
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 ClassPatternRole extends OntologicObjectPatternRole {
public ClassPatternRole(ViewPointBuilder builder) {
super(builder);
}
@Override
public PatternRoleType getType() {
return PatternRoleType.Class;
}
@Override
public String getPreciseType() {
if (getOntologicType() != null) {
return getOntologicType().getName();
}
return "";
}
@Override
public Class<?> getAccessedClass() {
return OntologyClass.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 ClassPatternRoleMustDefineAValidConceptClass extends
ValidationRule<ClassPatternRoleMustDefineAValidConceptClass, ClassPatternRole> {
public ClassPatternRoleMustDefineAValidConceptClass() {
super(ClassPatternRole.class, "pattern_role_must_define_a_valid_concept_class");
}
@Override
public ValidationIssue<ClassPatternRoleMustDefineAValidConceptClass, ClassPatternRole> applyValidation(ClassPatternRole patternRole) {
if (patternRole.getOntologicType() == null) {
return new ValidationError<ClassPatternRoleMustDefineAValidConceptClass, ClassPatternRole>(this, patternRole,
"pattern_role_does_not_define_any_concept_class");
}
return null;
}
}
}