X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.logic.model.am2900%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fexamples%2FReserializeAndVerifyJSONs.java;h=bbac1f6f764e437bca756f922a3440ff9bf24b42;hb=13befb68923c540a13cfe5b5b28bf0f7ddf5c41b;hp=627ebaf752786fa41d3e5c0ae4e0c4b07321f44a;hpb=590c4809a069b0d30529735bf58f0db5382f8a88;p=Mograsim.git diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeAndVerifyJSONs.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeAndVerifyJSONs.java index 627ebaf7..bbac1f6f 100644 --- a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeAndVerifyJSONs.java +++ b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeAndVerifyJSONs.java @@ -152,23 +152,40 @@ public class ReserializeAndVerifyJSONs private static void changePinUsages(Scanner sysin, DeserializedSubmodelComponent comp) { - comp.getSupermodelPins().entrySet().stream().sorted(Comparator.comparing(Entry::getKey)).map(Entry::getValue).forEach(pin -> + comp.getSubmodelPins().entrySet().stream().sorted(Comparator.comparing(Entry::getKey)).map(Entry::getValue).forEach(pin -> { + PinUsage oldUsage = comp.getSupermodelPin(pin.name).usage; PinUsage usage = null; - while (usage == null) + do try { - System.out.print(" Usage for interface pin " + pin.name + " (empty: " + pin.usage + ") >"); + System.out.print(" Usage for interface pin " + pin.name + " (empty: " + oldUsage + ") >"); String usageStr = sysin.nextLine().toUpperCase(); - usage = usageStr.equals("") ? pin.usage - : usageStr.equals("I") ? PinUsage.INPUT - : usageStr.equals("O") ? PinUsage.OUTPUT - : usageStr.equals("T") ? PinUsage.TRISTATE : PinUsage.valueOf(usageStr); + // TODO replace with switch expression if we upgrade to Java 12 + switch (usageStr) + { + case "": + usage = oldUsage; + break; + case "I": + usage = PinUsage.INPUT; + break; + case "O": + usage = PinUsage.OUTPUT; + break; + case "T": + usage = PinUsage.TRISTATE; + break; + default: + usage = PinUsage.valueOf(usageStr); + break; + } } catch (@SuppressWarnings("unused") IllegalArgumentException e) { System.err.println(" Illegal usage"); } + while (usage == null); setInterfacePinUsage(comp, pin, usage); }); } @@ -433,13 +450,19 @@ public class ReserializeAndVerifyJSONs private static void setInterfacePinUsage(DeserializedSubmodelComponent comp, Pin interfacePin, PinUsage usage) { - Set wiresConnectedToPin = comp.submodel.getWiresByName().values().stream() - .filter(w -> w.getPin1() == interfacePin || w.getPin2() == interfacePin).collect(Collectors.toSet()); + Set wiresConnectedToPin1 = comp.submodel.getWiresByName().values().stream().filter(w -> w.getPin1() == interfacePin) + .collect(Collectors.toSet()); + Set wiresConnectedToPin2 = comp.submodel.getWiresByName().values().stream().filter(w -> w.getPin2() == interfacePin) + .collect(Collectors.toSet()); LogicModelModifiable submodelModifiable = comp.getSubmodelModifiable(); - wiresConnectedToPin.forEach(submodelModifiable::destroyWire); + wiresConnectedToPin1.forEach(submodelModifiable::destroyWire); + wiresConnectedToPin2.forEach(submodelModifiable::destroyWire); + Pin supermodelPin = comp.getSupermodelPin(interfacePin.name); comp.removeSubmodelInterface(interfacePin.name); comp.addSubmodelInterface(new MovablePin(submodelModifiable, comp, interfacePin.name, interfacePin.logicWidth, usage, - interfacePin.getRelX(), interfacePin.getRelY())); - wiresConnectedToPin.forEach(w -> new ModelWire(submodelModifiable, w.getPin1(), w.getPin2())); + supermodelPin.getRelX(), supermodelPin.getRelY())); + Pin interfacePinNew = comp.getSubmodelPin(interfacePin.name); + wiresConnectedToPin1.forEach(w -> new ModelWire(submodelModifiable, interfacePinNew, w.getPin2(), w.getPath())); + wiresConnectedToPin2.forEach(w -> new ModelWire(submodelModifiable, w.getPin1(), interfacePinNew, w.getPath())); } } \ No newline at end of file