Skip to content

Commit

Permalink
refactoring necessary for #464
Browse files Browse the repository at this point in the history
  • Loading branch information
Peter committed Jul 22, 2015
1 parent f70c695 commit 0e37880
Show file tree
Hide file tree
Showing 20 changed files with 567 additions and 542 deletions.
9 changes: 5 additions & 4 deletions core/src/main/java/com/graphhopper/routing/Path.java
Expand Up @@ -234,10 +234,11 @@ protected void processEdge( int edgeId, int adjNode )
*/
protected long calcMillis( double distance, long flags, boolean revert )
{
if (revert && !encoder.isBackward(flags)
|| !revert && !encoder.isForward(flags))
throw new IllegalStateException("Calculating time should not require to read speed from edge in wrong direction. "
+ "Reverse:" + revert + ", fwd:" + encoder.isForward(flags) + ", bwd:" + encoder.isBackward(flags));
// TODO include again
// if (revert && !encoder.isBackward(flags)
// || !revert && !encoder.isForward(flags))
// throw new IllegalStateException("Calculating time should not require to read speed from edge in wrong direction. "
// + "Reverse:" + revert + ", fwd:" + encoder.isForward(flags) + ", bwd:" + encoder.isBackward(flags));

double speed = revert ? encoder.getReverseSpeed(flags) : encoder.getSpeed(flags);
if (Double.isInfinite(speed) || Double.isNaN(speed) || speed < 0)
Expand Down
Expand Up @@ -15,6 +15,7 @@
*/
package com.graphhopper.routing;

import com.graphhopper.routing.util.FlagEncoder;
import com.graphhopper.util.*;

import java.util.ArrayList;
Expand Down Expand Up @@ -132,7 +133,7 @@ public EdgeIteratorState setName( String name )
}

@Override
public boolean getBoolean(int key, boolean reverse, boolean _default)
public boolean getBoolean( int key, boolean reverse, boolean _default )
{
return edges.get(current).getBoolean(key, reverse, _default);
}
Expand Down Expand Up @@ -161,6 +162,18 @@ public EdgeIteratorState copyPropertiesTo( EdgeIteratorState edge )
return edges.get(current).copyPropertiesTo(edge);
}

@Override
public boolean isBackward( FlagEncoder encoder )
{
return edges.get(current).isBackward(encoder);
}

@Override
public boolean isForward( FlagEncoder encoder )
{
return edges.get(current).isForward(encoder);
}

@Override
public boolean isShortcut()
{
Expand Down Expand Up @@ -199,4 +212,9 @@ public void setSkippedEdges( int edge1, int edge2 )
throw new UnsupportedOperationException("Not supported.");
}

@Override
public boolean canBeOverwritten( long flags )
{
throw new UnsupportedOperationException("Not supported.");
}
}
Expand Up @@ -15,6 +15,7 @@
*/
package com.graphhopper.routing;

import com.graphhopper.routing.util.FlagEncoder;
import com.graphhopper.util.*;

/**
Expand All @@ -37,7 +38,6 @@ public class VirtualEdgeIteratorState implements EdgeIteratorState, CHEdgeIterat
private boolean unfavoredReverseEdge;
private boolean unfavored;


public VirtualEdgeIteratorState( int originalTraversalKey, int edgeId, int baseNode, int adjNode, double distance, long flags, String name, PointList pointList )
{
this.originalTraversalKey = originalTraversalKey;
Expand Down Expand Up @@ -144,9 +144,9 @@ public EdgeIteratorState setName( String name )
this.name = name;
return this;
}

@Override
public boolean getBoolean(int key, boolean reverse, boolean _default )
public boolean getBoolean( int key, boolean reverse, boolean _default )
{
if (key == EdgeIteratorState.K_UNFAVORED_EDGE)
{
Expand All @@ -160,17 +160,18 @@ public boolean getBoolean(int key, boolean reverse, boolean _default )
}

/**
* set edge to unfavored status for routing from/to start/stop points
* This method sets edge to unfavored status for routing from or to the start/stop points.
* <p>
* @param reverse indicates if forward or backward direction is affected
*/
public void setVirtualEdgePreference( boolean unfavored, boolean reverse )
{
if (reverse)
unfavoredReverseEdge = unfavored;
unfavoredReverseEdge = unfavored;
else
this.unfavored = unfavored;
}

@Override
public String toString()
{
Expand All @@ -183,12 +184,30 @@ public boolean isShortcut()
return false;
}

@Override
public boolean isForward( FlagEncoder encoder )
{
return encoder.isForward(getFlags());
}

@Override
public boolean isBackward( FlagEncoder encoder )
{
return encoder.isBackward(getFlags());
}

@Override
public int getAdditionalField()
{
throw new UnsupportedOperationException("Not supported.");
}

@Override
public boolean canBeOverwritten( long flags )
{
throw new UnsupportedOperationException("Not supported.");
}

@Override
public int getSkippedEdge1()
{
Expand Down
Expand Up @@ -661,8 +661,7 @@ int addShortcuts( int v )
CHEdgeIterator iter = vehicleOutExplorer.setBaseNode(sc.from);
while (iter.next())
{
if (iter.isShortcut() && iter.getAdjNode() == sc.to
&& PrepareEncoder.canBeOverwritten(iter.getFlags(), sc.flags))
if (iter.isShortcut() && iter.getAdjNode() == sc.to && iter.canBeOverwritten(sc.flags))
{
if (sc.weight >= prepareWeighting.calcWeight(iter, false, EdgeIterator.NO_EDGE))
continue NEXT_SC;
Expand Down
Expand Up @@ -46,8 +46,7 @@ public DefaultEdgeFilter( FlagEncoder encoder, boolean in, boolean out )
@Override
public final boolean accept( EdgeIteratorState iter )
{
long flags = iter.getFlags();
return out && encoder.isForward(flags) || in && encoder.isBackward(flags);
return out && iter.isForward(encoder) || in && iter.isBackward(encoder);
}

@Override
Expand Down
Expand Up @@ -73,7 +73,7 @@ public interface FlagEncoder extends TurnCostEncoder
* @return created flags
*/
long setProperties( double speed, boolean forward, boolean backward );

/**
* Reports wether the edge is available in forward direction for a certain vehicle
*/
Expand Down
Expand Up @@ -234,7 +234,7 @@ String toString( EdgeIterator iter )
int adjNode = iter.getAdjNode();
str += adjNode + " (" + ghStorage.getNodeAccess().getLat(adjNode) + "," + ghStorage.getNodeAccess().getLon(adjNode) + "), ";
str += "speed (fwd:" + singleEncoder.getSpeed(iter.getFlags()) + ", rev:" + singleEncoder.getReverseSpeed(iter.getFlags()) + "), ";
str += "access (fwd:" + singleEncoder.isForward(iter.getFlags()) + ", rev:" + singleEncoder.isBackward(iter.getFlags()) + "), ";
str += "access (fwd:" + iter.isForward(singleEncoder) + ", rev:" + iter.isBackward(singleEncoder) + "), ";
str += "distance:" + iter.getDistance();
str += ";\n ";
}
Expand Down

0 comments on commit 0e37880

Please sign in to comment.