BUGFIX: mix-up between name and type
This commit is contained in:
parent
241699d597
commit
e5ad944b4a
|
@ -40,7 +40,7 @@ public class Networks {
|
|||
}
|
||||
|
||||
public static boolean isLocalNetwork(String name) {
|
||||
return name.startsWith("N-00");
|
||||
return name != null && name.startsWith("N-00");
|
||||
}
|
||||
|
||||
private void registerNet(String name) {
|
||||
|
|
|
@ -83,6 +83,7 @@ public class PcbMergeTool {
|
|||
}
|
||||
|
||||
static void mergePcb(PcbNode destNode, PcbNode source, Networks networks) {
|
||||
networks.registerAdditionalBoard(destNode);
|
||||
|
||||
Networks.BoardState state = networks.registerAdditionalBoard(source);
|
||||
|
||||
|
@ -183,10 +184,10 @@ public class PcbMergeTool {
|
|||
private static void fixNetId(Networks networks, PcbNode node, Networks.BoardState state) {
|
||||
NetNode net = node.find(TOKEN_NET);
|
||||
String globalName;
|
||||
if (state.netNameInLocalToNetNameInCombined.containsKey(net.nodeName)) {
|
||||
globalName = state.netNameInLocalToNetNameInCombined.get(net.nodeName);
|
||||
if (state.netNameInLocalToNetNameInCombined.containsKey(net.getName())) {
|
||||
globalName = state.netNameInLocalToNetNameInCombined.get(net.getName());
|
||||
} else {
|
||||
globalName = networks.registerNetworkIfPcbSpecific(net.nodeName);
|
||||
globalName = networks.registerNetworkIfPcbSpecific(net.getName());
|
||||
}
|
||||
|
||||
|
||||
|
@ -196,9 +197,11 @@ public class PcbMergeTool {
|
|||
globalName = newName;
|
||||
net.setName(newName);
|
||||
}
|
||||
net.setId(networks.getId(globalName));
|
||||
if (net.getName() != null)
|
||||
// todo: better handling of the whole 'with id no name' drama
|
||||
if (net.getName() != null) {
|
||||
net.setId(networks.getId(globalName));
|
||||
net.setName(globalName);
|
||||
}
|
||||
}
|
||||
|
||||
public static void log(String s) {
|
||||
|
|
|
@ -15,6 +15,9 @@ public class NetNode extends PcbNode {
|
|||
super(TOKEN_NET, i, children);
|
||||
id = Integer.parseInt(getChild(0));
|
||||
name = children.size() > 1 ? getChild(1) : null;
|
||||
// todo: better handling of the whole 'with id no name' drama
|
||||
// if (name == null && id != 1)
|
||||
// throw new IllegalArgumentException("Only net '1' has no name: " + id);
|
||||
if (name != null)
|
||||
System.out.println("NetNode(" + name + " network: " + id + ")");
|
||||
|
||||
|
|
|
@ -21,12 +21,12 @@ public class PcbNode {
|
|||
public static final String TOKEN_GR_LINE = "gr_line";
|
||||
public static final String TOKEN_ZONE = "zone";
|
||||
public static final String TOKEN_VIA = "via";
|
||||
public final String nodeName;
|
||||
public final String nodeType;
|
||||
public final int closingIndex;
|
||||
public final List<Object> children;
|
||||
|
||||
public PcbNode(String nodeName, int closingIndex, List<Object> children) {
|
||||
this.nodeName = nodeName;
|
||||
public PcbNode(String nodeType, int closingIndex, List<Object> children) {
|
||||
this.nodeType = nodeType;
|
||||
this.closingIndex = closingIndex;
|
||||
this.children = children;
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ public class PcbNode {
|
|||
@Override
|
||||
public String toString() {
|
||||
return "PcbNode{" +
|
||||
nodeName +
|
||||
nodeType +
|
||||
", children=" + children.size() +
|
||||
'}';
|
||||
}
|
||||
|
@ -165,7 +165,7 @@ public class PcbNode {
|
|||
}
|
||||
|
||||
private void pack(StringBuilder sb, String prefix) {
|
||||
sb.append(prefix).append("(").append(nodeName);
|
||||
sb.append(prefix).append("(").append(nodeType);
|
||||
|
||||
for (Object child : children) {
|
||||
if (child instanceof String) {
|
||||
|
@ -216,7 +216,7 @@ public class PcbNode {
|
|||
public <T extends PcbNode> T find(String key) {
|
||||
List<PcbNode> r = iterate(key);
|
||||
if (r.size() != 1)
|
||||
throw new IllegalStateException("Exactly one " + key + " expected in " + nodeName);
|
||||
throw new IllegalStateException("Exactly one '" + key + "' expected in " + nodeType);
|
||||
return (T) r.get(0);
|
||||
}
|
||||
|
||||
|
@ -237,7 +237,7 @@ public class PcbNode {
|
|||
public <T extends PcbNode> List<T> iterate(String key) {
|
||||
List<T> result = new ArrayList<>();
|
||||
for (PcbNode p : nodes()) {
|
||||
if (p.nodeName.equals(key))
|
||||
if (p.nodeType.equals(key))
|
||||
result.add((T) p);
|
||||
}
|
||||
return result;
|
||||
|
@ -247,7 +247,7 @@ public class PcbNode {
|
|||
public <T extends PcbNode> List<T> iterateRecursive(String key) {
|
||||
List<T> result = new ArrayList<>();
|
||||
for (PcbNode p : nodes()) {
|
||||
if (p.nodeName.equals(key)) {
|
||||
if (p.nodeType.equals(key)) {
|
||||
result.add((T) p);
|
||||
} else {
|
||||
result.addAll(p.iterateRecursive(key));
|
||||
|
|
|
@ -57,7 +57,9 @@ public class PcbMergeTest {
|
|||
" (net 0 \"\")\n" +
|
||||
" (net 1 \"Net1\")\n" +
|
||||
" (net 2 \"EXT_SPI_SCK\")\n" +
|
||||
" (pad \"S2\" smd oval\n" +
|
||||
" (module \"C0603\" (layer F.Cu) (tedit 4289BEAB) (tstamp 539EEDBF)\n" +
|
||||
" (at 16.45 -105.35)\n" +
|
||||
" (pad \"S2\" smd oval\n" +
|
||||
" (at 2.2 2.2)\n" +
|
||||
"\n" +
|
||||
" (size 0.25 0.5)\n" +
|
||||
|
@ -66,21 +68,25 @@ public class PcbMergeTest {
|
|||
"\n" +
|
||||
" (net 2 \"EXT_SPI_SCK\")\n" +
|
||||
")\n" +
|
||||
")\n" +
|
||||
")";
|
||||
PcbNode node2 = PcbNode.parse(pcb2);
|
||||
assertEquals(3, node2.iterate(TOKEN_NET).size());
|
||||
|
||||
PcbMergeTool.mergePcb(node, node2, new Networks());
|
||||
|
||||
List<PcbNode> pads = node.iterate(TOKEN_PAD);
|
||||
List<PcbNode> pads = node.iterateRecursive(TOKEN_PAD);
|
||||
assertEquals(2, pads.size());
|
||||
NetNode net1 = pads.get(0).find(TOKEN_NET);
|
||||
NetNode net2 = pads.get(1).find(TOKEN_NET);
|
||||
|
||||
assertEquals("2", net1.getId());
|
||||
assertEquals("3", net2.getId());
|
||||
assertEquals("4", net2.getId());
|
||||
|
||||
assertEquals("\"CAN_VIO\"", net1.getName());
|
||||
|
||||
assertEquals(4, node.iterate(TOKEN_NET).size());
|
||||
assertEquals(6, node.iterateRecursive(TOKEN_NET).size());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -17,7 +17,7 @@ public class PcbNodeTest {
|
|||
@Test
|
||||
public void testParser() {
|
||||
PcbNode n = PcbNode.parse("(version 3\r\n)");
|
||||
assertEquals("version", n.nodeName);
|
||||
assertEquals("version", n.nodeType);
|
||||
assertEquals(1, n.getChildren().size());
|
||||
|
||||
assertEquals("(version 3)\r\n", n.pack());
|
||||
|
|
Loading…
Reference in New Issue