Skip to content

Commit c655ebc

Browse files
authored
Add Max Min Validators for encoders (#43)
1 parent 229ec76 commit c655ebc

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

core/src/main/java/com/graphhopper/GraphHopperCustomSpeeds.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,15 @@ private void setSpeedsFor(List<DecimalEncodedValue> speedEncoders) {
7373
double customSpeed = maybeCustomSpeed.get();
7474
if (customSpeed < maxSpeed) {
7575
speedEncoders.forEach(encoder -> {
76-
double speed = iter.get(encoder);
77-
logger.debug("Replace " + speed + " with " + customSpeed + " for edge " + edge);
78-
iter.set(encoder, customSpeed);
76+
double maxEncoderValue = encoder.getMaxStorableDecimal();
77+
double minEncoderValue = encoder.getMinStorableDecimal();
78+
if(customSpeed <= maxEncoderValue && customSpeed >= minEncoderValue){
79+
double speed = iter.get(encoder);
80+
logger.debug("Replace " + speed + " with " + customSpeed + " for edge " + edge);
81+
iter.set(encoder, customSpeed);
82+
}else{
83+
logger.warn("Invalid Custom Speed (" + customSpeed + ") for encoder " + encoder.getName() + " ( " + minEncoderValue + " - " + maxEncoderValue+ ") for edge " + edge + ",so it will be ignored");
84+
}
7985
});
8086
} else {
8187
logger.warn("Custom Speed (" + customSpeed + ") > MaxSpeed ( " + maxSpeed + ") for edge " + edge + ",so it will be ignored");
@@ -93,9 +99,16 @@ private void setSpeedsFor(List<DecimalEncodedValue> speedEncoders) {
9399
if (customSpeedReverse < maxSpeedReverse) {
94100
speedEncoders.forEach(encoder -> {
95101
if (encoder.isStoreTwoDirections()) {
96-
double speed = iter.getReverse(encoder);
97-
logger.debug("Replace " + speed + " with " + customSpeedReverse + " for edge reverse " + edge);
98-
iter.setReverse(encoder, customSpeedReverse);
102+
double maxEncoderValue = encoder.getMaxStorableDecimal();
103+
double minEncoderValue = encoder.getMinStorableDecimal();
104+
if(customSpeedReverse <= maxEncoderValue && customSpeedReverse >= minEncoderValue){
105+
double speed = iter.getReverse(encoder);
106+
logger.debug("Replace " + speed + " with " + customSpeedReverse + " for edge reverse " + edge);
107+
iter.setReverse(encoder, customSpeedReverse);
108+
}else{
109+
logger.warn("Invalid Custom Speed (" + customSpeedReverse + ") for encoder " + encoder.getName() + " ( " + minEncoderValue + " - " + maxEncoderValue+ ") for edge reverse " + edge + ",so it will be ignored");
110+
}
111+
99112
}
100113
});
101114
} else {

0 commit comments

Comments
 (0)