Author: bobtarling
Date: 2010-08-28 03:11:16-0700
New Revision: 18698
Modified:
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/DataTypesFactoryEUMLImpl.java
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.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/UndoCoreHelperDecorator.java
trunk/src/argouml-core-model/src/org/argouml/model/CoreHelper.java
trunk/src/argouml-core-model/src/org/argouml/model/DataTypesFactory.java
Log:
Create new helper m,ethod that copes with difference between UML1.4 and UML2 multiplicities
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=18698&r1=18697&r2=18698
==============================================================================
--- 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-08-28 03:11:16-0700
@@ -1531,7 +1531,8 @@
return;
}
if (!(handle instanceof MultiplicityElement)) {
- throw new IllegalArgumentException();
+ throw new IllegalArgumentException(
+ "A MultiplicityElement was expected"); //$NON-NLS-1$
}
if (arg instanceof String) {
String s = (String) arg;
@@ -1569,31 +1570,39 @@
upper = lower;
}
- final int lower_ = lower, upper_ = upper;
- RunnableClass run = new RunnableClass() {
- public void run() {
- // TODO: We currently delete the old values before setting
- // to something new. This is a workaround to issue 6056.
- // We should consider giving an API to get the lower and
- // upper values so that controls can listen directly to
- // those rather than the element containing those values.
- ((MultiplicityElement) handle).setLowerValue(null);
- ((MultiplicityElement) handle).setUpperValue(null);
- //
- ((MultiplicityElement) handle).setLower(lower_);
- ((MultiplicityElement) handle).setUpper(upper_);
- }
- };
- editingDomain.getCommandStack().execute(
- new ChangeCommand(
- modelImpl, run,
- "Set the multiplicity # to the element #", arg,
- handle));
+ setMultiplicity(handle, lower, upper);
} else {
throw new NotYetImplementedException();
}
}
+ public void setMultiplicity(
+ final Object handle,
+ final int lower,
+ final int upper) {
+
+ RunnableClass run = new RunnableClass() {
+ public void run() {
+ // TODO: We currently delete the old values before setting
+ // to something new. This is a workaround to issue 6056.
+ // We should consider giving an API to get the lower and
+ // upper values so that controls can listen directly to
+ // those rather than the element containing those values.
+ ((MultiplicityElement) handle).setLowerValue(null);
+ ((MultiplicityElement) handle).setUpperValue(null);
+ //
+ ((MultiplicityElement) handle).setLower(lower);
+ ((MultiplicityElement) handle).setUpper(upper);
+ }
+ };
+ editingDomain.getCommandStack().execute(
+ new ChangeCommand(
+ modelImpl, run,
+ "Set the multiplicity #..# to the element #", //$NON-NLS-1$
+ lower, upper, handle));
+ }
+
+
public void setName(final Object handle, final String name) {
if (!(handle instanceof NamedElement)) {
if (handle instanceof Generalization) {
Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/DataTypesFactoryEUMLImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/DataTypesFactoryEUMLImpl.java?view=diff&pathrev=18698&r1=18697&r2=18698
==============================================================================
--- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/DataTypesFactoryEUMLImpl.java (original)
+++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/DataTypesFactoryEUMLImpl.java 2010-08-28 03:11:16-0700
@@ -85,9 +85,7 @@
}
public Object createMultiplicity(String str) {
- // TODO: This does not exist as a specific element in UML2
- // As a workaround we return the string as the multiplicity
- return str;
+ throw new NotImplementedException();
}
public Object createMultiplicityRange(String str) {
Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java?view=diff&pathrev=18698&r1=18697&r2=18698
==============================================================================
--- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java (original)
+++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java 2010-08-28 03:11:16-0700
@@ -1000,9 +1000,15 @@
// MultiplicityElement is now an interface implemented
// by element types that support multiplicities - tfm
if (handle instanceof MultiplicityElement) {
- return (MultiplicityElement) handle;
+ MultiplicityElement me = (MultiplicityElement) handle;
+ if (me.getUpperValue() == null && me.getLowerValue() == null) {
+ return null;
+ } else {
+ return (MultiplicityElement) handle;
+ }
} else {
- throw new IllegalArgumentException();
+ throw new IllegalArgumentException(
+ "MultiplicityElement expected"); //$NON-NLS-1$
}
}
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=18698&r1=18697&r2=18698
==============================================================================
--- 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-08-28 03:11:16-0700
@@ -2972,6 +2972,13 @@
}
}
+ public void setMultiplicity(Object handle, int lower, int upper) {
+
+ Object arg =
+ modelImpl.getDataTypesFactory().createMultiplicity(lower, upper);
+
+ setMultiplicity(handle, arg);
+ }
public void setName(final Object handle, final String name) {
if (handle instanceof ModelElement) {
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=18698&r1=18697&r2=18698
==============================================================================
--- 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-08-28 03:11:16-0700
@@ -287,6 +287,22 @@
}, arg, Model.getFacade().getMultiplicity(handle));
}
+ public void setMultiplicity(final Object handle, int lower, int upper) {
+ final String lowerStr;
+ if (lower == -1) {
+ lowerStr = "*";
+ } else {
+ lowerStr = Integer.toString(lower);
+ }
+ final String upperStr;
+ if (upper == -1) {
+ upperStr = "*";
+ } else {
+ upperStr = Integer.toString(lower);
+ }
+ setMultiplicity(handle, lowerStr + ".." + upperStr);
+ }
+
public void setBody(final Object handle, String body) {
createCommand(new StringSetter() {
public void set(String value) {
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=18698&r1=18697&r2=18698
==============================================================================
--- trunk/src/argouml-core-model/src/org/argouml/model/CoreHelper.java (original)
+++ trunk/src/argouml-core-model/src/org/argouml/model/CoreHelper.java 2010-08-28 03:11:16-0700
@@ -1084,6 +1084,15 @@
void setMultiplicity(Object handle, Object arg);
/**
+ * Set the multiplicity of a ModelElement.
+ *
+ * @param handle model element
+ * @param lower the lower range of the multiplicity
+ * @param upper the upper range of the multiplicity
+ */
+ void setMultiplicity(Object handle, int lower, int upper);
+
+ /**
* Set the name of a ModelElement.
*
* @param handle is the 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=18698&r1=18697&r2=18698
==============================================================================
--- trunk/src/argouml-core-model/src/org/argouml/model/DataTypesFactory.java (original)
+++ trunk/src/argouml-core-model/src/org/argouml/model/DataTypesFactory.java 2010-08-28 03:11:16-0700
@@ -153,6 +153,8 @@
* 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
Object createMultiplicity(int lower, int upper);
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2652376
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.