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 RelationData extends PrimitiveData implements IRelation { 010 011 private List<RelationMemberData> members = new ArrayList<>(); 012 013 /** 014 * Constructs a new {@code RelationData}. 015 */ 016 public RelationData() { 017 // contents can be set later with setters 018 } 019 020 /** 021 * Constructs a new {@code RelationData}. 022 * @param data relation data to copy 023 */ 024 public RelationData(RelationData data) { 025 super(data); 026 members.addAll(data.members); 027 } 028 029 public List<RelationMemberData> getMembers() { 030 return members; 031 } 032 033 public void setMembers(List<RelationMemberData> memberData) { 034 members = new ArrayList<>(memberData); 035 } 036 037 @Override 038 public int getMembersCount() { 039 return members.size(); 040 } 041 042 @Override 043 public long getMemberId(int idx) { 044 return members.get(idx).getMemberId(); 045 } 046 047 @Override 048 public String getRole(int idx) { 049 return members.get(idx).getRole(); 050 } 051 052 @Override 053 public OsmPrimitiveType getMemberType(int idx) { 054 return members.get(idx).getMemberType(); 055 } 056 057 @Override 058 public RelationData makeCopy() { 059 return new RelationData(this); 060 } 061 062 @Override 063 public String toString() { 064 return super.toString() + " REL " + members; 065 } 066 067 @Override 068 public OsmPrimitiveType getType() { 069 return OsmPrimitiveType.RELATION; 070 } 071 072 @Override 073 public void accept(PrimitiveVisitor visitor) { 074 visitor.visit(this); 075 } 076 077}