From: Benjamin B. <bg...@us...> - 2005-06-06 14:17:55
|
Update of /cvsroot/sblim/ecute/Plugin/com/ibm/ecute/rsa/core/internal/dialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1136/Plugin/com/ibm/ecute/rsa/core/internal/dialogs Modified Files: EditQualifiersDialog.java Log Message: 2.1 beta 1c full support of the OCL qualifier for a class as a class constraint Index: EditQualifiersDialog.java =================================================================== RCS file: /cvsroot/sblim/ecute/Plugin/com/ibm/ecute/rsa/core/internal/dialogs/EditQualifiersDialog.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- EditQualifiersDialog.java 2 Jun 2005 16:21:28 -0000 1.6 +++ EditQualifiersDialog.java 6 Jun 2005 14:17:44 -0000 1.7 @@ -1105,6 +1105,13 @@ addQualiferToValueTable(qualifierName, "true", definedIn, qualifierObject, -1, false); allAvailableQualifers.remove(qualifierObject); } + qualifierName = "OCL"; + String oclValue = existsOCL((Class)element); + if(oclValue != null){ + Qualifier qualifierObject = qualifiersList.GetElement(qualifierName); + addQualiferToValueTable(qualifierName, oclValue, definedIn, qualifierObject, -1, false); + allAvailableQualifers.remove(qualifierObject); + } } //Qualifiers with Parameter Scope @@ -3159,11 +3166,11 @@ } } - /* + // OCL if(qualifierName.equalsIgnoreCase("OCL")){ if (element instanceof Class){ - List elementList = ((Class)element).getPackage().getOwnedElements(); + List elementList = ((Class)element).getNearestPackage().getOwnedElements(); ArrayList constraintList = new ArrayList(); for (int i = 0; i < elementList.size(); i++){ if (elementList.get(i) instanceof Constraint) @@ -3181,19 +3188,38 @@ foundConstraint = true; if(newValue.equalsIgnoreCase("null")){ - elementList.remove(constraint); - //constraint.destroy(); - //diagramHelper.destroyView((View)constraint); + + //constraint.setSpecification(null); + constrainedElements.remove(0); + + ArrayList tempList = new ArrayList(elementList.size()-1); + for(int m = 0; m < elementList.size(); m++){ + + if(!(elementList.get(m) instanceof Constraint)){ + tempList.add(elementList.get(m)); + } else { + Constraint constr = (Constraint)elementList.get(m); + if(!constr.getName().equalsIgnoreCase(constraint.getName())){ + tempList.add(constr); + } + } + } + elementList = tempList; + constraint.destroy(); + break; } String tempBody, body = ""; // prepare constraint body content if(newValue.startsWith("{")){ + newValue = newValue.substring(1); + } + if(newValue.endsWith("}")){ int length = newValue.length(); - tempBody = newValue.substring(2, length - 2); - } else { - tempBody = newValue; + newValue = newValue.substring(0, length -1); } + tempBody = newValue.trim(); + int index = tempBody.indexOf(","); boolean multiple = false; if (index != -1) @@ -3211,10 +3237,8 @@ if (!multiple) body = tempBody; - //set constraint body and language + //set constraint body ((OpaqueExpression)constraint.getSpecification()).setBody(body); - - } } } @@ -3225,7 +3249,7 @@ createClassOCL((Class)element, newValue); } } - }*/ + } } private Class getSelectedClass(String name, Package package_, boolean otherPackages) { @@ -3643,34 +3667,6 @@ // create specification constraint.createSpecification(UML2Package.eINSTANCE.getOpaqueExpression()); setOCLBody(constraint, value); -// String tempBody, body = ""; -// // prepare constraint body content -// if(value.startsWith("{")){ -// int length = value.length(); -// tempBody = value.substring(2, length - 2); -// } else { -// tempBody = value; -// } -// int index = tempBody.indexOf(","); -// boolean multiple = false; -// if (index != -1) -// multiple = true; -// while (index != -1){ -// int length = tempBody.length(); -// body = body.concat(tempBody.substring(0, index - 1)); -// body = body.concat("\n"); -// tempBody = tempBody.substring(index + 2); -// index = tempBody.indexOf(","); -// } -// if (multiple){ -// body = body.concat(tempBody.substring(index + 1)); -// } -// if (!multiple) -// body = tempBody; -// -// //set constraint body and language -// ((OpaqueExpression)constraint.getSpecification()).setBody(body); -// ((OpaqueExpression)constraint.getSpecification()).setLanguage("OCL"); // get the connection line between the constraint and the class constraint.getConstrainedElements().add(lastClass); @@ -3691,6 +3687,37 @@ } } + private String existsOCL(Class class_ ){ + + String value = null; + + Package thisPackage = class_.getNearestPackage(); + EList ownedMembersList = thisPackage.getOwnedMembers(); + for(int i = 0; i < ownedMembersList.size(); i++){ + + if(ownedMembersList.get(i) instanceof Constraint){ + + Constraint thisConstraint = (Constraint)ownedMembersList.get(i); + EList constrainedElements = thisConstraint.getConstrainedElements(); + for(int j = 0; j < constrainedElements.size(); j++){ + + if(constrainedElements.get(j) instanceof Class){ + + Class thisClass = (Class)constrainedElements.get(j); + if(thisClass.equals(class_)){ + value = "{"+((OpaqueExpression)thisConstraint.getSpecification()).getBody()+"}"; + i = ownedMembersList.size(); + break; + } + } + } + } + } + + // return the cantent of the constraint + return value; + } + private void setOCLBody(Constraint constraint, String value){ String tempBody, body = ""; |