Author: tfmorris Date: 2010-04-08 16:21:55-0700 New Revision: 18226 Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ExtensionMechanismsFactoryEUMLImpl.java
Log: ArgoEclipse merge. Undo support. Updated header. Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ExtensionMechanismsFactoryEUMLImpl.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ExtensionMechanismsFactoryEUMLImpl.java?view=diff&pathrev=18226&r1=18225&r2=18226 ============================================================================== --- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ExtensionMechanismsFactoryEUMLImpl.java (original) +++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ExtensionMechanismsFactoryEUMLImpl.java 2010-04-08 16:21:55-0700 @@ -1,12 +1,13 @@ -/* $Id$ - ***************************************************************************** - * Copyright (c) 2009 Contributors - see below +// $Id$ +/******************************************************************************* + * Copyright (c) 2007,2010 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 * http://www.eclipse.org/legal/epl-v10.html * * Contributors: + * Tom Morris - initial implementation * thn ***************************************************************************** * @@ -42,21 +43,13 @@ import java.util.Collection; -import org.apache.log4j.Logger; import org.argouml.model.AbstractModelFactory; import org.argouml.model.ExtensionMechanismsFactory; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.common.util.WrappedException; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; -import org.eclipse.emf.ecore.util.EcoreUtil; -import org.eclipse.uml2.uml.Model; +import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.uml2.uml.Namespace; import org.eclipse.uml2.uml.Package; import org.eclipse.uml2.uml.Stereotype; import org.eclipse.uml2.uml.UMLFactory; -import org.eclipse.uml2.uml.UMLPackage; -import org.eclipse.uml2.uml.resource.UMLResource; /** * The implementation of the ExtensionMechanismsFactory for EUML2. @@ -64,19 +57,13 @@ class ExtensionMechanismsFactoryEUMLImpl implements ExtensionMechanismsFactory, AbstractModelFactory { - private static final Logger LOG = Logger - .getLogger(ExtensionMechanismsFactoryEUMLImpl.class); - /** * The model implementation. */ private EUMLModelImplementation modelImpl; + private EditingDomain editingDomain; + - /** - * The UML metamodel (lazily loaded singleton). - */ - private static UMLPackage metamodel = null; - /** * Constructor. * @@ -86,55 +73,45 @@ public ExtensionMechanismsFactoryEUMLImpl( EUMLModelImplementation implementation) { modelImpl = implementation; + editingDomain = implementation.getEditingDomain(); } - public Object buildStereotype(Object theModelElementObject, Object theName, - Object theNamespaceObject) { - - if (theModelElementObject == null || theName == null - || theNamespaceObject == null) { - throw new IllegalArgumentException( - "one of the arguments is null: modelElement=" //$NON-NLS-1$ - + theModelElementObject - + " name=" + theName //$NON-NLS-1$ - + " namespace=" + theNamespaceObject); //$NON-NLS-1$ - } - - //ModelElement me = (ModelElement) theModelElementObject; - - String text = (String) theName; - Namespace ns = (Namespace) theNamespaceObject; - Stereotype stereo = (Stereotype)buildStereotype(text, ns); - /* - stereo.getBaseClass().add(modelImpl.getMetaTypes().getName(me)); - // TODO: this doesn't look right - review - tfm - Stereotype stereo2 = (Stereotype) extensionHelper.getStereotype(ns, - stereo); - if (stereo2 != null) { - me.getStereotype().add(stereo2); - modelImpl.getUmlFactory().delete(stereo); - return stereo2; - } - stereo.setNamespace(ns); - me.getStereotype().add(stereo); - */ + public Stereotype buildStereotype(Object element, Object name, + Object namespace) { + Stereotype stereo = buildStereotype((String) name, + (Namespace) namespace); + // TODO: Add base classes - the following might not even be close! +// for (Class i : ((Element) element).getClass().getInterfaces()) { +// if (i instanceof umlmetaclass) { +// stereo.getExtendedMetaclasses().add(i); +// } +// } return stereo; } - public Object buildStereotype(Object theModelElementObject, String theName, + public Object buildStereotype(Object element, String name, Object model, Collection models) { // TODO: Auto-generated method stub return null; } - public Object buildStereotype(String text, Object ns) { - Stereotype stereo = UMLFactory.eINSTANCE.createStereotype(); - stereo.setName(text); - // more checking needed? - if (ns instanceof Package) { - stereo.setPackage((Package)ns); + public Stereotype buildStereotype(final String name, final Object namespace) { + RunnableClass run = new RunnableClass() { + public void run() { + Stereotype stereo = createStereotype(); + stereo.setName(name); + if (namespace instanceof Package) { + stereo.setPackage((Package) namespace); + } + getParams().add(stereo); } - return stereo; + }; + ChangeCommand cmd = new ChangeCommand( + modelImpl, run, + "Build a stereotype"); + editingDomain.getCommandStack().execute(cmd); +// cmd.setObjects(run.getParams().get(0)); + return (Stereotype) run.getParams().get(0); } public Object buildTagDefinition(String name, Object stereotype, Object ns) { @@ -148,6 +125,7 @@ return null; } + @Deprecated public Object buildTaggedValue(String tag, String value) { // TODO: Auto-generated method stub return null; @@ -158,7 +136,7 @@ return null; } - public Object copyStereotype(Object source, Object ns) { + public Stereotype copyStereotype(Object source, Object ns) { // TODO: Auto-generated method stub return null; } @@ -173,8 +151,18 @@ } - public Object createStereotype() { - return UMLFactory.eINSTANCE.createStereotype(); + public Stereotype createStereotype() { + RunnableClass run = new RunnableClass() { + public void run() { + getParams().add(UMLFactory.eINSTANCE.createStereotype()); + } + }; + ChangeCommand cmd = new ChangeCommand( + modelImpl, run, + "Create a stereotype"); + editingDomain.getCommandStack().execute(cmd); +// cmd.setObjects(run.getParams().get(0)); + return (Stereotype) run.getParams().get(0); } public Object createTagDefinition() { ------------------------------------------------------ http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2526354 To unsubscribe from this discussion, e-mail: [[email protected]].
