Author: bobtarling Date: 2011-05-11 11:26:45-0700 New Revision: 19409 Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java trunk/src/argouml-core-model/src/org/argouml/model/Facade.java trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java
Log: Support for ComponentRealization 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=19409&r1=19408&r2=19409 ============================================================================== --- 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 2011-05-11 11:26:45-0700 @@ -31,6 +31,7 @@ import org.eclipse.uml2.uml.Classifier; import org.eclipse.uml2.uml.Comment; import org.eclipse.uml2.uml.Component; +import org.eclipse.uml2.uml.ComponentRealization; import org.eclipse.uml2.uml.Constraint; import org.eclipse.uml2.uml.DataType; import org.eclipse.uml2.uml.Dependency; @@ -716,6 +717,38 @@ return (Dependency) run.getParams().get(0); } + public Dependency buildComponentRealization(final Object clientObj, + final Object supplierObj) { + if (!(clientObj instanceof NamedElement) + || !(supplierObj instanceof NamedElement)) { + throw new IllegalArgumentException( + "The client and the supplier must be" //$NON-NLS-1$ + + " instances of NamedElement."); //$NON-NLS-1$ + } + if (((NamedElement) clientObj).getNearestPackage() == null) { + throw new NullPointerException( + "The containing package of the client must be non-null."); //$NON-NLS-1$ + } + RunnableClass run = new RunnableClass() { + public void run() { + ComponentRealization dependency = + UMLFactory.eINSTANCE.createComponentRealization(); + dependency.getClients().add((NamedElement) clientObj); + dependency.getSuppliers().add((NamedElement) supplierObj); + ((NamedElement) clientObj).getNearestPackage() + .getPackagedElements().add(dependency); + getParams().add(dependency); + } + }; + ChangeCommand cmd = new ChangeCommand( + modelImpl, run, "Create the component realization # between the" + + " client # and the supplier #"); + editingDomain.getCommandStack().execute(cmd); + cmd.setObjects(run.getParams().get(0), clientObj, supplierObj); + + return (ComponentRealization) run.getParams().get(0); + } + public Object buildElementResidence(Object me, Object component) { // TODO: Is this removed from UML2 ? throw new NotImplementedException(); 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=19409&r1=19408&r2=19409 ============================================================================== --- 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 2011-05-11 11:26:45-0700 @@ -1932,6 +1932,10 @@ return false; } + public boolean isAComponentRealization(Object handle) { + return handle instanceof ComponentRealization; + } + public boolean isACompositeState(Object handle) { return (handle instanceof State && ((State) handle).isComposite()); } Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java?view=diff&pathrev=19409&r1=19408&r2=19409 ============================================================================== --- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java (original) +++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java 2011-05-11 11:26:45-0700 @@ -1,6 +1,6 @@ // $Id$ /******************************************************************************* - * Copyright (c) 2007,2010 Tom Morris and other contributors + * Copyright (c) 2007-2011 Tom Morris and other contributors * 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,7 +8,8 @@ * * Contributors: * Tom Morris - initial implementation - * thn + * Thomas Neustupny + * Bob Tarling *****************************************************************************/ package org.argouml.model.euml; @@ -39,6 +40,7 @@ import org.eclipse.uml2.uml.Collaboration; import org.eclipse.uml2.uml.Comment; import org.eclipse.uml2.uml.Component; +import org.eclipse.uml2.uml.ComponentRealization; import org.eclipse.uml2.uml.Constraint; import org.eclipse.uml2.uml.ControlFlow; import org.eclipse.uml2.uml.CreateObjectAction; @@ -70,7 +72,6 @@ import org.eclipse.uml2.uml.Namespace; import org.eclipse.uml2.uml.Node; import org.eclipse.uml2.uml.ObjectFlow; -import org.eclipse.uml2.uml.ObjectNode; import org.eclipse.uml2.uml.Operation; import org.eclipse.uml2.uml.OutputPin; import org.eclipse.uml2.uml.PackageImport; @@ -251,14 +252,18 @@ } public Object getComponentInstance() { - // TODO: Gone in UML 2.x - // return place holder for now - return InstanceSpecification.class; + throw new NotImplementedException( + "This is not a UML2 element"); //$NON-NLS-1$ + } + + public Object getComponentRealization() { + return ComponentRealization.class; } public Object getCompositeState() { - // TODO: no separate CompositeState in UML 2.1 - tfm return State.class; +// throw new NotImplementedException( +// "This is not a UML2 element"); //$NON-NLS-1$ } public Object getConstraint() { @@ -270,7 +275,8 @@ } public Object getCreateAction() { - throw new NotImplementedException("This is not a UML2 element"); //$NON-NLS-1$ + throw new NotImplementedException( + "This is not a UML2 element"); //$NON-NLS-1$ } public Object getCreateObjectAction() { Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java?view=diff&pathrev=19409&r1=19408&r2=19409 ============================================================================== --- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java (original) +++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java 2011-05-11 11:26:45-0700 @@ -42,6 +42,7 @@ import org.eclipse.uml2.uml.AssociationClass; import org.eclipse.uml2.uml.Classifier; import org.eclipse.uml2.uml.Component; +import org.eclipse.uml2.uml.ComponentRealization; import org.eclipse.uml2.uml.ControlFlow; import org.eclipse.uml2.uml.ControlNode; import org.eclipse.uml2.uml.DataType; @@ -142,6 +143,7 @@ // Update for UML 2.x metamodel if not replaced by reflection private static final Class[][] VALID_CONNECTIONS = { {Generalization.class, Classifier.class, }, + {ComponentRealization.class, Element.class, Component.class}, {Dependency.class, Element.class, }, // Although Usage & Permission are Dependencies, they need to // be include separately because of the way lookup works @@ -191,14 +193,11 @@ Object unidirectional, Object namespace) throws IllegalModelElementConnectionException { - IllegalModelElementConnectionException exception = - new IllegalModelElementConnectionException( - "Cannot make a " + elementType.getClass().getName() //$NON-NLS-1$ - + " between a " + fromElement.getClass().getName() //$NON-NLS-1$ - + " and a " + toElement.getClass().getName()); //$NON-NLS-1$ - if (!isConnectionValid(elementType, fromElement, toElement, true)) { - throw exception; + throw new IllegalModelElementConnectionException( + "Cannot make a " + elementType.getClass().getName() //$NON-NLS-1$ + + " between a " + fromElement.getClass().getName() //$NON-NLS-1$ + + " and a " + toElement.getClass().getName()); //$NON-NLS-1$ } Object connection = null; @@ -233,6 +232,9 @@ } else if (elementType == metaTypes.getUsage()) { connection = modelImpl.getCoreFactory().buildUsage( fromElement, toElement); + } else if (elementType == metaTypes.getComponentRealization()) { + connection = modelImpl.getCoreFactory().buildComponentRealization( + fromElement, toElement); } else if (elementType == metaTypes.getDependency()) { connection = modelImpl.getCoreFactory().buildDependency( fromElement, toElement); @@ -272,7 +274,10 @@ } if (connection == null) { - throw exception; + throw new IllegalModelElementConnectionException( + "Cannot make a " + elementType.getClass().getName() //$NON-NLS-1$ + + " between a " + fromElement.getClass().getName() //$NON-NLS-1$ + + " and a " + toElement.getClass().getName()); //$NON-NLS-1$ } return connection; Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java?view=diff&pathrev=19409&r1=19408&r2=19409 ============================================================================== --- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java (original) +++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java 2011-05-11 11:26:45-0700 @@ -419,6 +419,10 @@ return handle instanceof ComponentInstance; } + public boolean isAComponentRealization(Object handle) { + return false; + } + public boolean isAConstraint(Object handle) { return handle instanceof Constraint; } Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java?view=diff&pathrev=19409&r1=19408&r2=19409 ============================================================================== --- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java (original) +++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java 2011-05-11 11:26:45-0700 @@ -328,6 +328,10 @@ return ComponentInstance.class; } + public Object getComponentRealization() { + throw new NotImplementedException("This is not a UML1.4 class"); + } + public Object getCompositeState() { return CompositeState.class; } Modified: trunk/src/argouml-core-model/src/org/argouml/model/Facade.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model/src/org/argouml/model/Facade.java?view=diff&pathrev=19409&r1=19408&r2=19409 ============================================================================== --- trunk/src/argouml-core-model/src/org/argouml/model/Facade.java (original) +++ trunk/src/argouml-core-model/src/org/argouml/model/Facade.java 2011-05-11 11:26:45-0700 @@ -473,6 +473,14 @@ boolean isAComponentInstance(Object handle); /** + * Recognizer for ComponentRealization. + * + * @param handle candidate + * @return true if handle is a ComponentRealization + */ + boolean isAComponentRealization(Object handle); + + /** * Recognizer for Constraint. * * @param handle candidate Modified: trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java?view=diff&pathrev=19409&r1=19408&r2=19409 ============================================================================== --- trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java (original) +++ trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java 2011-05-11 11:26:45-0700 @@ -215,6 +215,11 @@ Object getComponent(); /** + * @return Returns the Component. + */ + Object getComponentRealization(); + + /** * @return Returns the ComponentInstance. */ Object getComponentInstance(); ------------------------------------------------------ http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2734460 To unsubscribe from this discussion, e-mail: [[email protected]].
