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

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

SonarQube - fix minor issues

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-java
File size: 3.4 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.
[13677]11 * @since 2284
[12190]12 */
[13766]13public class RelationMemberData implements IRelationMember<PrimitiveData>, Serializable {
[2284]14
[9891]15 private static final long serialVersionUID = 381392198209333319L;
[2305]16 private final String role;
17 private final long memberId;
18 private final OsmPrimitiveType memberType;
[2284]19
[10216]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 */
[2305]27 public RelationMemberData(String role, OsmPrimitiveType type, long id) {
[10216]28 CheckParameterUtil.ensureParameterNotNull(type, "type");
[8510]29 this.role = role == null ? "" : role;
[2305]30 this.memberType = type;
31 this.memberId = id;
[2284]32 }
33
[10216]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 */
[2404]40 public RelationMemberData(String role, PrimitiveId primitive) {
41 this(role, primitive.getType(), primitive.getUniqueId());
[2284]42 }
43
[10216]44 /**
45 * Get member id.
46 * @return member id
47 */
[2284]48 public long getMemberId() {
49 return memberId;
50 }
[6069]51
[13677]52 @Override
[2284]53 public String getRole() {
54 return role;
55 }
[6069]56
[10216]57 /**
58 * Get member type.
59 * @return member type
60 */
[2284]61 public OsmPrimitiveType getMemberType() {
62 return memberType;
63 }
64
[13677]65 @Override
[13766]66 public OsmPrimitiveType getDisplayType() {
[13829]67 return getMemberType();
[13766]68 }
69
70 @Override
[13677]71 public boolean isNode() {
72 return OsmPrimitiveType.NODE == memberType;
[2404]73 }
74
[2299]75 @Override
[13677]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
[13766]86 public PrimitiveData getMember() {
87 throw new UnsupportedOperationException();
88 }
89
90 @Override
[2299]91 public String toString() {
[8846]92 return (memberType != null ? memberType.getAPIName() : "undefined") + ' ' + memberId;
[2299]93 }
94
[2399]95 /**
96 * PrimitiveId implementation. Returns the same value as {@link #getMemberType()}
97 */
[4490]98 @Override
[2399]99 public OsmPrimitiveType getType() {
[12866]100 return getMemberType();
[2399]101 }
102
103 /**
[6830]104 * PrimitiveId implementation. Returns the same value as {@link #getMemberId()}
[2399]105 */
[4490]106 @Override
[2399]107 public long getUniqueId() {
[12866]108 return getMemberId();
[2399]109 }
110
[4490]111 @Override
[2598]112 public boolean isNew() {
113 return memberId <= 0;
114 }
[5292]115
116 @Override
117 public int hashCode() {
[9371]118 return Objects.hash(role, memberId, memberType);
[5292]119 }
120
121 @Override
122 public boolean equals(Object obj) {
[9371]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 &&
[11452]127 memberType == that.memberType &&
128 Objects.equals(role, that.role);
[5292]129 }
[2284]130}
Note: See TracBrowser for help on using the repository browser.