private Edge getEnteringEdge(String toNodeId) { Collection<Edge> enteringEdges = graph.getNode(toNodeId).getEnteringEdgeSet(); if (enteringEdges.size() == 1) return enteringEdges.iterator().next(); else { for (Edge e : enteringEdges) { if (e.getId().startsWith("shipment")) { continue; } return e; } } return null; }
private Edge getLeavingEdge(String toNodeId) { Collection<Edge> edges = graph.getNode(toNodeId).getLeavingEdgeSet(); if (edges.size() == 1) return edges.iterator().next(); else { for (Edge e : edges) { if (e.getId().startsWith("shipment")) { continue; } return e; } } return null; }
private void removeNodeAndBelongingEdges(String nodeId, VehicleRoute fromRoute) { Node node = graph.getNode(nodeId); markRemoved(node); Edge entering = getEnteringEdge(nodeId); removeEdge(entering.getId()); if (node.getLeavingEdgeSet().isEmpty()) { if (fromRoute.getVehicle().isReturnToDepot()) throw new IllegalStateException("leaving edge is missing"); return; } Edge leaving = getLeavingEdge(nodeId); removeEdge((leaving.getId())); Node from = entering.getNode0(); Node to = leaving.getNode1(); if (!fromRoute.getActivities().isEmpty()) { addEdge(makeEdgeId(from, to), from.getId(), to.getId()); } }
/** * Get the style of a given edge. * * @param edge * The edge to search for. * @return The edge style. */ public StyleGroup getStyleFor(Edge edge) { String gid = byEdgeIdGroups.get(edge.getId()); return groups.get(gid); }
/** * Get the style of a given edge. * * @param edge * The edge to search for. * @return The edge style. */ public StyleGroup getStyleFor(Edge edge) { String gid = byEdgeIdGroups.get(edge.getId()); return groups.get(gid); }
@SuppressWarnings("unchecked") public <T extends Edge> T removeEdge(int index) { T e; Edge se; elementLock.lock(); e = wrappedElement.removeEdge(index); se = synchronizedEdges.remove(e.getId()); elementLock.unlock(); return (T) se; }
@SuppressWarnings("unchecked") public <T extends Edge> T removeEdge(int fromIndex, int toIndex) { T e; Edge se; elementLock.lock(); e = wrappedElement.removeEdge(fromIndex, toIndex); se = synchronizedEdges.remove(e.getId()); elementLock.unlock(); return (T) se; }
@SuppressWarnings("unchecked") public <T extends Edge> T removeEdge(String from, String to) throws ElementNotFoundException { T e; Edge se; elementLock.lock(); e = wrappedElement.removeEdge(from, to); se = synchronizedEdges.remove(e.getId()); elementLock.unlock(); return (T) se; }
@SuppressWarnings("unchecked") public <T extends Edge> T removeEdge(String id) throws ElementNotFoundException { T e; Edge se; elementLock.lock(); e = wrappedElement.removeEdge(id); se = synchronizedEdges.remove(e.getId()); elementLock.unlock(); return (T) se; }
@SuppressWarnings("unchecked") public <T extends Edge> T removeEdge(Edge edge) { T e; Edge se; if (edge instanceof SynchronizedEdge) edge = ((SynchronizedEdge) edge).wrappedElement; elementLock.lock(); e = wrappedElement.removeEdge(edge); se = synchronizedEdges.remove(e.getId()); elementLock.unlock(); return (T) se; }
@SuppressWarnings("unchecked") public <T extends Edge> T removeEdge(String from, String to) throws ElementNotFoundException { T e; Edge se; elementLock.lock(); e = wrappedElement.removeEdge(from, to); se = synchronizedEdges.remove(e.getId()); elementLock.unlock(); return (T) se; }
@SuppressWarnings("unchecked") public <T extends Edge> T removeEdge(String id) throws ElementNotFoundException { T e; Edge se; elementLock.lock(); e = wrappedElement.removeEdge(id); se = synchronizedEdges.remove(e.getId()); elementLock.unlock(); return (T) se; }
@SuppressWarnings("unchecked") public <T extends Edge> T removeEdge(int index) { T e; Edge se; elementLock.lock(); e = wrappedElement.removeEdge(index); se = synchronizedEdges.remove(e.getId()); elementLock.unlock(); return (T) se; }
@SuppressWarnings("unchecked") public <T extends Edge> T removeEdge(int fromIndex, int toIndex) { T e; Edge se; elementLock.lock(); e = wrappedElement.removeEdge(fromIndex, toIndex); se = synchronizedEdges.remove(e.getId()); elementLock.unlock(); return (T) se; }
@SuppressWarnings("unchecked") public <T extends Edge> T removeEdge(Edge edge) { T e; Edge se; if (edge instanceof SynchronizedEdge) edge = ((SynchronizedEdge) edge).wrappedElement; elementLock.lock(); e = wrappedElement.removeEdge(edge); se = synchronizedEdges.remove(e.getId()); elementLock.unlock(); return (T) se; }
public <T extends Edge> T getEdge(int index) throws IndexOutOfBoundsException { Edge e; elementLock.lock(); e = wrappedElement.getEdge(index); elementLock.unlock(); return e == null ? null : this.<T> getEdge(e.getId()); }
public <T extends Edge> T getEdge(int index) throws IndexOutOfBoundsException { Edge e; elementLock.lock(); e = wrappedElement.getEdge(index); elementLock.unlock(); return e == null ? null : this.<T> getEdge(e.getId()); }
SynchronizedGraph(Graph g) { super(g); elementLock = new ReentrantLock(); synchronizedNodes = new HashMap<String, Node>(); synchronizedEdges = new HashMap<String, Edge>(); for (Node n : g.getEachNode()) synchronizedNodes.put(n.getId(), new SynchronizedNode(this, n)); for (Edge e : g.getEachEdge()) synchronizedEdges.put(e.getId(), new SynchronizedEdge(this, e)); }
SynchronizedGraph(Graph g) { super(g); elementLock = new ReentrantLock(); synchronizedNodes = new HashMap<String, Node>(); synchronizedEdges = new HashMap<String, Edge>(); for (Node n : g.getEachNode()) synchronizedNodes.put(n.getId(), new SynchronizedNode(this, n)); for (Edge e : g.getEachEdge()) synchronizedEdges.put(e.getId(), new SynchronizedEdge(this, e)); }