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 static final long serialVersionUID = 106944939313286415L; 012 private List<Long> nodes = new ArrayList<>(); 013 014 /** 015 * Constructs a new {@code NodeData}. 016 */ 017 public WayData() { 018 // contents can be set later with setters 019 } 020 021 /** 022 * Constructs a new {@code WayData}. 023 * @param data way data to copy 024 */ 025 public WayData(WayData data) { 026 super(data); 027 nodes.addAll(data.getNodes()); 028 } 029 030 public List<Long> getNodes() { 031 return nodes; 032 } 033 034 @Override 035 public int getNodesCount() { 036 return nodes.size(); 037 } 038 039 @Override 040 public long getNodeId(int idx) { 041 return nodes.get(idx); 042 } 043 044 @Override 045 public boolean isClosed() { 046 if (isIncomplete()) return false; 047 return nodes.get(0).equals(nodes.get(nodes.size() - 1)); 048 } 049 050 public void setNodes(List<Long> nodes) { 051 this.nodes = new ArrayList<>(nodes); 052 } 053 054 @Override 055 public WayData makeCopy() { 056 return new WayData(this); 057 } 058 059 @Override 060 public String toString() { 061 return super.toString() + " WAY" + nodes; 062 } 063 064 @Override 065 public OsmPrimitiveType getType() { 066 return OsmPrimitiveType.WAY; 067 } 068 069 @Override 070 public void accept(PrimitiveVisitor visitor) { 071 visitor.visit(this); 072 } 073 074}