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