package com.revolsys.geometry.graph; import java.util.Collection; import java.util.List; import com.revolsys.geometry.index.quadtree.AbstractIdObjectQuadTree; import com.revolsys.geometry.model.BoundingBox; import com.revolsys.geometry.model.LineString; public class EdgeQuadTree<T> extends AbstractIdObjectQuadTree<Edge<T>> { private final Graph<T> graph; public EdgeQuadTree(final Graph<T> graph) { super(graph.getGeometryFactory()); this.graph = graph; final Collection<Integer> ids = graph.getEdgeIds(); add(ids); } @Override public BoundingBox getBoundingBox(final Edge<T> edge) { if (edge == null) { return BoundingBox.empty(); } else { final LineString line = edge.getLine(); if (line == null) { return BoundingBox.empty(); } else { final BoundingBox envelope = line.getBoundingBox(); return envelope; } } } @Override public int getId(final Edge<T> edge) { return edge.getId(); } @Override public Edge<T> getObject(final Integer id) { return this.graph.getEdge(id); } @Override public List<Edge<T>> getObjects(final List<Integer> ids) { return this.graph.getEdges(ids); } }