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    }