123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package holeg.model;
- import java.util.*;
- /**
- * Abstracts the electrical grid.
- */
- public class Grid {
- private List<GridNode> nodes = new ArrayList<>();
- private Set<GridEdge> edges = new HashSet<>();
- private HashMap<GridNode, List<GridEdge>> edgesPerNode = new HashMap<>();
- /**
- * Adds a node to the grid.
- * @param node The node to be added.
- */
- public void addNode(GridNode node) {
- if (node == null)
- throw new IllegalArgumentException("node is null");
- nodes.add(node);
- }
- /**
- * Adds edge to the edgesPerNode map.
- * @param node The node to use.
- * @param edge The edge to add.
- */
- private void addEdgeToMap(GridNode node, GridEdge edge) {
- List<GridEdge> edges = edgesPerNode.getOrDefault(node, new ArrayList<>());
- edges.add(edge);
- edgesPerNode.put(node, edges);
- }
- /**
- * Adds an edge to the grid.
- * @param edge The edge to add.
- */
- public void addEdge(GridEdge edge) {
- if (edge == null)
- throw new IllegalArgumentException("edge is null");
- if (edges.contains(edge))
- return;
- edges.add(edge);
- addEdgeToMap(edge.getFrom(), edge);
- addEdgeToMap(edge.getTo(), edge);
- }
- public List<GridNode> getNodes() {
- return Collections.unmodifiableList(nodes);
- }
- public Set<GridEdge> getEdges() {
- return Collections.unmodifiableSet(edges);
- }
- public List<GridEdge> getEdges(GridNode node) {
- if (edgesPerNode.containsKey(node))
- return Collections.unmodifiableList(edgesPerNode.get(node));
- return Collections.emptyList();
- }
- }
|