AppendableRouteExtraInfoBuilder.java
- /* This file is part of Openrouteservice.
- *
- * Openrouteservice is free software; you can redistribute it and/or modify it under the terms of the
- * GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1
- * of the License, or (at your option) any later version.
- * This library 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 Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public License along with this library;
- * if not, see <https://www.gnu.org/licenses/>.
- */
- package org.heigit.ors.routing.util.extrainfobuilders;
- import com.graphhopper.util.PointList;
- import org.heigit.ors.routing.RouteExtraInfo;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- public class AppendableRouteExtraInfoBuilder extends SimpleRouteExtraInfoBuilder {
- private final ArrayList<SegmentParams> segmentParamsList;
- public AppendableRouteExtraInfoBuilder(RouteExtraInfo extraInfo) {
- super(extraInfo);
- segmentParamsList = new ArrayList<>();
- }
- @Override
- public void addSegment(double value, long valueIndex, PointList geom, double dist) {
- segmentParamsList.add(new SegmentParams(value, valueIndex, geom, dist));
- }
- public List<SegmentParams> getSegmentParamsList() {
- return segmentParamsList;
- }
- public void append(AppendableRouteExtraInfoBuilder more) {
- this.segmentParamsList.addAll(more.getSegmentParamsList());
- }
- @Override
- public void finish() {
- for (Iterator<SegmentParams> it = segmentParamsList.iterator(); it.hasNext(); ) {
- SegmentParams s = it.next();
- super.addSegment(s.value, s.valueIndex, s.geom, s.dist, !it.hasNext());
- }
- }
- private static class SegmentParams {
- double value;
- long valueIndex;
- PointList geom;
- double dist;
- SegmentParams(double value, long valueIndex, PointList geom, double dist) {
- this.value = value;
- this.valueIndex = valueIndex;
- this.geom = geom;
- this.dist = dist;
- }
- }
- }