From: Benjamin B. <bg...@us...> - 2005-07-15 13:43:49
|
Update of /cvsroot/sblim/ecute/Plugin/com/ibm/ecute/rsa/core/internal/properties In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30178/Plugin/com/ibm/ecute/rsa/core/internal/properties Modified Files: FlavorsHelper.java Log Message: Qualifier flavors: qualifier values of qualifiers "Aggregation", "Composition", "Aggregate", "Min", "Max" and "Key" on references are inherited by subclasses on MOF import Index: FlavorsHelper.java =================================================================== RCS file: /cvsroot/sblim/ecute/Plugin/com/ibm/ecute/rsa/core/internal/properties/FlavorsHelper.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- FlavorsHelper.java 7 Jul 2005 15:42:49 -0000 1.1 +++ FlavorsHelper.java 15 Jul 2005 13:43:39 -0000 1.2 @@ -12,6 +12,7 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.uml2.AggregationKind; import org.eclipse.uml2.AssociationClass; import org.eclipse.uml2.Class; import org.eclipse.uml2.Constraint; @@ -70,11 +71,60 @@ } private void setClassFlavors(Class class_){ + ArrayList parentClasses = getAllParentClasses(class_); + ArrayList overrideAttributes = getOverrideAttributes(class_); ArrayList overrideMethods = getOverrideMethods(class_); ArrayList overrideReferences = getOverrideReferences(class_); - System.out.println("Juhuu!!!"); +// if(class_ instanceof AssociationClass && overrideReferences.size() > 0){ +// AssociationClass aClass = (AssociationClass)class_; +// setAssociationClassFlavors(aClass, parentClasses, overrideReferences); +// } + } + + private void setAssociationClassFlavors(AssociationClass aClass, ArrayList parentClasses, ArrayList overrideReferences){ + + // check if "aggregate" is set in association ends + List associationEnds = aClass.getOwnedEnds(); + for(int i = 0; i < associationEnds.size(); i++){ + Property associationEnd = (Property)associationEnds.get(i); + if(associationEnd.getAggregation().getValue() == AggregationKind.SHARED || + associationEnd.getAggregation().getValue() == AggregationKind.COMPOSITE){ + return; + } + } + + // if association is a normal association and not a aggregation or + // composition then check the parents if they are aggregation or composition + for(int k = 0; k < parentClasses.size(); k++){ + + //Class parentClass = (Class)parentClasses.get(k); + + if(parentClasses.get(k) instanceof AssociationClass){ + + + //Property assocEnd2 = (Property)aClass.getOwnedEnds().get(1); + + AssociationClass parentClass = (AssociationClass)parentClasses.get(k); + + for(int i = 0; i < overrideReferences.size(); i++){ + + Property assocEnd = (Property)overrideReferences.get(i); + + Property parentClassEnd = parentClass.getOwnedEnd(assocEnd.getName());//(Property)parentClassEnds.get(0); + //Property parentClassEnd2 = parentClass.getOwnedEnd(assocEnd2.getName());//(Property)parentClassEnds.get(1); + + +// assocEnd.setAggregation(parentClassEnd.getAggregation()); +// assocEnd.setLowerBound(parentClassEnd.getLower()); +// assocEnd.setUpperBound(parentClassEnd.getUpper()); + } + + + } + } + return; } private boolean existsQualifierListConstraint(){ @@ -390,6 +440,16 @@ } } + private Class getParentClass(Class class_){ + + List parents = class_.getGenerals(); + if(parents.size() > 0){ + return (Class)parents.get(0); + } else { + return null; + } + } + private String overrides(NamedElement namedElement){ Stereotype cimStereotype = namedElement.getAppliedStereotype("CIM::Qualifiers"); |