/* * (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 org.openflexo.antar.binding.BindingModel; import org.openflexo.foundation.Inspectors; 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; import org.openflexo.toolbox.StringUtils; /** * A PatternRole is an element of an EditionPattern, which play a role in this edition pattern * * @author sylvain * */ public abstract class PatternRole extends EditionPatternObject { public static enum PatternRoleType { Shape, Connector, Individual, Class, Property, ObjectProperty, DataProperty, IsAStatement, ObjectPropertyStatement, DataPropertyStatement, RestrictionStatement, FlexoModelObject, Diagram, EditionPattern, Primitive } private EditionPattern _pattern; private String patternRoleName; private String description; public PatternRole(ViewPointBuilder builder) { super(builder); } public void setEditionPattern(EditionPattern pattern) { _pattern = pattern; } @Override public EditionPattern getEditionPattern() { return _pattern; } @Override public String getDescription() { return description; } @Override public void setDescription(String description) { this.description = description; } @Override public ViewPoint getViewPoint() { if (getEditionPattern() != null) { return getEditionPattern().getViewPoint(); } return null; } @Override public String getName() { return getPatternRoleName(); } public String getPatternRoleName() { return patternRoleName; } public void setPatternRoleName(String patternRoleName) { this.patternRoleName = patternRoleName; /*String oldValue = patternRoleName; if (patternRoleName != null && !patternRoleName.equals(oldValue)) { this.patternRoleName = patternRoleName; setChanged(); notifyObservers(new NameChanged(oldValue, patternRoleName)); }*/ } @Override public String getInspectorName() { if (getType() == PatternRoleType.Shape) { return Inspectors.VPM.SHAPE_PATTERN_ROLE_INSPECTOR; } else if (getType() == PatternRoleType.Connector) { return Inspectors.VPM.CONNECTOR_PATTERN_ROLE_INSPECTOR; } else { return Inspectors.VPM.PATTERN_ROLE_INSPECTOR; } } @Override public String toString() { return getPatternRoleName(); } public abstract PatternRoleType getType(); public abstract String getPreciseType(); public void finalizePatternRoleDeserialization() { } public abstract Class<?> getAccessedClass(); @Override public final BindingModel getBindingModel() { return getEditionPattern().getBindingModel(); } public abstract boolean getIsPrimaryRole(); public abstract void setIsPrimaryRole(boolean isPrimary); // @Override // public abstract String getLanguageRepresentation(); public static class PatternRoleMustHaveAName extends ValidationRule<PatternRoleMustHaveAName, PatternRole> { public PatternRoleMustHaveAName() { super(PatternRole.class, "pattern_role_must_have_a_name"); } @Override public ValidationIssue<PatternRoleMustHaveAName, PatternRole> applyValidation(PatternRole patternRole) { if (StringUtils.isEmpty(patternRole.getPatternRoleName())) { return new ValidationError<PatternRoleMustHaveAName, PatternRole>(this, patternRole, "pattern_role_has_no_name"); } return null; } } }