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

Last change on this file since 13669 was 12866, checked in by Don-vip, 7 years ago

SonarQube:

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