/** * This file is part of Relation Analyzer for OSM. * Copyright (c) 2001 by Adrian Stabiszewski, as@grundid.de * * Relation Analyzer is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Relation Analyzer is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with Relation Analyzer. If not, see <http://www.gnu.org/licenses/>. */ package org.osmtools.ra.traverse; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import org.osmtools.api.Section; import org.osmtools.ra.graph.Graph; import org.osmtools.ra.graph.IntersectionNode; public class MultipleRouteTraverser { private List<Section> sectionList = new ArrayList<Section>(); private Collection<IntersectionNode> visitedNodes = new HashSet<IntersectionNode>(); public MultipleRouteTraverser(Graph graph) { IntersectionNode startNode = graph.getLeaves().iterator().next(); traverseNodes(startNode); } private void traverseNodes(IntersectionNode startNode) { // currentSection = new SectionContainer(""); // sectionList.add(currentSection); // currentSection.path.add(startNode.getNode()); // do { // visitedNodes.add(startNode); // IntersectionNode nextNode = getNextNode(startNode); // // path.add(nextNode.getNode()); // startNode = nextNode; // } while (!startNode.equals(endNode)); } // private IntersectionNode getNextNode(IntersectionNode startNode) { // Iterator<IntersectionNode> edgeIterator = startNode.getEdgesIterator(); // IntersectionNode nextNode = edgeIterator.next(); // // IntersectionNode possibleEndNode = nextNode.equals(endNode) ? nextNode : null; // while (visitedNodes.contains(nextNode)) { // if (edgeIterator.hasNext()) { // nextNode = edgeIterator.next(); // if (nextNode.equals(endNode)) // possibleEndNode = nextNode; // } // else { // if (nextNode.equals(endNode)) { // break; // } // else if (possibleEndNode != null) { // nextNode = possibleEndNode; // } // else // throw new AnalyzerException("No way to go. All nodes visited before."); // } // } // return nextNode; // } }