WheelchairSidewalkWay.java

  1. package org.heigit.ors.routing.graphhopper.extensions.reader.osmfeatureprocessors;

  2. import com.graphhopper.reader.ReaderWay;


  3. public class WheelchairSidewalkWay extends PedestrianWay {
  4.     private final OSMAttachedSidewalkProcessor sidewalkProcessor;
  5.     private final OSMAttachedSidewalkProcessor.Side side;
  6.     private OSMAttachedSidewalkProcessor.Side lastPrepared = OSMAttachedSidewalkProcessor.Side.NONE;

  7.     public WheelchairSidewalkWay(ReaderWay way) {
  8.         super(way);

  9.         sidewalkProcessor = new OSMAttachedSidewalkProcessor();

  10.         this.side = sidewalkProcessor.identifySidesWhereSidewalkIsPresent(this.readerWay);
  11.     }

  12.     @Override
  13.     public boolean hasWayBeenFullyProcessed() {
  14.         if (side == OSMAttachedSidewalkProcessor.Side.BOTH && lastPrepared == OSMAttachedSidewalkProcessor.Side.RIGHT) {
  15.             return true;
  16.         }

  17.         return side == lastPrepared;
  18.     }

  19.     @Override
  20.     public void prepare() {
  21.         // Find out if anything has been done yet

  22.         if (side == OSMAttachedSidewalkProcessor.Side.BOTH && lastPrepared == OSMAttachedSidewalkProcessor.Side.RIGHT) {
  23.             // The right sidewalk is the last to be processed when we are looking at both sides
  24.             lastPrepared = OSMAttachedSidewalkProcessor.Side.BOTH;
  25.         }

  26.         if (lastPrepared != side) {
  27.             this.readerWay = sidewalkProcessor.attachSidewalkTag(this.readerWay, side);
  28.             lastPrepared = sidewalkProcessor.getPreparedSide(this.readerWay);
  29.         }
  30.     }
  31. }