Bugs beim Übernehmen von Modellelementen: Quellmodell -> Zielmodell (Sammelticket)

Issue #576 new
Sebastian Stäubert created an issue

Dies ist ein Sammelticket und muss ggf. zerlegt werden

  1. Quellmodell Strg-A → “Add to model”… => führt zu einer Exception [1]

    1. Ursache ist die Übernahme von Labels (Textfelder)! Die Exception kommt auch, wenn nur versucht wird, ein Textfeld vom Quell- ins Zielmodell zu übernehmen.
  2. Selektion einzelner Modellelemente im Quellmodell → “Add to model” =>

    1. Modellelement wird übernommen
    2. Knickpunkte von Komm.verbindungen zu bereits vorhandenen übernommenen Elementen fehlen
    3. Bei Modellelementen mit Teilelementen geht die Layer-Reihenfolge verloren, d.h. sie werden verdeckt vom übergeord. Element
    4. Untergeordnete Elemente, die im Quellmodell ausgeblendet sind, werden im Zielmodell eingeblendet
    5. ((globales)Layout geht verloren, also falls im Quellmodell Shapes angepasst wurden)
    6. Wiederholt man 2., kommt es zu Meldungen, dass Elemente zusammengeführt werden. Das ist zunächst ok, jedoch

      1. wird auch folgendes Abgefragt: “Subordination relation 30” - Kann ein Nutzer die überhaupt Bearbeiten/Annotieren? Gibt es hierzu ein sinnvolles Default-Verhalten, sodass der Nutzer nicht gefragt werden muss?
      2. Modellelemente, die in Quell- und Zielmodell exakt gleich sind, sollten übersprungen werden “do nothing”
  3. Selektion einzelner Modellelemente im Quellmodell inkl. Komm.Verbindung und Knickpunkte → “Add to model” =>

    1. Knickpunkte werden übernommen (im Unterschied zu 2.b), sie liegen jedoch nicht an exakt der Position wie im Quellmodell
  4. Feature-Wunsch: Es sollte eine/weitere Funktion(en) im Menu “Submodel” geben:

    1. “Duplicate Submodel in …”

      1. “this model” => bisheriges Verhalten
      2. “new model” => neues Modell wird angelegt, welches dieses Teilmodell enthält. Das ist nützlich, wenn man das Teilmodell weitergeben möchte aber nicht das Modell mit allen enthaltenen Teilmodellen.
      3. “existing/open modell“->”bereits geöffnete Modelle zur Auswahl anbieten” => neues Teilmodell wird in das ausgewählte Model eingefügt
  5. Feature-Wunsch: Es sollte eine/weitere Funktion(en) im Menu “Submodel” geben:

    1. “Teilmodelle löschen” => ein Dialog zur Auswahl der zu löschenden Teilmodelle soll angezeigt werden. Das ist nützlich, wenn mehrere Teilmodelle in einer Aktion gelöscht werden sollen.
  6. Feature-Wunsch: Teilmodelle sollten eine Nummer haben und die Reihenfolge sollte mit Hilfe dieser Nummer festgelegt werden können

  7. Feature-Wunsch: Wie kann man Modelldateien zusammenführen? Kann man das im Tool unterstützen? Z.B. nachdem man 4.a.ii ausgeführt hat? Antwort: Man könnte 4.a.iii nutzen nur dann zurück vom Zielmodell ins Quellmodell. Dabei wird das Zusammenführen “spannend”. Was soll passieren?

    1. “Zusammenführen”-Dialog bei im Zielmodell vorhandene Elemente, die sich vom Quellmodell unterscheiden (also wie bisher)
  8. Feature-Wunsch: Übernahme von Teilmodelle(n) 3LGM-M ← | 3LGM-S (wobei die Hin-Richtung aktuell wichtiger ist, da die meisten Modelle in 3LGM-M modelliert sind)

    1. kann schrittweise umgesetzt werden: low-hanging-fruits first, d.h. wenigstens die Anwend.sys. und alles andere, was sich intuitiv aufeinander abbilden lässt.

[1]

va.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
2022-04-01 09:29:15 ERROR 3lgm:115 - The following document may have been corrupted by the operation (please do not save):
<unnamed>
java.lang.NullPointerException: Cannot invoke "de.imise.tool3lgm.graphtools.view.container.LayerContainer.add(java.awt.Component)" because "targetMainDocLayer" is null
    at de.imise.tool3lgm.graphtools.model.LGMGraphDocument.copyToModel(LGMGraphDocument.java:410)
    at de.imise.tool3lgm.graphtools.model.LGMGraphDocument.copySelectedToModel(LGMGraphDocument.java:325)
    at de.imise.tool3lgm.gui.menu.ContextGenerator.lambda$getCopyToModelMenu$1(ContextGenerator.java:352)
    at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
    at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
    at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
    at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
    at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:374)
    at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1028)
    at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1072)
    at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
    at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
    at java.desktop/java.awt.Component.processEvent(Component.java:6391)
    at java.desktop/java.awt.Container.processEvent(Container.java:2266)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
java.lang.NullPointerException: Cannot invoke "de.imise.tool3lgm.graphtools.view.container.LayerContainer.add(java.awt.Component)" because "targetMainDocLayer" is null
    at de.imise.tool3lgm.graphtools.model.LGMGraphDocument.copyToModel(LGMGraphDocument.java:410)
    at de.imise.tool3lgm.graphtools.model.LGMGraphDocument.copySelectedToModel(LGMGraphDocument.java:325)
    at de.imise.tool3lgm.gui.menu.ContextGenerator.lambda$getCopyToModelMenu$1(ContextGenerator.java:352)
    at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
    at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
    at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
    at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
    at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:374)
    at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1028)
    at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1072)
    at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
    at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
    at java.desktop/java.awt.Component.processEvent(Component.java:6391)
    at java.desktop/java.awt.Container.processEvent(Container.java:2266)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
2022-04-01 09:30:00 ERROR 3lgm:115 - The following document may have been corrupted by the operation (please do not save):
<unnamed>

Comments (5)

  1. Log in to comment