import java.util.*; public class Node { private static final Map NODE_FROM_STRING; private final Collection next_nodes; private final String name; static { NODE_FROM_STRING = new HashMap(); } private Node (final String name) { this.name = name; next_nodes = new ArrayList(); } public Collection next_nodes () { return next_nodes; } @Override public String toString () { return name; } public static Node get_node (final String s) { return NODE_FROM_STRING.get(s); } public static boolean handle_add_node (final String a) { if (!NODE_FROM_STRING.containsKey(a)) { NODE_FROM_STRING.put(a, new Node(a)); } return true; } public static boolean handle_connect_to (final String a, final String b) { final Node n_a, n_b; n_a = NODE_FROM_STRING.get(a); n_b = NODE_FROM_STRING.get(b); if ((n_a == null) || (n_b == null)) { System.err.println ( "[E] Causality issue: Nodes \"" + a + "\" or \"" + b + "\" used but not defined." ); return false; } n_a.next_nodes.add(n_b); return true; } }