/*
* Copyright (C) 2014
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program 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 General Public License for more details.
*
*/
package uk.me.parabola.imgfmt.app.net;
import java.util.ArrayList;
import java.util.List;
import uk.me.parabola.imgfmt.app.CoordNode;
/**
* A class to collect the data related to routing restrictions
* like only-left-turn or no-right-turn
* @author GerdP
*
*/
public class GeneralRouteRestriction {
public enum RestrType {TYPE_ONLY ,
TYPE_NOT,
TYPE_NO_TROUGH // for elements like barriers, gates, etc.
}
private final byte exceptionMask;
private final RestrType type;
private final String sourceDesc;
private long fromWayId, toWayId;
private CoordNode fromNode, toNode;
private List<Long> viaWayIds = new ArrayList<>();
private List<CoordNode> viaNodes = new ArrayList<>();
private char dirIndicator; // s(traight),l(eft),r(ight),u, ? for unknown
public GeneralRouteRestriction(String type, byte exceptionMask, String sourceDesc) {
if ("not".equals(type))
this.type = RestrType.TYPE_NOT;
else if ("only".equals(type))
this.type = RestrType.TYPE_ONLY;
else if ("no_through".equals(type))
this.type = RestrType.TYPE_NO_TROUGH;
else
throw new IllegalArgumentException("invalid type " + type);
this.exceptionMask = exceptionMask;
this.sourceDesc = sourceDesc;
this.setDirIndicator('?');
}
public long getFromWayId() {
return fromWayId;
}
public void setFromWayId(long fromWayId) {
this.fromWayId = fromWayId;
}
public long getToWayId() {
return toWayId;
}
public void setToWayId(long toWayId) {
this.toWayId = toWayId;
}
public byte getExceptionMask() {
return exceptionMask;
}
public RestrType getType() {
return type;
}
public CoordNode getFromNode() {
return fromNode;
}
public void setFromNode(CoordNode fromNode) {
this.fromNode = fromNode;
}
public CoordNode getToNode() {
return toNode;
}
public void setToNode(CoordNode toNode) {
this.toNode = toNode;
}
public List<Long> getViaWayIds() {
return viaWayIds;
}
public void setViaWayIds(List<Long> viaWayIds) {
this.viaWayIds = new ArrayList<Long>(viaWayIds);
}
public List<CoordNode> getViaNodes() {
return viaNodes;
}
public void setViaNodes(List<CoordNode> viaNodes){
this.viaNodes = new ArrayList<>(viaNodes);
}
public String getSourceDesc(){
return sourceDesc;
}
public char getDirIndicator() {
return dirIndicator;
}
public void setDirIndicator(char dirIndicator) {
this.dirIndicator = dirIndicator;
}
}