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 009/** 010 * Relation data. 011 * @since 2284 012 */ 013public class RelationData extends PrimitiveData implements IRelation<RelationMemberData> { 014 015 private static final long serialVersionUID = 1163664954890478565L; 016 private List<RelationMemberData> members = new ArrayList<>(); 017 018 /** 019 * Constructs a new {@code RelationData}. 020 */ 021 public RelationData() { 022 // contents can be set later with setters 023 } 024 025 /** 026 * Constructs a new {@code RelationData} with given id. 027 * @param id id 028 * @since 12017 029 */ 030 public RelationData(long id) { 031 super(id); 032 } 033 034 /** 035 * Constructs a new {@code RelationData}. 036 * @param data relation data to copy 037 */ 038 public RelationData(RelationData data) { 039 super(data); 040 members.addAll(data.members); 041 } 042 043 @Override 044 public List<RelationMemberData> getMembers() { 045 return members; 046 } 047 048 @Override 049 public void setMembers(List<RelationMemberData> memberData) { 050 members = new ArrayList<>(memberData); 051 } 052 053 @Override 054 public int getMembersCount() { 055 return members.size(); 056 } 057 058 @Override 059 public RelationMemberData getMember(int index) { 060 return members.get(index); 061 } 062 063 @Override 064 public long getMemberId(int idx) { 065 return getMember(idx).getMemberId(); 066 } 067 068 @Override 069 public String getRole(int idx) { 070 return getMember(idx).getRole(); 071 } 072 073 @Override 074 public OsmPrimitiveType getMemberType(int idx) { 075 return getMember(idx).getMemberType(); 076 } 077 078 @Override 079 public RelationData makeCopy() { 080 return new RelationData(this); 081 } 082 083 @Override 084 public String toString() { 085 return super.toString() + " REL " + members; 086 } 087 088 @Override 089 public OsmPrimitiveType getType() { 090 return OsmPrimitiveType.RELATION; 091 } 092 093 @Override 094 public void accept(PrimitiveVisitor visitor) { 095 visitor.visit(this); 096 } 097 098 @Override 099 public BBox getBBox() { 100 throw new UnsupportedOperationException(); 101 } 102}