001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.data.osm;
003
004 import java.util.ArrayList;
005 import java.util.List;
006
007 import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
008
009 public class WayData extends PrimitiveData implements IWay {
010
011 private List<Long> nodes = new ArrayList<Long>();
012
013 public WayData() {
014
015 }
016
017 public WayData(WayData data) {
018 super(data);
019 nodes.addAll(data.getNodes());
020 }
021
022 public List<Long> getNodes() {
023 return nodes;
024 }
025
026 @Override
027 public int getNodesCount() {
028 return nodes.size();
029 }
030
031 @Override
032 public long getNodeId(int idx) {
033 return nodes.get(idx);
034 }
035
036 @Override
037 public boolean isClosed() {
038 if (isIncomplete()) return false;
039 return nodes.get(0).equals(nodes.get(nodes.size() - 1));
040 }
041
042 public void setNodes(List<Long> nodes) {
043 this.nodes = new ArrayList<Long>(nodes);
044 }
045
046 @Override
047 public WayData makeCopy() {
048 return new WayData(this);
049 }
050
051 @Override
052 public String toString() {
053 return super.toString() + " WAY" + nodes.toString();
054 }
055
056 @Override
057 public OsmPrimitiveType getType() {
058 return OsmPrimitiveType.WAY;
059 }
060
061 @Override
062 public void visit(PrimitiveVisitor visitor) {
063 visitor.visit(this);
064 }
065
066 }