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

Last change on this file since 11227 was 10216, checked in by Don-vip, 8 years ago

findbugs - SF_SWITCH_NO_DEFAULT + various sonar fixes

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-java
File size: 2.9 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
9public class RelationMemberData implements PrimitiveId, Serializable {
10
11 private static final long serialVersionUID = 381392198209333319L;
12 private final String role;
13 private final long memberId;
14 private final OsmPrimitiveType memberType;
15
16 /**
17 * Constructs a new {@code RelationMemberData}.
18 * @param role member role - can be null
19 * @param type member type - cannot be null
20 * @param id member id - cannot be null
21 * @throws IllegalArgumentException is type or id is null
22 */
23 public RelationMemberData(String role, OsmPrimitiveType type, long id) {
24 CheckParameterUtil.ensureParameterNotNull(type, "type");
25 this.role = role == null ? "" : role;
26 this.memberType = type;
27 this.memberId = id;
28 }
29
30 /**
31 * Constructs a new {@code RelationMemberData}.
32 * @param role member role - can be null
33 * @param primitive member type and id - cannot be null
34 * @throws NullPointerException if primitive is null
35 */
36 public RelationMemberData(String role, PrimitiveId primitive) {
37 this(role, primitive.getType(), primitive.getUniqueId());
38 }
39
40 /**
41 * Get member id.
42 * @return member id
43 */
44 public long getMemberId() {
45 return memberId;
46 }
47
48 /**
49 * Get member role.
50 * @return member role
51 */
52 public String getRole() {
53 return role;
54 }
55
56 /**
57 * Get member type.
58 * @return member type
59 */
60 public OsmPrimitiveType getMemberType() {
61 return memberType;
62 }
63
64 /**
65 * Determines if this member has a role.
66 * @return {@code true} if this member has a role
67 */
68 public boolean hasRole() {
69 return !"".equals(role);
70 }
71
72 @Override
73 public String toString() {
74 return (memberType != null ? memberType.getAPIName() : "undefined") + ' ' + memberId;
75 }
76
77 /**
78 * PrimitiveId implementation. Returns the same value as {@link #getMemberType()}
79 */
80 @Override
81 public OsmPrimitiveType getType() {
82 return memberType;
83 }
84
85 /**
86 * PrimitiveId implementation. Returns the same value as {@link #getMemberId()}
87 */
88 @Override
89 public long getUniqueId() {
90 return memberId;
91 }
92
93 @Override
94 public boolean isNew() {
95 return memberId <= 0;
96 }
97
98 @Override
99 public int hashCode() {
100 return Objects.hash(role, memberId, memberType);
101 }
102
103 @Override
104 public boolean equals(Object obj) {
105 if (this == obj) return true;
106 if (obj == null || getClass() != obj.getClass()) return false;
107 RelationMemberData that = (RelationMemberData) obj;
108 return memberId == that.memberId &&
109 Objects.equals(role, that.role) &&
110 memberType == that.memberType;
111 }
112}
Note: See TracBrowser for help on using the repository browser.