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

Last change on this file since 13142 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
RevLine 
[2284]1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data.osm;
3
[9891]4import java.io.Serializable;
[9371]5import java.util.Objects;
6
[10216]7import org.openstreetmap.josm.tools.CheckParameterUtil;
8
[12190]9/**
10 * This is the data (role, type and id) that is stored in the database for a given relation member.
11 */
[9891]12public class RelationMemberData implements PrimitiveId, Serializable {
[2284]13
[9891]14 private static final long serialVersionUID = 381392198209333319L;
[2305]15 private final String role;
16 private final long memberId;
17 private final OsmPrimitiveType memberType;
[2284]18
[10216]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 */
[2305]26 public RelationMemberData(String role, OsmPrimitiveType type, long id) {
[10216]27 CheckParameterUtil.ensureParameterNotNull(type, "type");
[8510]28 this.role = role == null ? "" : role;
[2305]29 this.memberType = type;
30 this.memberId = id;
[2284]31 }
32
[10216]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 */
[2404]39 public RelationMemberData(String role, PrimitiveId primitive) {
40 this(role, primitive.getType(), primitive.getUniqueId());
[2284]41 }
42
[10216]43 /**
44 * Get member id.
45 * @return member id
46 */
[2284]47 public long getMemberId() {
48 return memberId;
49 }
[6069]50
[10216]51 /**
52 * Get member role.
53 * @return member role
54 */
[2284]55 public String getRole() {
56 return role;
57 }
[6069]58
[10216]59 /**
60 * Get member type.
61 * @return member type
62 */
[2284]63 public OsmPrimitiveType getMemberType() {
64 return memberType;
65 }
66
[10216]67 /**
68 * Determines if this member has a role.
69 * @return {@code true} if this member has a role
70 */
[2404]71 public boolean hasRole() {
72 return !"".equals(role);
73 }
74
[2299]75 @Override
76 public String toString() {
[8846]77 return (memberType != null ? memberType.getAPIName() : "undefined") + ' ' + memberId;
[2299]78 }
79
[2399]80 /**
81 * PrimitiveId implementation. Returns the same value as {@link #getMemberType()}
82 */
[4490]83 @Override
[2399]84 public OsmPrimitiveType getType() {
[12866]85 return getMemberType();
[2399]86 }
87
88 /**
[6830]89 * PrimitiveId implementation. Returns the same value as {@link #getMemberId()}
[2399]90 */
[4490]91 @Override
[2399]92 public long getUniqueId() {
[12866]93 return getMemberId();
[2399]94 }
95
[4490]96 @Override
[2598]97 public boolean isNew() {
98 return memberId <= 0;
99 }
[5292]100
101 @Override
102 public int hashCode() {
[9371]103 return Objects.hash(role, memberId, memberType);
[5292]104 }
105
106 @Override
107 public boolean equals(Object obj) {
[9371]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 &&
[11452]112 memberType == that.memberType &&
113 Objects.equals(role, that.role);
[5292]114 }
[2284]115}
Note: See TracBrowser for help on using the repository browser.