package org.openflexo.foundation.viewpoint;
import org.openflexo.foundation.ontology.OntologyDataProperty;
import org.openflexo.foundation.ontology.OntologyProperty;
import org.openflexo.foundation.ontology.owl.DataPropertyStatement;
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 DataPropertyStatementPatternRole extends StatementPatternRole {
public DataPropertyStatementPatternRole(ViewPointBuilder builder) {
super(builder);
}
@Override
public PatternRoleType getType() {
return PatternRoleType.DataPropertyStatement;
}
@Override
public String getPreciseType() {
if (getDataProperty() != null) {
return getDataProperty().getName();
}
return "";
}
@Override
public Class<DataPropertyStatement> getAccessedClass() {
return DataPropertyStatement.class;
}
private String dataPropertyURI;
public String _getDataPropertyURI() {
return dataPropertyURI;
}
public void _setDataPropertyURI(String dataPropertyURI) {
this.dataPropertyURI = dataPropertyURI;
}
public OntologyDataProperty getDataProperty() {
getViewPoint().loadWhenUnloaded();
return getViewPoint().getViewpointOntology().getDataProperty(_getDataPropertyURI());
}
public void setDataProperty(OntologyProperty p) {
_setDataPropertyURI(p != null ? p.getURI() : null);
}
public static class DataPropertyStatementPatternRoleMustDefineAValidProperty extends
ValidationRule<DataPropertyStatementPatternRoleMustDefineAValidProperty, DataPropertyStatementPatternRole> {
public DataPropertyStatementPatternRoleMustDefineAValidProperty() {
super(DataPropertyStatementPatternRole.class, "pattern_role_must_define_a_valid_data_property");
}
@Override
public ValidationIssue<DataPropertyStatementPatternRoleMustDefineAValidProperty, DataPropertyStatementPatternRole> applyValidation(
DataPropertyStatementPatternRole patternRole) {
if (patternRole.getDataProperty() == null) {
return new ValidationError<DataPropertyStatementPatternRoleMustDefineAValidProperty, DataPropertyStatementPatternRole>(
this, patternRole, "pattern_role_does_not_define_any_valid_data_property");
}
return null;
}
}
}