001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.osm;
003
004import java.util.ArrayList;
005import java.util.List;
006
007import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
008
009public 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 accept(PrimitiveVisitor visitor) {
063        visitor.visit(this);
064    }
065
066}