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 }