// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.graphview.core.property;
import org.openstreetmap.josm.plugins.graphview.core.access.AccessParameters;
import org.openstreetmap.josm.plugins.graphview.core.data.DataSource;
import org.openstreetmap.josm.plugins.graphview.core.data.TagGroup;
public class RoadTracktype implements RoadPropertyType<Integer> {
@Override
public <N, W, R, M> Integer evaluateN(N node, AccessParameters accessParameters,
DataSource<N, W, R, M> dataSource) {
return null;
}
@Override
public <N, W, R, M> Integer evaluateW(W way, boolean forward, AccessParameters accessParameters,
DataSource<N, W, R, M> dataSource) {
assert way != null && accessParameters != null && dataSource != null;
TagGroup tags = dataSource.getTagsW(way);
String tracktypeString = tags.getValue("tracktype");
if (tracktypeString != null) {
if ("grade1".equals(tracktypeString)) {
return 1;
} else if ("grade2".equals(tracktypeString)) {
return 2;
} else if ("grade3".equals(tracktypeString)) {
return 3;
} else if ("grade4".equals(tracktypeString)) {
return 4;
} else if ("grade5".equals(tracktypeString)) {
return 5;
}
}
return null;
}
@Override
public boolean isUsable(Object propertyValue, AccessParameters accessParameters) {
assert propertyValue instanceof Integer;
int tracktype = (Integer) propertyValue;
Integer maxTracktype =
accessParameters.getVehiclePropertyValue(VehiclePropertyTypes.MAX_TRACKTYPE);
if (maxTracktype != null && tracktype > maxTracktype) {
return false;
} else {
return true;
}
}
}