Author: tfmorris
Date: 2010-09-17 22:19:53-0700
New Revision: 18760
Modified:
trunk/src/argouml-app/src/org/argouml/notation/providers/uml/AttributeNotationUml.java
trunk/src/argouml-app/src/org/argouml/notation/providers/uml/MultiplicityNotationUml.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionMultiplicity.java
trunk/src/argouml-app/src/org/argouml/uml/ui/UMLMultiplicityPanel.java
trunk/src/argouml-app/src/org/argouml/uml/ui/behavior/collaborations/ActionSetClassifierRoleMultiplicity.java
trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionSetAssociationEndMultiplicity.java
trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionSetStructuralFeatureMultiplicity.java
trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/extension_mechanisms/ActionSetTagDefinitionMultiplicity.java
trunk/src/argouml-app/tests/org/argouml/model/TestCoreFactory.java
trunk/src/argouml-app/tests/org/argouml/model/TestDataTypesFactory.java
trunk/src/argouml-app/tests/org/argouml/model/TestExtensionMechanismsHelper.java
trunk/src/argouml-app/tests/org/argouml/notation/providers/uml/TestAttributeAndOperationNotationUml.java
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java
trunk/src/argouml-core-model-mdr/.settings/org.eclipse.jdt.core.prefs
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CollaborationsFactoryMDRImpl.java
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/DataTypesFactoryMDRImpl.java
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ExtensionMechanismsFactoryMDRImpl.java
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MDRModelImplementation.java
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UndoCoreHelperDecorator.java
trunk/src/argouml-core-model/src/org/argouml/model/AbstractCoreHelperDecorator.java
trunk/src/argouml-core-model/src/org/argouml/model/CoreFactory.java
trunk/src/argouml-core-model/src/org/argouml/model/CoreHelper.java
trunk/src/argouml-core-model/src/org/argouml/model/DataTypesFactory.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLMultiplicityPanel.java
Log:
RESOLVED - task 6155: Remove all application uses of createMultiplicity methods
http://argouml.tigris.org/issues/show_bug.cgi?id=6155
Modified: trunk/src/argouml-app/src/org/argouml/notation/providers/uml/AttributeNotationUml.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/notation/providers/uml/AttributeNotationUml.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/notation/providers/uml/AttributeNotationUml.java (original)
+++ trunk/src/argouml-app/src/org/argouml/notation/providers/uml/AttributeNotationUml.java 2010-09-17 22:19:53-0700
@@ -452,9 +452,7 @@
StringBuilder multiplicity, int multindex) throws ParseException {
if (multiplicity != null) {
try {
- Model.getCoreHelper().setMultiplicity(attribute,
- Model.getDataTypesFactory().createMultiplicity(
- multiplicity.toString().trim()));
+ Model.getCoreHelper().setMultiplicity(attribute, multiplicity.toString());
} catch (IllegalArgumentException iae) {
String msg = "parsing.error.attribute.bad-multiplicity";
Object[] args = {iae};
Modified: trunk/src/argouml-app/src/org/argouml/notation/providers/uml/MultiplicityNotationUml.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/notation/providers/uml/MultiplicityNotationUml.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/notation/providers/uml/MultiplicityNotationUml.java (original)
+++ trunk/src/argouml-app/src/org/argouml/notation/providers/uml/MultiplicityNotationUml.java 2010-09-17 22:19:53-0700
@@ -73,7 +73,7 @@
@Override
public void parse(final Object multiplicityOwner, final String text) {
try {
- parseMultiplicity(multiplicityOwner, text);
+ setMultiplicity(multiplicityOwner, text);
} catch (ParseException pe) {
final String msg = "statusmsg.bar.error.parsing.multiplicity";
final Object[] args = {pe.getLocalizedMessage(),
@@ -84,6 +84,12 @@
}
}
+ /**
+ * @deprecated by tfmorris for 0.31.6. No application code should expect
+ * to handle Multiplicty elements (the return value of this method). Use
+ * {@link #setMultiplicity(Object, String)}
+ */
+ @Deprecated
protected Object parseMultiplicity(final Object multiplicityOwner,
final String s1) throws ParseException {
String s = s1.trim();
@@ -93,10 +99,19 @@
} catch (IllegalArgumentException iae) {
throw new ParseException(iae.getLocalizedMessage(), 0);
}
- Model.getCoreHelper().setMultiplicity(multiplicityOwner, multi);
+ setMultiplicity(multiplicityOwner, s1);
return multi;
}
+ protected void setMultiplicity(final Object multiplicityOwner,
+ final String arg) throws ParseException {
+ try {
+ Model.getCoreHelper().setMultiplicity(multiplicityOwner, arg);
+ } catch (IllegalArgumentException iae) {
+ throw new ParseException(iae.getLocalizedMessage(), 0);
+ }
+ }
+
@Override
public String toString(Object modelElement, NotationSettings settings) {
return NotationUtilityUml.generateMultiplicity(modelElement,
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionMultiplicity.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionMultiplicity.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionMultiplicity.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionMultiplicity.java 2010-09-17 22:19:53-0700
@@ -123,10 +123,7 @@
if (!mult.equals(Model.getFacade().toString(
Model.getFacade().getMultiplicity(ascEnd)))) {
- Model.getCoreHelper().setMultiplicity(
- ascEnd,
- Model.getDataTypesFactory().createMultiplicity(
- (String) mult));
+ Model.getCoreHelper().setMultiplicity(ascEnd, (String) mult);
}
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/UMLMultiplicityPanel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/UMLMultiplicityPanel.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/UMLMultiplicityPanel.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/UMLMultiplicityPanel.java 2010-09-17 22:19:53-0700
@@ -120,25 +120,10 @@
if (event.getSource() == multiplicityComboBox && getTarget() != null) {
Object item = multiplicityComboBox.getSelectedItem();
Object target = multiplicityComboBoxModel.getTarget();
- Object multiplicity = Model.getFacade().getMultiplicity(target);
if (Model.getFacade().isAMultiplicity(item)) {
- if (!item.equals(multiplicity)) {
- Model.getCoreHelper().setMultiplicity(target, item);
- delete(multiplicity);
- }
+ Model.getCoreHelper().setMultiplicity(target, item);
} else if (item instanceof String) {
- if (!item.equals(Model.getFacade().toString(multiplicity))) {
- Model.getCoreHelper().setMultiplicity(
- target,
- Model.getDataTypesFactory().createMultiplicity(
- (String) item));
- delete(multiplicity);
- }
- } else {
- if (multiplicity != null) {
- Model.getCoreHelper().setMultiplicity(target, null);
- delete(multiplicity);
- }
+ Model.getCoreHelper().setMultiplicity(target, (String) item);
}
}
}
@@ -190,6 +175,7 @@
protected void doOnEdit(Object item) {
String text = (String) item;
try {
+ // TODO: Add a parse for syntax method?
Object multi =
Model.getDataTypesFactory().createMultiplicity(text);
if (multi != null) {
@@ -315,32 +301,19 @@
public void itemStateChanged(ItemEvent e) {
Object target = getTarget();
- Object oldValue = Model.getFacade().getMultiplicity(target);
// Note: MultiplicityComboBox.targetSet() can cause this event
// as well as user actions, so be sure to consider this in
// changing the following logic
- if (e.getStateChange() == ItemEvent.SELECTED) {
- String comboText =
- (String) multiplicityComboBox.getSelectedItem();
- if (oldValue == null
- || !comboText.equals(Model.getFacade().toString(
- oldValue))) {
- Object multi = Model.getDataTypesFactory()
- .createMultiplicity(comboText);
- if (multi == null) {
- Model.getCoreHelper().setMultiplicity(target, "1");
- } else {
- Model.getCoreHelper().setMultiplicity(target, multi);
- }
- delete(oldValue);
- }
+ if (e.getStateChange() == ItemEvent.SELECTED) {
+ Model.getCoreHelper().setMultiplicity(target,
+ (String) multiplicityComboBox.getSelectedItem());
+
multiplicityComboBox.setEnabled(true);
multiplicityComboBox.setEditable(true);
} else {
multiplicityComboBox.setEnabled(false);
multiplicityComboBox.setEditable(false);
Model.getCoreHelper().setMultiplicity(target, null);
- delete(oldValue);
}
}
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/behavior/collaborations/ActionSetClassifierRoleMultiplicity.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/behavior/collaborations/ActionSetClassifierRoleMultiplicity.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/behavior/collaborations/ActionSetClassifierRoleMultiplicity.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/behavior/collaborations/ActionSetClassifierRoleMultiplicity.java 2010-09-17 22:19:53-0700
@@ -68,19 +68,9 @@
if (target != null
&& Model.getFacade().isAClassifierRole(target)) {
if (Model.getFacade().isAMultiplicity(item)) {
- if (!item.equals(Model.getFacade().getMultiplicity(target))) {
- Model.getCoreHelper().setMultiplicity(target, item);
- }
+ Model.getCoreHelper().setMultiplicity(target, item);
} else if (item instanceof String) {
- if (!item.equals(Model.getFacade().toString(
- Model.getFacade().getMultiplicity(target)))) {
- Model.getCoreHelper().setMultiplicity(
- target,
- Model.getDataTypesFactory().createMultiplicity(
- (String) item));
- }
- } else {
- Model.getCoreHelper().setMultiplicity(target, null);
+ Model.getCoreHelper().setMultiplicity(target, (String) item);
}
}
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionSetAssociationEndMultiplicity.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionSetAssociationEndMultiplicity.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionSetAssociationEndMultiplicity.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionSetAssociationEndMultiplicity.java 2010-09-17 22:19:53-0700
@@ -65,19 +65,9 @@
public void setSelectedItem(Object item, Object target) {
if (target != null && Model.getFacade().isAAssociationEnd(target)) {
if (Model.getFacade().isAMultiplicity(item)) {
- if (!item.equals(Model.getFacade().getMultiplicity(target))) {
- Model.getCoreHelper().setMultiplicity(target, item);
- }
+ Model.getCoreHelper().setMultiplicity(target, item);
} else if (item instanceof String) {
- if (!item.equals(Model.getFacade().toString(
- Model.getFacade().getMultiplicity(target)))) {
- Model.getCoreHelper().setMultiplicity(
- target,
- Model.getDataTypesFactory().createMultiplicity(
- (String) item));
- }
- } else {
- Model.getCoreHelper().setMultiplicity(target, null);
+ Model.getCoreHelper().setMultiplicity(target, (String) item);
}
}
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionSetStructuralFeatureMultiplicity.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionSetStructuralFeatureMultiplicity.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionSetStructuralFeatureMultiplicity.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionSetStructuralFeatureMultiplicity.java 2010-09-17 22:19:53-0700
@@ -64,22 +64,11 @@
* java.lang.Object, java.lang.Object)
*/
public void setSelectedItem(Object item, Object target) {
- if (target != null
- && Model.getFacade().isAStructuralFeature(target)) {
+ if (target != null && Model.getFacade().isAStructuralFeature(target)) {
if (Model.getFacade().isAMultiplicity(item)) {
- if (!item.equals(Model.getFacade().getMultiplicity(target))) {
- Model.getCoreHelper().setMultiplicity(target, item);
- }
+ Model.getCoreHelper().setMultiplicity(target, item);
} else if (item instanceof String) {
- if (!item.equals(Model.getFacade().toString(
- Model.getFacade().getMultiplicity(target)))) {
- Model.getCoreHelper().setMultiplicity(
- target,
- Model.getDataTypesFactory().createMultiplicity(
- (String) item));
- }
- } else {
- Model.getCoreHelper().setMultiplicity(target, null);
+ Model.getCoreHelper().setMultiplicity(target, (String) item);
}
}
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/extension_mechanisms/ActionSetTagDefinitionMultiplicity.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/extension_mechanisms/ActionSetTagDefinitionMultiplicity.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/extension_mechanisms/ActionSetTagDefinitionMultiplicity.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/extension_mechanisms/ActionSetTagDefinitionMultiplicity.java 2010-09-17 22:19:53-0700
@@ -63,25 +63,13 @@
* java.lang.Object, java.lang.Object)
*/
public void setSelectedItem(Object item, Object target) {
- if (target != null
- && Model.getFacade().isATagDefinition(target)) {
+ if (target != null && Model.getFacade().isATagDefinition(target)) {
if (Model.getFacade().isAMultiplicity(item)) {
- if (!item.equals(Model.getFacade().getMultiplicity(target))) {
- Model.getCoreHelper().setMultiplicity(target, item);
- }
+ Model.getCoreHelper().setMultiplicity(target, item);
} else if (item instanceof String) {
- if (!item.equals(Model.getFacade().toString(
- Model.getFacade().getMultiplicity(target)))) {
- Model.getCoreHelper().setMultiplicity(
- target,
- Model.getDataTypesFactory().createMultiplicity(
- (String) item));
- }
- } else {
- Model.getCoreHelper().setMultiplicity(target, null);
+ Model.getCoreHelper().setMultiplicity(target, (String) item);
}
}
-
}
}
Modified: trunk/src/argouml-app/tests/org/argouml/model/TestCoreFactory.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/tests/org/argouml/model/TestCoreFactory.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-app/tests/org/argouml/model/TestCoreFactory.java (original)
+++ trunk/src/argouml-app/tests/org/argouml/model/TestCoreFactory.java 2010-09-17 22:19:53-0700
@@ -690,27 +690,25 @@
Object class1 = Model.getCoreFactory().buildClass("Class1", model);
Object class2 = Model.getCoreFactory().buildClass("Class2", model);
Object assoc = Model.getCoreFactory().createAssociation();
- Object unlimited = Model.getDataTypesFactory().createMultiplicity(0, -1);
- Object ordering = Model.getOrderingKind().getUnordered();
+ Object ordering = Model.getOrderingKind().getUnordered();
Object aggComposite = Model.getAggregationKind().getComposite();
Object scope = Model.getScopeKind().getInstance(); // not static
Object changeable = Model.getChangeableKind().getChangeable();
Object visibility = Model.getVisibilityKind().getPrivate();
try {
Model.getCoreFactory().buildAssociationEnd(assoc, "End", class1,
- unlimited, null, false, ordering, aggComposite, scope,
- changeable, visibility);
+ new Integer[] {0, -1}, null, false, ordering, aggComposite,
+ scope, changeable, visibility);
fail("Creation of aggregate association end with multiplicity "
+ "of 'unlimited' should throw an exception");
} catch (IllegalArgumentException e) {
// Test passed
}
- Object multi2 = Model.getDataTypesFactory().createMultiplicity(0, 2);
try {
Model.getCoreFactory().buildAssociationEnd(assoc, "End", class1,
- multi2, null, false, ordering, aggComposite, scope,
- changeable, visibility);
+ new Integer[] {0, 2}, null, false, ordering, aggComposite,
+ scope, changeable, visibility);
fail("Creation of aggregate association end with multiplicity "
+ "of 2 should throw an exception");
} catch (IllegalArgumentException e) {
@@ -719,14 +717,13 @@
Object aggNone = Model.getAggregationKind().getNone();
Object ae = Model.getCoreFactory().buildAssociationEnd(assoc, "End",
- class1, multi2, null, false, ordering, aggNone, scope,
- changeable, visibility);
+ class1, new Integer[] {0, 2}, null, false, ordering, aggNone,
+ scope, changeable, visibility);
assertTrue(Model.getFacade().isAAssociationEnd(ae));
ae = null;
- Object multi1 = Model.getDataTypesFactory().createMultiplicity(0, 1);
- ae = Model.getCoreFactory().buildAssociationEnd(assoc, "End",
- class1, multi1, null, false, ordering, aggComposite, scope,
+ ae = Model.getCoreFactory().buildAssociationEnd(assoc, "End", class1,
+ new Integer[] {0, 1}, null, false, ordering, aggComposite, scope,
changeable, visibility);
assertTrue(Model.getFacade().isAAssociationEnd(ae));
}
Modified: trunk/src/argouml-app/tests/org/argouml/model/TestDataTypesFactory.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/tests/org/argouml/model/TestDataTypesFactory.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-app/tests/org/argouml/model/TestDataTypesFactory.java (original)
+++ trunk/src/argouml-app/tests/org/argouml/model/TestDataTypesFactory.java 2010-09-17 22:19:53-0700
@@ -38,8 +38,6 @@
package org.argouml.model;
-import java.util.LinkedList;
-
import junit.framework.TestCase;
/**
@@ -99,14 +97,6 @@
objs,
args);
- // Multiplicity
-
- CheckUMLModelHelper.deleteAndRelease(dtf.createMultiplicity(1, 10));
-
- CheckUMLModelHelper.deleteAndRelease(
- dtf.createMultiplicity(new LinkedList()));
-
- CheckUMLModelHelper.deleteAndRelease(dtf.createMultiplicity("1..10"));
// Do we need to add tests for the following?
//
Modified: trunk/src/argouml-app/tests/org/argouml/model/TestExtensionMechanismsHelper.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/tests/org/argouml/model/TestExtensionMechanismsHelper.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-app/tests/org/argouml/model/TestExtensionMechanismsHelper.java (original)
+++ trunk/src/argouml-app/tests/org/argouml/model/TestExtensionMechanismsHelper.java 2010-09-17 22:19:53-0700
@@ -190,8 +190,7 @@
Object td = Model.getExtensionMechanismsFactory().buildTagDefinition(
"testTD", stereotype, null, "String");
Model.getExtensionMechanismsHelper().setTagType(td, "Boolean");
- Object mult = Model.getDataTypesFactory().createMultiplicity("1..3");
- Model.getCoreHelper().setMultiplicity(td, mult);
+ Model.getCoreHelper().setMultiplicity(td, "1..3");
assertEquals("1..3", facade.toString(facade.getMultiplicity(td)));
}
}
Modified: trunk/src/argouml-app/tests/org/argouml/notation/providers/uml/TestAttributeAndOperationNotationUml.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/tests/org/argouml/notation/providers/uml/TestAttributeAndOperationNotationUml.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-app/tests/org/argouml/notation/providers/uml/TestAttributeAndOperationNotationUml.java (original)
+++ trunk/src/argouml-app/tests/org/argouml/notation/providers/uml/TestAttributeAndOperationNotationUml.java 2010-09-17 22:19:53-0700
@@ -362,20 +362,17 @@
attr = Model.getCoreFactory().buildAttribute2(attrType);
Model.getCoreHelper().setNamespace(attr, model);
- checkMultiplicity(attr, ATTR04,
- Model.getDataTypesFactory().createMultiplicity("1..1"));
+ checkMultiplicity(attr, ATTR04, 1, 1);
attr = Model.getCoreFactory().buildAttribute2(attrType);
Model.getCoreHelper().setNamespace(attr, model);
- checkMultiplicity(attr, ATTR05,
- Model.getDataTypesFactory().createMultiplicity("1..*"));
+ checkMultiplicity(attr, ATTR05, 1, -1);
attr = Model.getCoreFactory().buildAttribute2(attrType);
Model.getCoreHelper().setNamespace(attr, model);
- checkMultiplicity(attr, ATTR06,
- Model.getDataTypesFactory().createMultiplicity("*..*"));
+ checkMultiplicity(attr, ATTR06, 0, -1);
}
/**
@@ -910,32 +907,20 @@
private void checkMultiplicity(
Object attr,
String text,
- Object mult)
+ int lower,
+ int upper)
throws ParseException {
AttributeNotationUml anu = new AttributeNotationUml(attr);
anu.parseAttribute(text, attr);
- if (mult == null) {
- assertTrue(
- text
- + " gave wrong multiplicity: "
- + (Model.getFacade().getMultiplicity(attr) == null
- ? "(null)"
- : Model.getFacade().toString(Model.getFacade().
- getMultiplicity(attr))),
- Model.getFacade().getMultiplicity(attr) == null);
- } else {
- assertTrue(
- text
- + " gave wrong multiplicity: "
- + (Model.getFacade().getMultiplicity(attr) == null
- ? "(null)"
- : Model.getFacade().toString(Model.getFacade().
- getMultiplicity(attr))),
- Model.getFacade().toString(mult).equals(
- Model.getFacade().toString(
- Model.getFacade().getMultiplicity(attr))));
- }
+ Object m = Model.getFacade().getMultiplicity(attr);
+ int l = Model.getFacade().getLower(m);
+ int u = Model.getFacade().getUpper(m);
+ assertTrue(text + " gave wrong multiplicity: "
+ + (Model.getFacade().getMultiplicity(attr) == null ? "(null)"
+ : Model.getFacade().toString(m)),
+ (lower == l && upper == u));
+
}
private void checkThrows(
Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java (original)
+++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java 2010-09-17 22:19:53-0700
@@ -300,6 +300,9 @@
"The multilicity of the property must" + //$NON-NLS-1$
" be instance of MultiplicityElement."); //$NON-NLS-1$
}
+ MultiplicityElement m = (MultiplicityElement) multi;
+ final int lower = m.getLower();
+ final int upper = m.getUpper();
if ((order != null && !(order instanceof Boolean))
|| (changeable != null && !(changeable instanceof Boolean))) {
throw new IllegalArgumentException(
@@ -314,9 +317,9 @@
public void run() {
Property property = buildAssociationEndInternal(
(Association) assoc, name, (Type) type,
- (MultiplicityElement) multi, (Stereotype) stereo,
+ new Integer[] {lower, upper}, (Stereotype) stereo,
navigable, (Boolean) order,
- (AggregationKind) aggregation, (Boolean) scope,
+ (AggregationKind) aggregation,(Boolean) scope,
(Boolean) changeable, (VisibilityKind) visibility);
getParams().add(property);
}
@@ -344,7 +347,7 @@
private Property buildAssociationEndInternal(final Association assoc,
final String name, final Type type,
- final MultiplicityElement multi, final Stereotype stereo,
+ final Integer[] multi, final Stereotype stereo,
final Boolean navigable, final Boolean order,
final AggregationKind aggregation, final Object scope,
final Object changeable, final VisibilityKind visibility) {
@@ -370,13 +373,11 @@
property.setVisibility((VisibilityKind) visibility);
}
if (multi != null) {
- if (((MultiplicityElement) multi).getLowerValue() != null) {
- property.setLowerValue(
- ((MultiplicityElement) multi).getLowerValue());
- }
- if (((MultiplicityElement) multi).getUpperValue() != null) {
- property.setLowerValue(
- ((MultiplicityElement) multi).getUpperValue());
+ if (multi[0] != null) {
+ property.setLower(multi[0]);
+ }
+ if (multi[1] != null) {
+ property.setUpper(multi[1]);
}
}
if (order != null) {
@@ -393,15 +394,24 @@
return property;
}
+ @Deprecated
public Property buildAssociationEnd(Object assoc, String name, Object type,
Object multi, Object stereo, boolean navigable, Object order,
Object aggregation, Object scope, Object changeable,
Object visibility) {
- return buildAssociationEnd(
- assoc, name, type, multi, stereo, navigable, order,
- aggregation, scope, changeable, visibility);
+ throw new NotImplementedException();
}
+ public Property buildAssociationEnd(Object assoc, String name, Object type,
+ Integer[] multi, Object stereo, boolean navigable, Object order,
+ Object aggregation, Object scope, Object changeable,
+ Object visibility) {
+ return buildAssociationEndInternal((Association) assoc, name,
+ (Type) type, multi, (Stereotype) stereo, (Boolean) navigable,
+ (Boolean) order, (AggregationKind) aggregation, scope,
+ changeable, (VisibilityKind) visibility);
+ }
+
public Property buildAssociationEnd(Object type, Object assoc) {
return buildAssociationEnd(
assoc, null, type, null, null, null, null, null, null, null,
Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java (original)
+++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java 2010-09-17 22:19:53-0700
@@ -1526,8 +1526,17 @@
addOwnedElement(container, handle);
}
+ @Deprecated
public void setMultiplicity(final Object handle, Object arg) {
- if (arg == null || arg.equals("")) {
+ throw new NotImplementedException();
+ }
+
+ public void setMultiplicity(final Object handle, String arg) {
+ if (!(handle instanceof MultiplicityElement)) {
+ throw new IllegalArgumentException(
+ "A MultiplicityElement was expected"); //$NON-NLS-1$
+ }
+ if (arg == null || arg.equals("")) { //$NON-NLS-1$
RunnableClass run = new RunnableClass() {
public void run() {
((MultiplicityElement) handle).setLowerValue(null);
@@ -1541,50 +1550,47 @@
handle));
return;
}
- if (!(handle instanceof MultiplicityElement)) {
- throw new IllegalArgumentException(
- "A MultiplicityElement was expected"); //$NON-NLS-1$
- }
- if (arg instanceof String) {
- String s = (String) arg;
- int lower = 1, upper = 1;
- if ("*".equals(s.trim())) { //$NON-NLS-1$
- lower = 0;
+ int[] range = parseMultiplicity(arg);
+ setMultiplicity(handle, range[0], range[1]);
+
+ }
+
+ private int[] parseMultiplicity(String arg) {
+ int lower = 1, upper = 1;
+
+ if ("*".equals(arg.trim())) { //$NON-NLS-1$
+ lower = 0;
+ upper = -1;
+ } else if (arg.contains("..")) { //$NON-NLS-1$
+ String[] pieces = arg.trim().split("\\.\\."); //$NON-NLS-1$
+ if (pieces.length > 2) {
+ throw new IllegalArgumentException((String) arg);
+ }
+ lower = Integer.parseInt(pieces[0]);
+ if ("*".equals(pieces[1])) { //$NON-NLS-1$
upper = -1;
- } else if (s.contains("..")) { //$NON-NLS-1$
- String[] pieces = s.trim().split("\\.\\."); //$NON-NLS-1$
- if (pieces.length > 2) {
- throw new IllegalArgumentException((String) arg);
- }
- lower = Integer.parseInt(pieces[0]);
- if ("*".equals(pieces[1])) { //$NON-NLS-1$
- upper = -1;
- } else {
- upper = Integer.parseInt(pieces[1]);
- }
- } else if (s.contains("_")) { //$NON-NLS-1$
- // also parse 1_* or 0_N etc.
- String[] pieces = s.trim().split("_"); //$NON-NLS-1$
- if (pieces.length > 2) {
- throw new IllegalArgumentException((String) arg);
- }
- lower = Integer.parseInt(pieces[0]);
- if ("*".equals(pieces[1]) //$NON-NLS-1$
- || "N".equals(pieces[1])) { //$NON-NLS-1$
- upper = -1;
- } else {
- upper = Integer.parseInt(pieces[1]);
- }
- } else {
- lower = Integer.parseInt(s);
- upper = lower;
+ } else {
+ upper = Integer.parseInt(pieces[1]);
}
-
- setMultiplicity(handle, lower, upper);
- } else {
- throw new NotYetImplementedException();
+ } else if (arg.contains("_")) { //$NON-NLS-1$
+ // also parse 1_* or 0_N etc.
+ String[] pieces = arg.trim().split("_"); //$NON-NLS-1$
+ if (pieces.length > 2) {
+ throw new IllegalArgumentException((String) arg);
+ }
+ lower = Integer.parseInt(pieces[0]);
+ if ("*".equals(pieces[1]) //$NON-NLS-1$
+ || "N".equals(pieces[1])) { //$NON-NLS-1$
+ upper = -1;
+ } else {
+ upper = Integer.parseInt(pieces[1]);
+ }
+ } else {
+ lower = Integer.parseInt(arg);
+ upper = lower;
}
+ return new int[] {lower, upper};
}
public void setMultiplicity(
Modified: trunk/src/argouml-core-model-mdr/.settings/org.eclipse.jdt.core.prefs
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/.settings/org.eclipse.jdt.core.prefs?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-core-model-mdr/.settings/org.eclipse.jdt.core.prefs (original)
+++ trunk/src/argouml-core-model-mdr/.settings/org.eclipse.jdt.core.prefs 2010-09-17 22:19:53-0700
@@ -1,4 +1,4 @@
-#Fri Mar 27 09:54:03 EDT 2009
+#Fri Sep 17 19:00:39 GMT 2010
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
@@ -11,12 +11,16 @@
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=enabled
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
@@ -33,6 +37,7 @@
org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
@@ -41,11 +46,18 @@
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
@@ -58,13 +70,18 @@
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.source=1.5
org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CollaborationsFactoryMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CollaborationsFactoryMDRImpl.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CollaborationsFactoryMDRImpl.java (original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CollaborationsFactoryMDRImpl.java 2010-09-17 22:19:53-0700
@@ -1,6 +1,6 @@
/* $Id$
*****************************************************************************
- * Copyright (c) 2009 Contributors - see below
+ * Copyright (c) 2009,2010 Contributors - see below
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -8,6 +8,7 @@
*
* Contributors:
* bobtarling
+ * Tom Morris
*****************************************************************************
*
* Some portions of this file was previously release using the BSD License:
@@ -164,8 +165,7 @@
Collaboration myCollaboration = (Collaboration) collaboration;
ClassifierRole classifierRole = createClassifierRole();
classifierRole.setNamespace(myCollaboration);
- classifierRole.setMultiplicity((Multiplicity) Model
- .getDataTypesFactory().createMultiplicity("1..1"));
+ modelImpl.getCoreHelper().setMultiplicity(classifierRole, 1, 1);
return classifierRole;
}
Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java (original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java 2010-09-17 22:19:53-0700
@@ -1,6 +1,6 @@
/* $Id$
*****************************************************************************
- * Copyright (c) 2009 Contributors - see below
+ * Copyright (c) 2009,2010 Contributors - see below
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -9,6 +9,7 @@
* Contributors:
* bobtarling
* Thomas Neustupny
+ * Tom Morris
*****************************************************************************
*
* Some portions of this file was previously release using the BSD License:
@@ -596,18 +597,69 @@
public AssociationEnd buildAssociationEnd(Object assoc, String name,
+ Object type, Integer[] multiplicity, Object stereo, boolean navigable,
+ Object order, Object aggregation, Object scope, Object changeable,
+ Object visibility) {
+ if (aggregation != null
+ && aggregation.equals(AggregationKindEnum.AK_COMPOSITE)
+ && multiplicity != null
+ && (multiplicity[1] > 1 || multiplicity[1] == -1) ) {
+ throw new IllegalArgumentException("aggregation is composite "
+ + "and multiplicity > 1");
+ }
+ AssociationEnd ae = buildAssociationEndInternal(assoc, name, type,
+ stereo, navigable, order, aggregation, scope, changeable,
+ visibility);
+ if (multiplicity != null) {
+ Multiplicity m = modelImpl.getDataTypesFactoryInternal()
+ .createMultiplicityInternal(multiplicity[0],
+ multiplicity[1]);
+ ae.setMultiplicity(m);
+ }
+ return ae;
+ }
+
+ @Deprecated
+ public AssociationEnd buildAssociationEnd(Object assoc, String name,
Object type, Object multi, Object stereo, boolean navigable,
Object order, Object aggregation, Object scope, Object changeable,
Object visibility) {
+ if (multi != null && !(multi instanceof Multiplicity)) {
+ throw new IllegalArgumentException("Multiplicity");
+ }
+ if (aggregation != null
+ && aggregation.equals(AggregationKindEnum.AK_COMPOSITE)
+ && multi != null
+ && compareMultiplicity(getMaxUpper((Multiplicity) multi), 1)
+ > 0) {
+ throw new IllegalArgumentException("aggregation is composite "
+ + "and multiplicity > 1");
+ }
+ AssociationEnd ae = buildAssociationEndInternal(assoc, name, type,
+ stereo, navigable, order, aggregation, scope, changeable,
+ visibility);
+ if (multi == null) {
+ ae.setMultiplicity(getMultiplicity11());
+ } else if (multi instanceof Multiplicity) {
+ ae.setMultiplicity((Multiplicity) multi);
+ } else if (multi instanceof String) {
+ Multiplicity m = modelImpl.getDataTypesFactoryInternal()
+ .createMultiplicityInternal((String) multi);
+ ae.setMultiplicity(m);
+ }
+ return ae;
+ }
+
+ private AssociationEnd buildAssociationEndInternal (Object assoc, String name,
+ Object type, Object stereo, boolean navigable,
+ Object order, Object aggregation, Object scope, Object changeable,
+ Object visibility) {
// wellformednessrules and preconditions
if (assoc == null || !(assoc instanceof UmlAssociation) || type == null
|| !(type instanceof Classifier)) {
throw new IllegalArgumentException("either type or association "
+ "are null");
}
- if (multi != null && !(multi instanceof Multiplicity)) {
- throw new IllegalArgumentException("Multiplicity");
- }
if (stereo != null && !(stereo instanceof Stereotype)) {
throw new IllegalArgumentException("Stereotype");
}
@@ -627,15 +679,6 @@
throw new IllegalArgumentException("VisibilityKind");
}
- if (aggregation != null
- && aggregation.equals(AggregationKindEnum.AK_COMPOSITE)
- && multi != null
- && compareMultiplicity(getMaxUpper((Multiplicity) multi), 1)
- > 0) {
- throw new IllegalArgumentException("aggregation is composite "
- + "and multiplicity > 1");
- }
-
AssociationEnd end = createAssociationEnd();
end.setAssociation((UmlAssociation) assoc);
end.setParticipant((Classifier) type);
@@ -647,11 +690,6 @@
e.setAggregation(AggregationKindEnum.AK_NONE);
}
}
- if (multi != null) {
- end.setMultiplicity((Multiplicity) multi);
- } else {
- end.setMultiplicity(getMultiplicity11());
- }
if (stereo != null) {
end.getStereotype().clear();
end.getStereotype().add((Stereotype) stereo);
@@ -731,8 +769,8 @@
* Get a 1..1 multiplicity
*/
private Multiplicity getMultiplicity11() {
- return (Multiplicity) modelImpl.getDataTypesFactory()
- .createMultiplicity(1, 1);
+ return modelImpl.getDataTypesFactoryInternal()
+ .createMultiplicityInternal(1, 1);
}
@@ -2221,6 +2259,7 @@
* @param target the new attribute to be adapted
*/
void doCopyAttribute(Attribute source, Attribute target) {
+ // TODO: Delete old multiplicity? Why is "copy" using hard coded value? - tfm
target.setMultiplicity(getMultiplicity11());
target.setChangeability(source.getChangeability());
target.setTargetScope(source.getTargetScope());
Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java (original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java 2010-09-17 22:19:53-0700
@@ -9,6 +9,7 @@
* Contributors:
* Thomas Neustupny
* Michiel van der Wulp
+ * Tom Morris
*****************************************************************************
*
* Some portions of this file was previously release using the BSD License:
@@ -2933,66 +2934,76 @@
}
}
+ public void setMultiplicity(Object handle, String arg) {
+ setMultiplicity(handle,createMultiplicity(arg));
+ }
+ private void setMultiplicity(Object handle, Multiplicity arg) {
+ Multiplicity previousMult =
+ (Multiplicity) Model.getFacade().getMultiplicity(handle);
+ if (handle instanceof AssociationRole) {
+ ((AssociationRole) handle).setMultiplicity(arg);
+ } else if (handle instanceof ClassifierRole) {
+ ((ClassifierRole) handle).setMultiplicity(arg);
+ } else if (handle instanceof StructuralFeature) {
+ ((StructuralFeature) handle).setMultiplicity(arg);
+ } else if (handle instanceof AssociationEnd) {
+ ((AssociationEnd) handle).setMultiplicity(arg);
+ } else if (handle instanceof TagDefinition) {
+ ((TagDefinition) handle).setMultiplicity(arg);
+ }
+ if (previousMult != null &&
+ Model.getFacade().getModelElementContainer(previousMult)
+ == null) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Previous multiplicity of " + handle + " will be deleted." + arg);
+ }
+ Model.getUmlFactory().delete(previousMult);
+ }
+ }
+
+ @Deprecated
public void setMultiplicity(Object handle, Object arg) {
if (arg instanceof String) {
- String sarg = (String) arg;
- boolean allDigits = true;
- for (int i=0; i < sarg.length(); ++i) {
- if (!Character.isDigit(sarg.charAt(i))) {
- allDigits = false;
- }
- }
- if (allDigits || sarg.indexOf('.') > -1 || sarg.indexOf(',') > -1) {
- arg =
- modelImpl.getDataTypesFactory().createMultiplicity(sarg);
- } else {
- // TODO: We have multiple string representations for multiplicities
- // these should be consolidated. This form is used by
- // org.argouml.uml.reveng
- if ("1_N".equals(arg)) {
- arg =
- modelImpl.getDataTypesFactory().createMultiplicity(1, -1);
- } else {
- arg = modelImpl.getDataTypesFactory().createMultiplicity(1, 1);
- }
- }
+ setMultiplicity(handle, (String) arg);
+ return;
}
-
if (arg == null || arg instanceof Multiplicity) {
- Multiplicity mult = (Multiplicity) arg;
- Multiplicity previousMult =
- (Multiplicity) Model.getFacade().getMultiplicity(handle);
- if (handle instanceof AssociationRole) {
- ((AssociationRole) handle).setMultiplicity(mult);
- } else if (handle instanceof ClassifierRole) {
- ((ClassifierRole) handle).setMultiplicity(mult);
- } else if (handle instanceof StructuralFeature) {
- ((StructuralFeature) handle).setMultiplicity(mult);
- } else if (handle instanceof AssociationEnd) {
- ((AssociationEnd) handle).setMultiplicity(mult);
- } else if (handle instanceof TagDefinition) {
- ((TagDefinition) handle).setMultiplicity(mult);
- }
- if (previousMult != null &&
- Model.getFacade().getModelElementContainer(previousMult)
- == null) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Previous multiplicity of " + handle + " will be deleted." + mult);
- }
- Model.getUmlFactory().delete(previousMult);
- }
- return;
+ setMultiplicity(handle, (Multiplicity) arg);
} else {
throw new IllegalArgumentException("handle: " + handle + " or arg: "
+ arg);
}
}
+ private Multiplicity createMultiplicity(String sarg) {
+ boolean allDigits = true;
+ for (int i=0; i < sarg.length(); ++i) {
+ if (!Character.isDigit(sarg.charAt(i))) {
+ allDigits = false;
+ }
+ }
+ if (allDigits || sarg.indexOf('.') > -1 || sarg.indexOf(',') > -1) {
+ return modelImpl.getDataTypesFactoryInternal()
+ .createMultiplicityInternal(sarg);
+ } else {
+ // TODO: We have multiple string representations for multiplicities
+ // these should be consolidated. This form is used by
+ // org.argouml.uml.reveng
+ if ("1_N".equals(sarg)) {
+ return modelImpl.getDataTypesFactoryInternal()
+ .createMultiplicityInternal(1, -1);
+ } else {
+ return modelImpl.getDataTypesFactoryInternal()
+ .createMultiplicityInternal(1, 1);
+ }
+ }
+ }
+
public void setMultiplicity(Object handle, int lower, int upper) {
- Object arg =
- modelImpl.getDataTypesFactory().createMultiplicity(lower, upper);
+ Multiplicity arg = modelImpl.getDataTypesFactoryInternal()
+ .createMultiplicityInternal(lower, upper);
setMultiplicity(handle, arg);
}
Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/DataTypesFactoryMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/DataTypesFactoryMDRImpl.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/DataTypesFactoryMDRImpl.java (original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/DataTypesFactoryMDRImpl.java 2010-09-17 22:19:53-0700
@@ -1,13 +1,13 @@
/* $Id$
*****************************************************************************
- * Copyright (c) 2009 Contributors - see below
+ * Copyright (c) 2009,2010 Contributors - see below
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * tfmorris
+ * Tom Morris
*****************************************************************************
*
* Some portions of this file was previously release using the BSD License:
@@ -177,7 +177,12 @@
}
+ @Deprecated
public Multiplicity createMultiplicity(int lower, int upper) {
+ return createMultiplicityInternal(lower, upper);
+ }
+
+ Multiplicity createMultiplicityInternal(int lower, int upper) {
Multiplicity multiplicity = modelImpl.getUmlPackage().getDataTypes()
.getMultiplicity().createMultiplicity();
if (LOG.isDebugEnabled()) {
@@ -187,7 +192,7 @@
super.initialize(multiplicity);
return multiplicity;
}
-
+
/*
* TODO: As currently implemented, this expects a list of
* MultiplicityRanges. Is this an interface change from the NSUML
@@ -195,7 +200,12 @@
*
* @see org.argouml.model.DataTypesFactory#createMultiplicity(java.util.List)
*/
- public Multiplicity createMultiplicity(List range) {
+ @Deprecated
+ public Multiplicity createMultiplicity(final List range) {
+ return createMultiplicityInternal(range);
+ }
+
+ Multiplicity createMultiplicityInternal(final List<MultiplicityRange> range) {
Multiplicity multiplicity = modelImpl.getUmlPackage().getDataTypes()
.getMultiplicity().createMultiplicity();
if (LOG.isDebugEnabled()) {
@@ -205,14 +215,18 @@
super.initialize(multiplicity);
return multiplicity;
}
-
-
- public Multiplicity createMultiplicity(String str) {
+
+ @Deprecated
+ public Multiplicity createMultiplicity(final String str) {
+ return createMultiplicityInternal(str);
+ }
+
+ Multiplicity createMultiplicityInternal(final String str) {
List<MultiplicityRange> ranges =
Collections.unmodifiableList(parseRanges(str));
return createMultiplicity(ranges);
}
-
+
private List<MultiplicityRange> parseRanges(String str) {
List<MultiplicityRange> rc = new ArrayList<MultiplicityRange>();
// Return 1..1 multiplicity for empty string
@@ -224,10 +238,15 @@
while (stk.hasMoreTokens()) {
rc.add(createMultiplicityRange(stk.nextToken()));
}
+ if (rc.size() > 1) {
+ LOG.debug("UML 2.x does not support multiple multiplicity ranges. "
+ + str);
+ }
return rc;
}
+ @Deprecated
public MultiplicityRange createMultiplicityRange(String str) {
StringTokenizer stk = new StringTokenizer(str, ". ");
if (!stk.hasMoreTokens()) {
@@ -252,7 +271,9 @@
}
- public MultiplicityRange createMultiplicityRange(int lower, int upper) {
+ @Deprecated
+ public MultiplicityRange createMultiplicityRange(final int lower,
+ final int upper) {
MultiplicityRange range =
modelImpl.getUmlPackage().getDataTypes().getMultiplicityRange()
.createMultiplicityRange(lower, upper);
Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ExtensionMechanismsFactoryMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ExtensionMechanismsFactoryMDRImpl.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ExtensionMechanismsFactoryMDRImpl.java (original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ExtensionMechanismsFactoryMDRImpl.java 2010-09-17 22:19:53-0700
@@ -1,13 +1,13 @@
/* $Id$
*****************************************************************************
- * Copyright (c) 2009 Contributors - see below
+ * Copyright (c) 2009,2010 Contributors - see below
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * tfmorris
+ * Tom Morris
*****************************************************************************
*
* Some portions of this file was previously release using the BSD License:
@@ -381,8 +381,7 @@
coreHelper.setNamespace(td, ns);
}
coreHelper.setName(td, name);
- coreHelper.setMultiplicity(td, org.argouml.model.Model
- .getDataTypesFactory().createMultiplicity(0, 1));
+ coreHelper.setMultiplicity(td, 0, 1);
td.setTagType(tagType);
return td;
}
@@ -437,7 +436,7 @@
target.setTagType(source.getTagType());
String srcMult = org.argouml.model.Model.getFacade().toString(
source.getMultiplicity());
- target.setMultiplicity((Multiplicity) org.argouml.model.Model
- .getDataTypesFactory().createMultiplicity(srcMult));
+ target.setMultiplicity(modelImpl.getDataTypesFactoryInternal()
+ .createMultiplicityInternal(srcMult));
}
}
Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MDRModelImplementation.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MDRModelImplementation.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MDRModelImplementation.java (original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MDRModelImplementation.java 2010-09-17 22:19:53-0700
@@ -148,7 +148,7 @@
private CommonBehaviorHelper theCommonBehaviorHelper;
- private DataTypesFactory theDataTypesFactory;
+ private DataTypesFactoryMDRImpl theDataTypesFactory;
private DataTypesHelper theDataTypesHelper;
@@ -694,6 +694,10 @@
return theDataTypesFactory;
}
+ DataTypesFactoryMDRImpl getDataTypesFactoryInternal() {
+ return theDataTypesFactory;
+ }
+
/*
* @see org.argouml.model.ModelImplementation#getDataTypesHelper()
*/
Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UndoCoreHelperDecorator.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UndoCoreHelperDecorator.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UndoCoreHelperDecorator.java (original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UndoCoreHelperDecorator.java 2010-09-17 22:19:53-0700
@@ -1,6 +1,6 @@
/* $Id$
*****************************************************************************
- * Copyright (c) 2009 Contributors - see below
+ * Copyright (c) 2009,2010 Contributors - see below
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -8,6 +8,7 @@
*
* Contributors:
* Thomas Neustupny
+ * Tom Morris
*****************************************************************************
*
* Some portions of this file was previously release using the BSD License:
@@ -279,6 +280,7 @@
}
+ @Deprecated
public void setMultiplicity(final Object handle, Object arg) {
createCommand(new ObjectSetter() {
public void set(Object value) {
@@ -287,6 +289,15 @@
}, arg, Model.getFacade().getMultiplicity(handle));
}
+ public void setMultiplicity(final Object handle, String arg) {
+ createCommand(new StringSetter() {
+ public void set(String value) {
+ getComponent().setMultiplicity(handle, value);
+ }
+ }, arg, Model.getFacade().toString(
+ Model.getFacade().getMultiplicity(handle)));
+ }
+
public void setMultiplicity(final Object handle, int lower, int upper) {
final String lowerStr;
if (lower == -1) {
Modified: trunk/src/argouml-core-model/src/org/argouml/model/AbstractCoreHelperDecorator.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model/src/org/argouml/model/AbstractCoreHelperDecorator.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-core-model/src/org/argouml/model/AbstractCoreHelperDecorator.java (original)
+++ trunk/src/argouml-core-model/src/org/argouml/model/AbstractCoreHelperDecorator.java 2010-09-17 22:19:53-0700
@@ -592,10 +592,19 @@
impl.setKind(handle, kind);
}
+ @Deprecated
public void setMultiplicity(Object handle, Object arg) {
impl.setMultiplicity(handle, arg);
}
+ public void setMultiplicity(Object handle, String arg) {
+ impl.setMultiplicity(handle, arg);
+ }
+
+ public void setMultiplicity(Object handle, int lower, int upper) {
+ impl.setMultiplicity(handle, lower, upper);
+ }
+
public void setName(Object handle, String name) {
impl.setName(handle, name);
}
Modified: trunk/src/argouml-core-model/src/org/argouml/model/CoreFactory.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model/src/org/argouml/model/CoreFactory.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-core-model/src/org/argouml/model/CoreFactory.java (original)
+++ trunk/src/argouml-core-model/src/org/argouml/model/CoreFactory.java 2010-09-17 22:19:53-0700
@@ -1,13 +1,13 @@
/* $Id$
*******************************************************************************
- * Copyright (c) 2009 Contributors - see below
+ * Copyright (c) 2009,2010 Contributors - see below
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * tfmorris
+ * Tom Morris
* Thomas Neustupny
*******************************************************************************
*
@@ -423,6 +423,7 @@
* @param visibility the visibilitykind
* @return AssociationEnd
*/
+ @Deprecated
Object buildAssociationEnd(
Object assoc,
String name,
@@ -437,6 +438,37 @@
Object visibility);
/**
+ * Builds a fully configurable association end. All variables for
+ * an associationend can be given as parameter.
+ * @param assoc The associaton this end will be part of
+ * @param name The name of the association end
+ * @param type The type (classifier) the end will connect. The end
+ * is a connection piece between an association and a classifier
+ * @param multiplicity array of two integers containing lower and upper bound
+ * @param stereo The stereotype
+ * @param navigable The navigability. True if this association end
+ * can be 'passed' from the other classifier.
+ * @param order Ordering of the association
+ * @param aggregation the aggregationkind
+ * @param scope the scope kind
+ * @param changeable the changeablekind
+ * @param visibility the visibilitykind
+ * @return AssociationEnd
+ */
+ Object buildAssociationEnd(
+ Object assoc,
+ String name,
+ Object type,
+ Integer[] multiplicity,
+ Object stereo,
+ boolean navigable,
+ Object order,
+ Object aggregation,
+ Object scope,
+ Object changeable,
+ Object visibility);
+
+ /**
* Builds a simply configured association end.
*
* @param type the given classifier
Modified: trunk/src/argouml-core-model/src/org/argouml/model/CoreHelper.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model/src/org/argouml/model/CoreHelper.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-core-model/src/org/argouml/model/CoreHelper.java (original)
+++ trunk/src/argouml-core-model/src/org/argouml/model/CoreHelper.java 2010-09-17 22:19:53-0700
@@ -9,6 +9,7 @@
* Contributors:
* Thomas Neustupny
* Michiel van der Wulp
+ * Tom Morris
*******************************************************************************
*
* Some portions of this file was previously release using the BSD License:
@@ -1080,10 +1081,21 @@
* @param handle model element
* @param arg multiplicity as string OR multiplicity object,
* null is a valid value (unspecified)
+ * @deprecated for 0.31.6 by tfmorris. Use {@link #setMultiplicity(Object, String)}.
*/
+ @Deprecated
void setMultiplicity(Object handle, Object arg);
/**
+ * Set the multiplicity of an Element.
+ *
+ * @param handle model element
+ * @param arg multiplicity as string
+ * null is a valid value (unspecified)
+ */
+ void setMultiplicity(Object handle, String arg);
+
+ /**
* Set the multiplicity of a ModelElement.
*
* @param handle model element
Modified: trunk/src/argouml-core-model/src/org/argouml/model/DataTypesFactory.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model/src/org/argouml/model/DataTypesFactory.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-core-model/src/org/argouml/model/DataTypesFactory.java (original)
+++ trunk/src/argouml-core-model/src/org/argouml/model/DataTypesFactory.java 2010-09-17 22:19:53-0700
@@ -1,13 +1,13 @@
/* $Id$
*******************************************************************************
- * Copyright (c) 2009 Contributors - see below
+ * Copyright (c) 2009,2010 Contributors - see below
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * tfmorris
+ * Tom Morris
*******************************************************************************
*
* Some portions of this file was previously release using the BSD License:
@@ -153,8 +153,9 @@
* the upper bound of the range. The integer value -1 represents
* the special UML value 'unlimited'
* @return an initialized UML Multiplicity instance.
- * @deprecated by Bob Tarling in 0.31.5 use
- * CoreHelper.setMultiplicity(Object, int, int);
+ * @deprecated by Bob Tarling in 0.31.5 because in UML 2.x the data value
+ * Multiplicity has instead become an abstract MultiplicityElement. Use
+ * {@link CoreHelper#setMultiplicity(Object, int, int)}
*/
@Deprecated
Object createMultiplicity(int lower, int upper);
@@ -164,8 +165,9 @@
*
* @param range a List containing the range
* @return an initialized UML Multiplicity instance.
- * @deprecated by Bob Tarling in 0.31.5 use
- * CoreHelper.setMultiplicity(Object, Object);
+ * @deprecated by Bob Tarling in 0.31.5 because in UML 2.x the data value
+ * Multiplicity has instead become an abstract MultiplicityElement. Use
+ * {@link CoreHelper#setMultiplicity(Object, int, int)}
*/
@Deprecated
Object createMultiplicity(List range);
@@ -175,8 +177,9 @@
*
* @param str a String representing the multiplicity
* @return an initialized UML Multiplicity instance.
- * @deprecated by Bob Tarling in 0.31.5 use
- * CoreHelper.setMultiplicity(Object, Object);
+ * @deprecated by Bob Tarling in 0.31.5 because in UML 2.x the data value
+ * Multiplicity has instead become an abstract MultiplicityElement. Use
+ * {@link CoreHelper#setMultiplicity(Object, String)}.
*/
@Deprecated
Object createMultiplicity(String str);
@@ -192,8 +195,9 @@
* asterisk character (*) representing "unlimited". The
* string "*" is equivalent to "0..*".
* @return MultiplicityRange A multiplicity range
- * @deprecated by Bob Tarling in 0.31.5 use
- * CoreHelper.setMultiplicity(Object, Object);
+ * @deprecated by Bob Tarling in 0.31.5 because in UML 2.x the data value
+ * Multiplicity has instead become an abstract MultiplicityElement. Use
+ * {@link CoreHelper#setMultiplicity(Object, String)}
*/
@Deprecated
public Object createMultiplicityRange(String str);
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLMultiplicityPanel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLMultiplicityPanel.java?view=diff&pathrev=18760&r1=18759&r2=18760
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLMultiplicityPanel.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLMultiplicityPanel.java 2010-09-17 22:19:53-0700
@@ -124,7 +124,7 @@
public void itemStateChanged(ItemEvent event) {
if (event.getSource() == multiplicityComboBox) {
- Object item = multiplicityComboBox.getSelectedItem();
+ String item = (String) multiplicityComboBox.getSelectedItem();
Object target = multiplicityComboBox.getTarget();
String currentMult = Model.getFacade().toString(Model.getFacade().getMultiplicity(target));
if (!currentMult.equals(item)) {
@@ -287,22 +287,16 @@
* java.lang.Object, java.lang.Object)
*/
public void setSelectedItem(Object item, Object target) {
- if (target != null
- && Model.getFacade().isAClassifierRole(target)) {
- if (Model.getFacade().isAMultiplicity(item)) {
- if (!item.equals(Model.getFacade().getMultiplicity(target))) {
- Model.getCoreHelper().setMultiplicity(target, item);
- }
- } else if (item instanceof String) {
- if (!item.equals(Model.getFacade().toString(
- Model.getFacade().getMultiplicity(target)))) {
- Model.getCoreHelper().setMultiplicity(
- target, (String) item);
- }
- } else {
- Model.getCoreHelper().setMultiplicity(target, null);
- }
- }
+ if (target != null
+ && Model.getFacade().isAClassifierRole(target)) {
+ if (Model.getFacade().isAMultiplicity(item)) {
+ // TODO: Aren't our items always strings? - tfm 20100917
+ Model.getCoreHelper().setMultiplicity(target, item);
+ } else if (item instanceof String) {
+ Model.getCoreHelper().setMultiplicity(target,
+ (String) item);
+ }
+ }
}
}
}
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2661481
To unsubscribe from this discussion, e-mail: [[email protected]].
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.