svn commit: r17151 - trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/UMLSequenceDiagram.java

Bob Tarling <[email protected]>
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: bobtarling
Date: 2009-06-22 16:38:44-0700
New Revision: 17151

Modified:
   trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/UMLSequenceDiagram.java

Log:
For safety double check that interaction and collaborations are empty before deleting them

Modified: trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/UMLSequenceDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/UMLSequenceDiagram.java?view=diff&pathrev=17151&r1=17150&r2=17151
==============================================================================
--- trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/UMLSequenceDiagram.java	(original)
+++ trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/UMLSequenceDiagram.java	2009-06-22 16:38:44-0700
@@ -28,12 +28,11 @@
 import java.awt.Rectangle;
 import java.beans.PropertyVetoException;
 import java.util.Collection;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 
 import org.apache.log4j.Logger;
 import org.argouml.i18n.Translator;
+import org.argouml.model.Facade;
 import org.argouml.model.Model;
 import org.argouml.uml.diagram.DiagramSettings;
 import org.argouml.uml.diagram.SequenceDiagram;
@@ -351,15 +350,14 @@
             }
         }
         if (correctInteraction != null) {
-            final Set deadInteractions = new HashSet();
             for (final Fig f : getLayer().getContents()) {
                 if (f instanceof FigMessage) {
+                    Facade facade = Model.getFacade();                   
+                    
                     final Object message = f.getOwner();
-                    final Object interaction =
-                        Model.getFacade().getInteraction(message);
-                    final Object context =
-                        Model.getFacade().getContext(interaction);
-                    final Object action = Model.getFacade().getAction(message);
+                    final Object interaction = facade.getInteraction(message);
+                    final Object context = facade.getContext(interaction);
+                    final Object action = facade.getAction(message);
                     if (context != collaboration) {
                         LOG.warn("namespace of interaction does not match "
                                 + "collaboration - moving "
@@ -368,18 +366,23 @@
                                 correctInteraction, message);
                         Model.getCoreHelper().setNamespace(
                                 action, collaboration);
-                        deadInteractions.add(interaction);
+                        // If this leaves the interaction empty then
+                        // delete it.
+                        if (facade.getMessages(interaction).isEmpty()) {
+                            LOG.warn("Deleting empty interaction "
+                                    + interaction);
+                            Model.getUmlFactory().delete(interaction);
+                            // If that in turn leaves the collaboration empty
+                            // then delete that also.
+                            if (facade.getOwnedElements(context).isEmpty()) {
+                                LOG.warn("Deleting empty collaboration "
+                                        + context);
+                                Model.getUmlFactory().delete(context);
+                            }
+                        }
                     }
                 }
             }
-            for (Object interaction : deadInteractions) {
-                if (Model.getFacade().getMessages(interaction).isEmpty()) {
-                    final Object context =
-                        Model.getFacade().getContext(interaction);
-                    Model.getUmlFactory().delete(interaction);
-                    Model.getUmlFactory().delete(context);
-                }
-            }
         }
     }
 }

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2364346

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.