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 }