source: josm/trunk/src/org/openstreetmap/josm/data/osm/RelationMemberData.java@ 13806

Last change on this file since 13806 was 13766, checked in by Don-vip, 6 years ago

API alignment between Relation/RelationData and RelationMember/RelationMemberData: update of IRelation/IRelationMember interfaces

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-java
File size: 3.4 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data.osm;
3
4import java.io.Serializable;
5import java.util.Objects;
6
7import org.openstreetmap.josm.tools.CheckParameterUtil;
8
9/**
10 * This is the data (role, type and id) that is stored in the database for a given relation member.
11 * @since 2284
12 */
13public class RelationMemberData implements IRelationMember<PrimitiveData>, Serializable {
14
15 private static final long serialVersionUID = 381392198209333319L;
16 private final String role;
17 private final long memberId;
18 private final OsmPrimitiveType memberType;
19
20 /**
21 * Constructs a new {@code RelationMemberData}.
22 * @param role member role - can be null
23 * @param type member type - cannot be null
24 * @param id member id - cannot be null
25 * @throws IllegalArgumentException is type or id is null
26 */
27 public RelationMemberData(String role, OsmPrimitiveType type, long id) {
28 CheckParameterUtil.ensureParameterNotNull(type, "type");
29 this.role = role == null ? "" : role;
30 this.memberType = type;
31 this.memberId = id;
32 }
33
34 /**
35 * Constructs a new {@code RelationMemberData}.
36 * @param role member role - can be null
37 * @param primitive member type and id - cannot be null
38 * @throws NullPointerException if primitive is null
39 */
40 public RelationMemberData(String role, PrimitiveId primitive) {
41 this(role, primitive.getType(), primitive.getUniqueId());
42 }
43
44 /**
45 * Get member id.
46 * @return member id
47 */
48 public long getMemberId() {
49 return memberId;
50 }
51
52 @Override
53 public String getRole() {
54 return role;
55 }
56
57 /**
58 * Get member type.
59 * @return member type
60 */
61 public OsmPrimitiveType getMemberType() {
62 return memberType;
63 }
64
65 @Override
66 public OsmPrimitiveType getDisplayType() {
67 return memberType;
68 }
69
70 @Override
71 public boolean isNode() {
72 return OsmPrimitiveType.NODE == memberType;
73 }
74
75 @Override
76 public boolean isWay() {
77 return OsmPrimitiveType.WAY == memberType;
78 }
79
80 @Override
81 public boolean isRelation() {
82 return OsmPrimitiveType.RELATION == memberType;
83 }
84
85 @Override
86 public PrimitiveData getMember() {
87 throw new UnsupportedOperationException();
88 }
89
90 @Override
91 public String toString() {
92 return (memberType != null ? memberType.getAPIName() : "undefined") + ' ' + memberId;
93 }
94
95 /**
96 * PrimitiveId implementation. Returns the same value as {@link #getMemberType()}
97 */
98 @Override
99 public OsmPrimitiveType getType() {
100 return getMemberType();
101 }
102
103 /**
104 * PrimitiveId implementation. Returns the same value as {@link #getMemberId()}
105 */
106 @Override
107 public long getUniqueId() {
108 return getMemberId();
109 }
110
111 @Override
112 public boolean isNew() {
113 return memberId <= 0;
114 }
115
116 @Override
117 public int hashCode() {
118 return Objects.hash(role, memberId, memberType);
119 }
120
121 @Override
122 public boolean equals(Object obj) {
123 if (this == obj) return true;
124 if (obj == null || getClass() != obj.getClass()) return false;
125 RelationMemberData that = (RelationMemberData) obj;
126 return memberId == that.memberId &&
127 memberType == that.memberType &&
128 Objects.equals(role, that.role);
129 }
130}
Note: See TracBrowser for help on using the repository browser.