/************************************************************ * Copyright (c) 2010 paperlocator.org - all rights reserved. * * $Id$ * $Revision$ * $Author$ ***********************************************************/ package org.js.model.rbac.validation; import org.eclipse.emf.common.util.EList; import org.js.model.feature.Attribute; import org.js.model.feature.DiscreteDomain; import org.js.model.feature.Domain; import org.js.model.feature.DomainValue; import org.js.model.rbac.AttributeOperation; import org.js.model.rbac.AttributeValueOperation; /** * @author <a href="mailto:julia.schroeter@tu-dresden.de">Julia Schroeter</a> * */ public class DefinedDomainValueConstraint extends AbstractAttributeConstraint { /** * validate if the given domain value is defined in the attribute's domain. * * @param attributeConfig * @param operation * @return */ @Override String checkAttributeConfiguration(AttributeOperation attributeConfig, AttributeValueOperation operation) { String msg = null; Attribute attribute = attributeConfig.getAttribute(); int value = operation.getValue(); Domain domain = attribute.getDomain(); if (domain instanceof DiscreteDomain) { DiscreteDomain discreteDomain = (DiscreteDomain) domain; EList<DomainValue> domainValues = discreteDomain.getValues(); boolean iscontained = false; for (DomainValue domainValue : domainValues) { int name = domainValue.getInt(); if (value == name) { iscontained = true; break; } } if (!iscontained) { msg = "Invalid domain value. '" + value + "' is not contained in domain " + discreteDomain.getId() + "."; } } return msg; } }