/************************************************************
* Copyright (c) 2010 paperlocator.org - all rights reserved.
*
* $Id$
* $Revision$
* $Author$
***********************************************************/
package org.js.model.feature.validation;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.js.model.feature.Attribute;
import org.js.model.feature.Domain;
import org.js.model.feature.edit.FeatureModelHelper;
/**
* @author <a href="mailto:julia.schroeter@tu-dresden.de">Julia Schroeter</a>
*
*/
public class AttributeDomainValueRangeConstraint extends AbstractFeatureModelConstraint {
public String validateTarget(EObject target) {
String msg = "";
if (target instanceof Attribute) {
Attribute attribute = (Attribute) target;
msg = checkDeselectedDomainValues(attribute);
if (msg.isEmpty()) {
msg = checkAssignedDomainValue(attribute);
}
}
return msg;
}
private String checkAssignedDomainValue(Attribute attribute) {
String msg = "";
Domain domain = attribute.getDomain();
String attributeValue = attribute.getValue();
if (attributeValue != null) {
if (!FeatureModelHelper.containsValue(domain, attributeValue)) {
msg =
"The assigned attribute value \"" + attributeValue + "\" is not contained in the referenced domain [" + domain.getId() + "]";
}
}
return msg;
}
private String checkDeselectedDomainValues(Attribute attribute) {
EList<String> deselectedDomainValues = attribute.getDeselectedDomainValues();
Domain domain = attribute.getDomain();
String msg = "";
for (String deselectedValue : deselectedDomainValues) {
if (!FeatureModelHelper.containsValue(domain, deselectedValue)) {
msg =
"The assigned attribute value \"" + deselectedValue + "\" is not contained in the referenced domain [" + domain.getId()
+ "]";;
break;
}
}
return msg;
}
}