// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.osmrec.container;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Geometry;
import de.bwaldvogel.liblinear.FeatureNode;
/**
* Class containing information about the OSM ways.
*
* @author imis-nkarag
*/
public class OSMWay implements Serializable {
private String id;
private String user;
private int classID;
private Set<Integer> classIDs;
private final List<String> nodeReferences = new ArrayList<>(); //node references //made final
private final List<Geometry> nodeGeometries = new ArrayList<>(); //nodeGeometries //made final
private Coordinate[] coordinateList;
private Map<String, String> tags = new HashMap<>();
private Geometry geometry;
private TreeMap<Integer, Double> indexVector = new TreeMap<>();
private ArrayList<FeatureNode> featureNodeList = new ArrayList<>();
//way attributes getters
public String getID() {
return id;
}
public String getUser() {
return user;
}
public List<Geometry> getNodeGeometries() {
return nodeGeometries;
}
public Coordinate[] getCoordinateList() {
coordinateList = nodeGeometries.toArray(new Coordinate[0]);
return coordinateList;
}
public Geometry getGeometry() {
return geometry;
}
public List<String> getNodeReferences() {
return nodeReferences;
}
public int getNumberOfNodes() {
return nodeReferences.size();
}
public Map<String, String> getTagKeyValue() {
return tags;
}
public int getClassID() {
return classID;
}
public Set<Integer> getClassIDs() {
return classIDs;
}
public TreeMap<Integer, Double> getIndexVector() {
return indexVector;
}
public void setIndexVector(TreeMap<Integer, Double> indexVector) {
this.indexVector = indexVector;
}
//way attributes setters
public void setID(String id) {
this.id = id;
}
public void setUser(String user) {
this.user = user;
}
public void setTagKeyValue(String tagKey, String tagValue) {
this.tags.put(tagKey, tagValue);
}
public void addNodeReference(String nodeReference) {
nodeReferences.add(nodeReference);
}
public void addNodeGeometry(Geometry geometry) {
nodeGeometries.add(geometry);
}
public void setGeometry(Geometry geometry) {
this.geometry = geometry;
}
public void setClassID(int classID) {
this.classID = classID;
}
public void setClassIDs(Set<Integer> classIDs) {
this.classIDs = classIDs;
}
public void setFeature(FeatureNode featureNode) {
this.featureNodeList.add(featureNode);
}
public List<FeatureNode> getFeatureNodeList() {
return featureNodeList;
}
public void setAllTags(Map<String, String> selectedTags) {
tags.putAll(selectedTags);
}
}