[2284] | 1 | // License: GPL. For details, see LICENSE file.
|
---|
| 2 | package org.openstreetmap.josm.data.osm;
|
---|
| 3 |
|
---|
| 4 | import java.util.ArrayList;
|
---|
| 5 | import java.util.List;
|
---|
| 6 |
|
---|
[4100] | 7 | import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
|
---|
| 8 |
|
---|
[11878] | 9 | /**
|
---|
| 10 | * Relation data.
|
---|
| 11 | * @since 2284
|
---|
| 12 | */
|
---|
[4098] | 13 | public class RelationData extends PrimitiveData implements IRelation {
|
---|
[2284] | 14 |
|
---|
[9891] | 15 | private static final long serialVersionUID = 1163664954890478565L;
|
---|
[7005] | 16 | private List<RelationMemberData> members = new ArrayList<>();
|
---|
[2284] | 17 |
|
---|
[8415] | 18 | /**
|
---|
| 19 | * Constructs a new {@code RelationData}.
|
---|
| 20 | */
|
---|
[2305] | 21 | public RelationData() {
|
---|
[8415] | 22 | // contents can be set later with setters
|
---|
[2305] | 23 | }
|
---|
| 24 |
|
---|
[8415] | 25 | /**
|
---|
[12017] | 26 | * Constructs a new {@code RelationData} with given id.
|
---|
| 27 | * @param id id
|
---|
| 28 | * @since 12017
|
---|
| 29 | */
|
---|
| 30 | public RelationData(long id) {
|
---|
| 31 | super(id);
|
---|
| 32 | }
|
---|
| 33 |
|
---|
| 34 | /**
|
---|
[8415] | 35 | * Constructs a new {@code RelationData}.
|
---|
| 36 | * @param data relation data to copy
|
---|
| 37 | */
|
---|
[2305] | 38 | public RelationData(RelationData data) {
|
---|
| 39 | super(data);
|
---|
| 40 | members.addAll(data.members);
|
---|
| 41 | }
|
---|
| 42 |
|
---|
[11878] | 43 | /**
|
---|
| 44 | * Returns relation members.
|
---|
| 45 | * @return relation members
|
---|
| 46 | */
|
---|
[2284] | 47 | public List<RelationMemberData> getMembers() {
|
---|
| 48 | return members;
|
---|
| 49 | }
|
---|
| 50 |
|
---|
[11878] | 51 | /**
|
---|
| 52 | * Sets relation members.
|
---|
| 53 | * @param memberData relation members
|
---|
| 54 | */
|
---|
[2818] | 55 | public void setMembers(List<RelationMemberData> memberData) {
|
---|
[7005] | 56 | members = new ArrayList<>(memberData);
|
---|
[2818] | 57 | }
|
---|
| 58 |
|
---|
[2299] | 59 | @Override
|
---|
[4098] | 60 | public int getMembersCount() {
|
---|
| 61 | return members.size();
|
---|
| 62 | }
|
---|
| 63 |
|
---|
| 64 | @Override
|
---|
| 65 | public long getMemberId(int idx) {
|
---|
| 66 | return members.get(idx).getMemberId();
|
---|
| 67 | }
|
---|
| 68 |
|
---|
| 69 | @Override
|
---|
| 70 | public String getRole(int idx) {
|
---|
| 71 | return members.get(idx).getRole();
|
---|
| 72 | }
|
---|
| 73 |
|
---|
| 74 | @Override
|
---|
| 75 | public OsmPrimitiveType getMemberType(int idx) {
|
---|
| 76 | return members.get(idx).getMemberType();
|
---|
| 77 | }
|
---|
| 78 |
|
---|
| 79 | @Override
|
---|
[2305] | 80 | public RelationData makeCopy() {
|
---|
| 81 | return new RelationData(this);
|
---|
| 82 | }
|
---|
| 83 |
|
---|
| 84 | @Override
|
---|
[2299] | 85 | public String toString() {
|
---|
| 86 | return super.toString() + " REL " + members;
|
---|
| 87 | }
|
---|
| 88 |
|
---|
[2818] | 89 | @Override
|
---|
[2399] | 90 | public OsmPrimitiveType getType() {
|
---|
| 91 | return OsmPrimitiveType.RELATION;
|
---|
| 92 | }
|
---|
[4431] | 93 |
|
---|
| 94 | @Override
|
---|
[6009] | 95 | public void accept(PrimitiveVisitor visitor) {
|
---|
[4100] | 96 | visitor.visit(this);
|
---|
| 97 | }
|
---|
| 98 |
|
---|
[2284] | 99 | }
|
---|