svn commit: r17152 - 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-24 13:57:54-0700
New Revision: 17152

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

Log:
Move classifierroles and associationroles to the correct collaboration on load

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=17152&r1=17151&r2=17152
==============================================================================
--- 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-24 13:57:54-0700
@@ -32,6 +32,7 @@
 
 import org.apache.log4j.Logger;
 import org.argouml.i18n.Translator;
+import org.argouml.model.CollaborationsHelper;
 import org.argouml.model.Facade;
 import org.argouml.model.Model;
 import org.argouml.uml.diagram.DiagramSettings;
@@ -331,29 +332,30 @@
     public void postLoad() {
         super.postLoad();
         
-        // See issue 5811. We have messages saved to the incorrect
-        // interaction and actions of those messages belonging to the
-        // wrong collaboration. If we detect this circumstance of load then
+        final Facade facade = Model.getFacade();                   
+        
+        // See issue 5811. We have collaborationroles, associationroles
+        // and messages and actions saved to the incorrect interaction and
+        // and collaboration. If we detect this circumstance at load then
         // move the model elements and delete the empty collaborations
         // and interactions.
-        Object collaboration = getCollaboration();
+        final Object collaboration = getCollaboration();
         Object correctInteraction = null;
         for (final Fig f : getLayer().getContents()) {
-            Object modelElement = f.getOwner();
+            final Object modelElement = f.getOwner();
             if (f instanceof FigMessage) {
-                Object interaction =
-                    Model.getFacade().getInteraction(modelElement);
-                Object context = Model.getFacade().getContext(interaction);
+                final Object interaction = facade.getInteraction(modelElement);
+                final Object context = facade.getContext(interaction);
                 if (context == collaboration) {
                     correctInteraction = interaction;
                 }
             }
         }
         if (correctInteraction != null) {
+            final CollaborationsHelper collabHelper =
+                Model.getCollaborationsHelper();
             for (final Fig f : getLayer().getContents()) {
                 if (f instanceof FigMessage) {
-                    Facade facade = Model.getFacade();                   
-                    
                     final Object message = f.getOwner();
                     final Object interaction = facade.getInteraction(message);
                     final Object context = facade.getContext(interaction);
@@ -362,8 +364,7 @@
                         LOG.warn("namespace of interaction does not match "
                                 + "collaboration - moving "
                                 + message + " to " + correctInteraction);
-                        Model.getCollaborationsHelper().addMessage(
-                                correctInteraction, message);
+                        collabHelper.addMessage(correctInteraction, message);
                         Model.getCoreHelper().setNamespace(
                                 action, collaboration);
                         // If this leaves the interaction empty then
@@ -381,6 +382,33 @@
                             }
                         }
                     }
+                } else if (f instanceof FigClassifierRole) {
+                    final Object cr = f.getOwner();
+                    final Object namespace = facade.getNamespace(cr);
+                    if (namespace != collaboration) {
+                        LOG.warn("namespace of classifierrole does not match "
+                                + "collaboration - moving "
+                                + cr + " to " + collaboration);
+                        
+                        Model.getCoreHelper().setNamespace(
+                                cr, collaboration);
+                        
+                        Collection associationEndRoles =
+                            facade.getAssociationEnds(cr);
+                        for (Object assEndRole : associationEndRoles) {
+                            Object assRole = facade.getAssociation(assEndRole);
+                            if (facade.getNamespace(assRole) != collaboration) {
+                                Model.getCoreHelper().setNamespace(
+                                        assRole, collaboration);
+                            }
+                        }
+                        
+                        if (facade.getOwnedElements(namespace).isEmpty()) {
+                            LOG.warn("Deleting empty collaboration "
+                                    + collaboration);
+                            Model.getUmlFactory().delete(collaboration);
+                        }
+                    }
                 }
             }
         }

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

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.