From bc5338b0144636ccd078ffa73bf9aa372f55706c Mon Sep 17 00:00:00 2001 From: Ludovic Apvrille <ludovic.apvrille@telecom-paris.fr> Date: Thu, 2 May 2024 16:54:10 +0200 Subject: [PATCH] multi-mapping automated refactoring when renaming a communication component --- src/main/java/ui/TDiagramPanel.java | 4 ++ src/main/java/ui/tmldd/TMLArchiBUSNode.java | 4 ++ .../java/ui/tmldd/TMLArchiBridgeNode.java | 2 + src/main/java/ui/tmldd/TMLArchiCPNode.java | 2 + .../tmldd/TMLArchiCommunicationArtifact.java | 19 ++++++ .../java/ui/tmldd/TMLArchiCrossbarNode.java | 21 +------ src/main/java/ui/tmldd/TMLArchiDMANode.java | 2 + .../java/ui/tmldd/TMLArchiDiagramPanel.java | 24 +++++++ .../java/ui/tmldd/TMLArchiFirewallNode.java | 4 +- .../java/ui/tmldd/TMLArchiMemoryNode.java | 2 + .../java/ui/tmldd/TMLArchiRouterNode.java | 2 + src/main/java/ui/tmldd/TMLArchiVGMNNode.java | 63 +------------------ 12 files changed, 69 insertions(+), 80 deletions(-) diff --git a/src/main/java/ui/TDiagramPanel.java b/src/main/java/ui/TDiagramPanel.java index de1835932f..b78ae41f53 100644 --- a/src/main/java/ui/TDiagramPanel.java +++ b/src/main/java/ui/TDiagramPanel.java @@ -336,6 +336,10 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree { private FontMetrics savedFontMetrics = null; + public boolean changeOnComponent(TGComponent tgc, String oldValue, String newValue) { + return true; + } + public int stringWidth(Graphics g, String str) { if (this.savedFontMetrics == null) this.savedFontMetrics = g.getFontMetrics(new Font(Font.SANS_SERIF, Font.PLAIN, this.getFontSize())); diff --git a/src/main/java/ui/tmldd/TMLArchiBUSNode.java b/src/main/java/ui/tmldd/TMLArchiBUSNode.java index 148a6a9e76..45bb6ddd9f 100755 --- a/src/main/java/ui/tmldd/TMLArchiBUSNode.java +++ b/src/main/java/ui/tmldd/TMLArchiBUSNode.java @@ -271,7 +271,9 @@ public class TMLArchiBUSNode extends TMLArchiCommunicationNode implements Swallo error = true; errors += "Name of the node "; } else { + String oldName = name; name = tmpName; + tdp.changeOnComponent(this, oldName, name); } } @@ -378,6 +380,8 @@ public class TMLArchiBUSNode extends TMLArchiCommunicationNode implements Swallo return false; } + + return true; } diff --git a/src/main/java/ui/tmldd/TMLArchiBridgeNode.java b/src/main/java/ui/tmldd/TMLArchiBridgeNode.java index 9b0d7fa715..b678716ec0 100755 --- a/src/main/java/ui/tmldd/TMLArchiBridgeNode.java +++ b/src/main/java/ui/tmldd/TMLArchiBridgeNode.java @@ -204,7 +204,9 @@ public class TMLArchiBridgeNode extends TMLArchiCommunicationNode implements Swa error = true; errors += "Name of the node "; } else { + String oldName = name; name = tmpName; + tdp.changeOnComponent(this, oldName, name); } } diff --git a/src/main/java/ui/tmldd/TMLArchiCPNode.java b/src/main/java/ui/tmldd/TMLArchiCPNode.java index 0f97175cf1..f90df58371 100755 --- a/src/main/java/ui/tmldd/TMLArchiCPNode.java +++ b/src/main/java/ui/tmldd/TMLArchiCPNode.java @@ -279,7 +279,9 @@ public class TMLArchiCPNode extends TMLArchiCommunicationNode implements Swallow errors += "Name of the node "; } else { + String oldName = name; name = tmpName; + tdp.changeOnComponent(this, oldName, name); } } diff --git a/src/main/java/ui/tmldd/TMLArchiCommunicationArtifact.java b/src/main/java/ui/tmldd/TMLArchiCommunicationArtifact.java index f65bac120b..ab9b166d8f 100755 --- a/src/main/java/ui/tmldd/TMLArchiCommunicationArtifact.java +++ b/src/main/java/ui/tmldd/TMLArchiCommunicationArtifact.java @@ -411,4 +411,23 @@ public class TMLArchiCommunicationArtifact extends TGCWithoutInternalComponent i public String getAttributes() { return "Priority = " + priority; } + + public void updateMappedElements(String oldName, String newName) { + //TraceManager.addDev("Old:" + oldName + " newName:" + newName); + String found = null; + int index = 0; + for(String s: mappedElements) { + if (s.compareTo(oldName) == 0) { + found = s; + break; + } + index ++; + } + + if (found != null) { + //TraceManager.addDev("Found mapping to change"); + mappedElements.remove(index); + mappedElements.add(index, newName); + } + } } diff --git a/src/main/java/ui/tmldd/TMLArchiCrossbarNode.java b/src/main/java/ui/tmldd/TMLArchiCrossbarNode.java index 34f7ec8793..d5772d6b2e 100755 --- a/src/main/java/ui/tmldd/TMLArchiCrossbarNode.java +++ b/src/main/java/ui/tmldd/TMLArchiCrossbarNode.java @@ -215,28 +215,13 @@ public class TMLArchiCrossbarNode extends TMLArchiCommunicationNode implements S error = true; errors += "Name of the node "; } else { + String oldName = name; name = tmpName; - } - } + tdp.changeOnComponent(this, oldName, name); - /* arbitrationPolicy = dialog.getArbitrationPolicy(); - privacy = dialog.getPrivacy(); - if (arbitrationPolicy == HwBus.BASIC_ROUND_ROBIN) { - stereotype = "BUS-RR"; - } - - if (arbitrationPolicy == HwBus.PRIORITY_BASED) { - stereotype = "BUS-PB"; - } - - if (arbitrationPolicy == HwBus.CAN) { - stereotype = "BUS-CAN"; + } } - if (arbitrationPolicy == HwBus.CROSSBAR) { - stereotype = "CROSSBAR"; - }*/ - // DG we need only data size if (dialog.getByteDataSize().length() != 0) { diff --git a/src/main/java/ui/tmldd/TMLArchiDMANode.java b/src/main/java/ui/tmldd/TMLArchiDMANode.java index 28ea0cec3a..2e96f0152c 100755 --- a/src/main/java/ui/tmldd/TMLArchiDMANode.java +++ b/src/main/java/ui/tmldd/TMLArchiDMANode.java @@ -208,7 +208,9 @@ public class TMLArchiDMANode extends TMLArchiCommunicationNode implements Swallo error = true; errors += "Name of the node "; } else { + String oldName = name; name = tmpName; + tdp.changeOnComponent(this, oldName, name); } } diff --git a/src/main/java/ui/tmldd/TMLArchiDiagramPanel.java b/src/main/java/ui/tmldd/TMLArchiDiagramPanel.java index 0a43ea411a..1ce1806d7c 100755 --- a/src/main/java/ui/tmldd/TMLArchiDiagramPanel.java +++ b/src/main/java/ui/tmldd/TMLArchiDiagramPanel.java @@ -79,6 +79,9 @@ public class TMLArchiDiagramPanel extends TDiagramPanel implements TDPWithAttrib @Override public boolean actionOnDoubleClick(TGComponent tgc) { + + TraceManager.addDev("Change on tgc=" + tgc); + // /*if (tgc instanceof TCDTClass) { TCDTClass t = (TCDTClass)tgc; @@ -98,6 +101,8 @@ public class TMLArchiDiagramPanel extends TDiagramPanel implements TDPWithAttrib return false; } + + @Override public boolean actionOnAdd(TGComponent tgc) { /*if (tgc instanceof TCDTClass) { @@ -185,10 +190,29 @@ public class TMLArchiDiagramPanel extends TDiagramPanel implements TDPWithAttrib /*if (tgc instanceof TCDTClass) { return actionOnDoubleClick(tgc); }*/ + + listOfCP = getListOfCPNodes(); return false; } + public boolean changeOnComponent(TGComponent tgc, String oldData, String newData) { + + if (tgc instanceof TMLArchiCommunicationNode) { + // This change of name may induce mapping problems -> we do the refactoring + // We have to find all comm artifacts, and update their multi-mapping + //TraceManager.addDev("Change on comm node name"); + for(TGComponent artifact: getAllComponentList()) { + if (artifact instanceof TMLArchiCommunicationArtifact) { + //TraceManager.addDev("Artifact found: " + artifact.getName() + " " + artifact.getValue()); + ((TMLArchiCommunicationArtifact)artifact).updateMappedElements(oldData, newData); + } + } + } + + return true; + } + public int getMasterClockFrequency() { return masterClockFrequency; } diff --git a/src/main/java/ui/tmldd/TMLArchiFirewallNode.java b/src/main/java/ui/tmldd/TMLArchiFirewallNode.java index 22d941c68e..757263ca72 100644 --- a/src/main/java/ui/tmldd/TMLArchiFirewallNode.java +++ b/src/main/java/ui/tmldd/TMLArchiFirewallNode.java @@ -213,7 +213,9 @@ public class TMLArchiFirewallNode extends TMLArchiCommunicationNode implements S error = true; errors += "Name of the node "; } else { - name = tmpName; + String oldName = name; + name = tmpName; + tdp.changeOnComponent(this, oldName, name); } } latency = Integer.valueOf(dialog.getLatency()); diff --git a/src/main/java/ui/tmldd/TMLArchiMemoryNode.java b/src/main/java/ui/tmldd/TMLArchiMemoryNode.java index 36c7c6cfc0..7d43e3ccce 100755 --- a/src/main/java/ui/tmldd/TMLArchiMemoryNode.java +++ b/src/main/java/ui/tmldd/TMLArchiMemoryNode.java @@ -219,7 +219,9 @@ public class TMLArchiMemoryNode extends TMLArchiCommunicationNode implements Swa error = true; errors += "Name of the node "; } else { + String oldName = name; name = tmpName; + tdp.changeOnComponent(this, oldName, name); } } diff --git a/src/main/java/ui/tmldd/TMLArchiRouterNode.java b/src/main/java/ui/tmldd/TMLArchiRouterNode.java index d9ea2d11cc..e25a95c7d9 100755 --- a/src/main/java/ui/tmldd/TMLArchiRouterNode.java +++ b/src/main/java/ui/tmldd/TMLArchiRouterNode.java @@ -209,7 +209,9 @@ public class TMLArchiRouterNode extends TMLArchiCommunicationNode implements Swa error = true; errors += "Name of the node "; } else { + String oldName = name; name = tmpName; + tdp.changeOnComponent(this, oldName, name); } } diff --git a/src/main/java/ui/tmldd/TMLArchiVGMNNode.java b/src/main/java/ui/tmldd/TMLArchiVGMNNode.java index fb8a79651d..87320dd592 100755 --- a/src/main/java/ui/tmldd/TMLArchiVGMNNode.java +++ b/src/main/java/ui/tmldd/TMLArchiVGMNNode.java @@ -232,28 +232,13 @@ public class TMLArchiVGMNNode extends TMLArchiCommunicationNode implements Swall error = true; errors += "Name of the node "; } else { + String oldName = name; name = tmpName; + tdp.changeOnComponent(this, oldName, name); } } - /* arbitrationPolicy = dialog.getArbitrationPolicy(); - privacy = dialog.getPrivacy(); - if (arbitrationPolicy == HwBus.BASIC_ROUND_ROBIN) { - stereotype = "BUS-RR"; - } - - if (arbitrationPolicy == HwBus.PRIORITY_BASED) { - stereotype = "BUS-PB"; - } - if (arbitrationPolicy == HwBus.CAN) { - stereotype = "BUS-CAN"; - } - - if (arbitrationPolicy == HwBus.CROSSBAR) { - stereotype = "CROSSBAR"; - }*/ - //DG we need only data size if (dialog.getByteDataSize().length() != 0) { try { tmp = byteDataSize; @@ -269,50 +254,6 @@ public class TMLArchiVGMNNode extends TMLArchiCommunicationNode implements Swall } } - /* if (dialog.getSliceTime().length() != 0) { - try { - tmp = sliceTime; - sliceTime = Integer.decode(dialog.getSliceTime()).intValue(); - if (sliceTime <= 0) { - sliceTime = tmp; - error = true; - errors += "Slice time "; - } - } catch (Exception e) { - error = true; - errors += "Slice time "; - } - } - - if (dialog.getPipelineSize().length() != 0) { - try { - tmp = pipelineSize; - pipelineSize = Integer.decode(dialog.getPipelineSize()).intValue(); - if (pipelineSize <= 0) { - pipelineSize = tmp; - error = true; - errors += "Pipeline size "; - } - } catch (Exception e) { - error = true; - errors += "Pipeline size "; - } - } - - if (dialog.getClockRatio().length() != 0) { - try { - tmp = clockRatio; - clockRatio = Integer.decode(dialog.getClockRatio()).intValue(); - if (clockRatio <= 0) { - clockRatio = tmp; - error = true; - errors += "Clock diviser "; - } - } catch (Exception e) { - error = true; - errors += "Clock diviser "; - } - }*/ if (error) { JOptionPane.showMessageDialog(frame, -- GitLab