X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model.am2900%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fexamples%2FReserializeJSONsSettingUsages.java;h=0788589c257c02f8e3c9d648f5c8fba935fef54c;hb=e5460cbb1f4ae06479a92d4ab483b08e8e01e4a6;hp=b15ecdd85716fe2882a21b96f876e136d5f6e8e4;hpb=71639f35873d3b29a4b0f9574025ba9462c656a2;p=Mograsim.git diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeJSONsSettingUsages.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeJSONsSettingUsages.java index b15ecdd8..0788589c 100644 --- a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeJSONsSettingUsages.java +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeJSONsSettingUsages.java @@ -15,12 +15,14 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; import net.mograsim.logic.model.am2900.Am2900Loader; import net.mograsim.logic.model.model.LogicModelModifiable; import net.mograsim.logic.model.model.components.ModelComponent; import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; import net.mograsim.logic.model.model.components.submodels.SubmodelInterface; import net.mograsim.logic.model.model.wires.ModelWire; +import net.mograsim.logic.model.model.wires.ModelWireCrossPoint; import net.mograsim.logic.model.model.wires.MovablePin; import net.mograsim.logic.model.model.wires.Pin; import net.mograsim.logic.model.model.wires.PinUsage; @@ -32,8 +34,11 @@ import net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevel public class ReserializeJSONsSettingUsages { + public static double GRIDSIZE = 2.5; public static boolean changePinUsages = false; - public static boolean changeComponentNames = true; + public static boolean changeComponentNames = false; + public static boolean snapWCPs = true; + public static boolean warnNonSnappedPoints = true; public static void main(String[] args) throws IOException { @@ -105,9 +110,7 @@ public class ReserializeJSONsSettingUsages { System.out.print(" New name for component " + oldName + " of type " + subcomp.getIDForSerializing(iP) + " (empty: " + defaultName + ") >"); -// newName = sysin.nextLine(); - newName = ""; - System.out.println(); + newName = sysin.nextLine(); if (newName.equals("")) newName = defaultName; if (tempModel.getComponentsByName().containsKey(newName)) @@ -129,24 +132,61 @@ public class ReserializeJSONsSettingUsages Optional o; while ((o = submodelModifiable.getComponentsByName().values().stream() - .filter(c -> !c.name.equals(SubmodelComponent.SUBMODEL_INTERFACE_NAME)).findAny()).isPresent()) + .filter(c -> !c.getName().equals(SubmodelComponent.SUBMODEL_INTERFACE_NAME)).findAny()).isPresent()) submodelModifiable.destroyComponent(o.get()); - tempModel.getComponentsByName().values().stream().filter(c -> !c.name.equals(SubmodelComponent.SUBMODEL_INTERFACE_NAME)) - .forEach(c -> IndirectModelComponentCreator - .createComponent(submodelModifiable, c.getIDForSerializing(iP), c.getParamsForSerializingJSON(iP), c.name) - .moveTo(c.getPosX(), c.getPosY())); + tempModel.getComponentsByName().values().stream() + .filter(c -> !c.getName().equals(SubmodelComponent.SUBMODEL_INTERFACE_NAME)) + .forEach(c -> IndirectModelComponentCreator.createComponent(submodelModifiable, c.getIDForSerializing(iP), + c.getParamsForSerializingJSON(iP), c.getName()).moveTo(c.getPosX(), c.getPosY())); for (ModelWire w : tempModel.getWiresByName().values()) createWire(Function.identity(), submodelModifiable, w); } + if (snapWCPs) + submodelModifiable.getComponentsByName().values().stream().filter(c -> c instanceof ModelWireCrossPoint).forEach(c -> + { + double x = c.getPosX(); + double y = c.getPosY(); + c.moveTo(x % GRIDSIZE == 0 ? x - 1 : x, y % GRIDSIZE == 0 ? y - 1 : y); + }); + if (warnNonSnappedPoints) + { + submodelModifiable.getComponentsByName().values().forEach(c -> + { + double x = c.getPosX(); + double y = c.getPosY(); + if (c instanceof ModelWireCrossPoint) + { + x++; + y++; + } + if (x % GRIDSIZE != 0 || y % GRIDSIZE != 0) + System.out.println(" Component " + c.getName() + " (type " + c.getIDForSerializing(new IdentifyParams()) + + ") is not snapped to grid: " + x + "," + y); + }); + submodelModifiable.getWiresByName().values().stream().forEach(w -> + { + Point[] p = w.getPath(); + if (p != null) + for (int i = 0; i < p.length; i++) + if (p[i].x % GRIDSIZE != 0 || p[i].y % GRIDSIZE != 0) + System.out.println( + " Wire " + w.name + " path point #" + i + " is not snapped to grid: " + p[i].x + "," + p[i].y); + }); + comp.getPins().values().forEach(p -> + { + if (p.getRelX() % GRIDSIZE != 0 || p.getRelY() % GRIDSIZE != 0) + System.out.println(" Interface point " + p.name + " is not snapped to grid: " + p.getRelX() + "," + p.getRelY()); + }); + } SubmodelComponentSerializer.serialize(comp, componentPath.toString()); if (changeComponentNames && (comp.getHighLevelStateHandler() == null || !(comp.getHighLevelStateHandler() instanceof DefaultHighLevelStateHandler))) { - System.out.println("A non-default HighLevelStateHandler was detected. Check for changes there manually."); - System.out.print("Empty line to continue to next component, old component name to get new component name >"); + System.out.println(" A non-default HighLevelStateHandler was detected. Check for changes there manually."); + System.out.print(" Empty line to continue to next component, old component name to get new component name >"); for (String line = sysin.nextLine(); !line.equals(""); line = sysin.nextLine()) - System.out.println(line + "->" + componentNameRemapping.get(line) + " >"); + System.out.println(" " + line + "->" + componentNameRemapping.get(line) + " >"); } } catch (Exception e) @@ -167,7 +207,7 @@ public class ReserializeJSONsSettingUsages private static Pin getRemappedPin(Function componentNameRemapping, LogicModelModifiable tempModelForDefaultNames, Pin pin) { - return tempModelForDefaultNames.getComponentsByName().get(componentNameRemapping.apply(pin.component.name)).getPin(pin.name); + return tempModelForDefaultNames.getComponentsByName().get(componentNameRemapping.apply(pin.component.getName())).getPin(pin.name); } private static int compareStringsWithIntegers(String a, String b)