/* * (c) Copyright 2010-2011 AgileBirds * * This file is part of OpenFlexo. * * OpenFlexo is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * OpenFlexo is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with OpenFlexo. If not, see <http://www.gnu.org/licenses/>. * */ package org.openflexo.foundation.viewpoint; import java.lang.reflect.Type; import java.util.logging.Logger; import org.openflexo.antar.binding.BindingDefinition; import org.openflexo.antar.binding.BindingDefinition.BindingDefinitionType; import org.openflexo.foundation.Inspectors; import org.openflexo.foundation.ontology.OntologyObject; import org.openflexo.foundation.ontology.OntologyProperty; import org.openflexo.foundation.ontology.owl.OntologyRestrictionClass.RestrictionType; import org.openflexo.foundation.ontology.owl.SubClassStatement; import org.openflexo.foundation.view.action.EditionSchemeAction; import org.openflexo.foundation.viewpoint.ViewPoint.ViewPointBuilder; import org.openflexo.foundation.viewpoint.binding.ViewPointDataBinding; public class AddRestrictionStatement extends AddStatement { private static final Logger logger = Logger.getLogger(AddRestrictionStatement.class.getPackage().getName()); private String propertyURI; public AddRestrictionStatement(ViewPointBuilder builder) { super(builder); } @Override public EditionActionType getEditionActionType() { return EditionActionType.AddRestrictionStatement; } /*@Override public List<RestrictionStatementPatternRole> getAvailablePatternRoles() { return getEditionPattern().getPatternRoles(RestrictionStatementPatternRole.class); }*/ public String _getPropertyURI() { return propertyURI; } public void _setPropertyURI(String propertyURI) { this.propertyURI = propertyURI; } public OntologyProperty getObjectProperty() { getViewPoint().loadWhenUnloaded(); return getViewPoint().getViewpointOntology().getObjectProperty(_getPropertyURI()); } public void setObjectProperty(OntologyProperty p) { _setPropertyURI(p != null ? p.getURI() : null); } public OntologyObject getPropertyObject(EditionSchemeAction action) { return (OntologyObject) getObject().getBindingValue(action); } @Override public String getInspectorName() { return Inspectors.VPM.ADD_RESTRICTION_INSPECTOR; } /*@Override protected void updatePatternRoleType() { if (getPatternRole() == null) { return; } }*/ private ViewPointDataBinding object; private BindingDefinition OBJECT = new BindingDefinition("object", OntologyObject.class, BindingDefinitionType.GET, false); public BindingDefinition getObjectBindingDefinition() { return OBJECT; } public ViewPointDataBinding getObject() { if (object == null) { object = new ViewPointDataBinding(this, EditionActionBindingAttribute.object, getObjectBindingDefinition()); } return object; } public void setObject(ViewPointDataBinding object) { object.setOwner(this); object.setBindingAttribute(EditionActionBindingAttribute.object); object.setBindingDefinition(getObjectBindingDefinition()); this.object = object; } private ViewPointDataBinding restrictionType; private BindingDefinition RESTRICTION_TYPE = new BindingDefinition("restrictionType", RestrictionType.class, BindingDefinitionType.GET, false); public BindingDefinition getRestrictionTypeBindingDefinition() { return RESTRICTION_TYPE; } public ViewPointDataBinding getRestrictionType() { if (restrictionType == null) { restrictionType = new ViewPointDataBinding(this, EditionActionBindingAttribute.restrictionType, getRestrictionTypeBindingDefinition()); } return restrictionType; } public void setRestrictionType(ViewPointDataBinding restrictionType) { restrictionType.setOwner(this); restrictionType.setBindingAttribute(EditionActionBindingAttribute.restrictionType); restrictionType.setBindingDefinition(getRestrictionTypeBindingDefinition()); this.restrictionType = restrictionType; } public RestrictionType getRestrictionType(EditionSchemeAction action) { RestrictionType restrictionType = (RestrictionType) getRestrictionType().getBindingValue(action); if (restrictionType == null) { restrictionType = RestrictionType.Some; } return restrictionType; } private ViewPointDataBinding cardinality; private BindingDefinition CARDINALITY = new BindingDefinition("cardinality", Integer.class, BindingDefinitionType.GET, false); public BindingDefinition getCardinalityBindingDefinition() { return CARDINALITY; } public ViewPointDataBinding getCardinality() { if (cardinality == null) { cardinality = new ViewPointDataBinding(this, EditionActionBindingAttribute.cardinality, getCardinalityBindingDefinition()); } return cardinality; } public void setCardinality(ViewPointDataBinding cardinality) { cardinality.setOwner(this); cardinality.setBindingAttribute(EditionActionBindingAttribute.cardinality); cardinality.setBindingDefinition(getCardinalityBindingDefinition()); this.cardinality = cardinality; } public int getCardinality(EditionSchemeAction action) { return ((Number) getCardinality().getBindingValue(action)).intValue(); } @Override public Type getAssignableType() { return SubClassStatement.class; } }