package org.eclipse.uml2.diagram.common.constraint; import org.eclipse.emf.common.util.EList; import org.eclipse.uml2.uml.Constraint; import org.eclipse.uml2.uml.OpaqueExpression; import org.eclipse.uml2.uml.ValueSpecification; public class ConstraintUtils { private static final String OCL_LANGUAGE = "OCL"; //$NON-NLS-1$ public static String getOCLConstraintBody(Constraint umlConstraint) { ValueSpecification s = umlConstraint.getSpecification(); if (s != null && s instanceof OpaqueExpression) { return getOCLBodyFromOpaqueExpression((OpaqueExpression) s); } return null; } public static void setOCLConstraintBody(Constraint umlConstraint, String body) { ValueSpecification s = umlConstraint.getSpecification(); if (s != null && s instanceof OpaqueExpression) { setOCLBodyToOpaqueExpression((OpaqueExpression) s, body); } } public static String getOCLBodyFromOpaqueExpression(OpaqueExpression e) { if (isOCLOpaqueExpression(e)) { EList<String> bodies = e.getBodies(); return bodies.isEmpty() ? null : bodies.get(0); } return null; } public static void setOCLBodyToOpaqueExpression(OpaqueExpression e, String body) { if (isOCLOpaqueExpression(e)) { EList<String> bodies = e.getBodies(); if (bodies.isEmpty()) { bodies.add(body); } else { bodies.set(0, body); } } } public static boolean isOCLOpaqueExpression(OpaqueExpression e) { EList<String> lans = e.getLanguages(); return !lans.isEmpty() && OCL_LANGUAGE.equals(lans.get(0)); } }