AppendableSteepnessExtraInfoBuilder.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 AppendableSteepnessExtraInfoBuilder extends SteepnessExtraInfoBuilder {
    private final ArrayList<PointList> segmentPointLists;

    public AppendableSteepnessExtraInfoBuilder(RouteExtraInfo extraInfo) {
        super(extraInfo);
        segmentPointLists = new ArrayList<>();
    }

    public List<PointList> getSegmentPointLists() {
        return segmentPointLists;
    }

    public void append(AppendableSteepnessExtraInfoBuilder more) {
        this.segmentPointLists.addAll(more.getSegmentPointLists());
    }

    @Override
    public void addPoints(PointList geom) {
        this.segmentPointLists.add(geom);
    }

    @Override
    public void finish() {
        for (Iterator<PointList> it = segmentPointLists.iterator(); it.hasNext(); ) {
            PointList s = it.next();
            super.addSegment(0, 0, null, 0, !it.hasNext());
            super.addPoints(s);
        }
    }
}