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    }