source: josm/trunk/src/org/openstreetmap/josm/data/osm/RelationMember.java@ 1937

Last change on this file since 1937 was 1937, checked in by jttt, 15 years ago

Replace some occurrences of RelationMember.member with getters

  • Property svn:eol-style set to native
File size: 3.6 KB
Line 
1package org.openstreetmap.josm.data.osm;
2
3/**
4 * A linkage class that can be used by an relation to keep a list of
5 * members. Since membership may be qualified by a "role", a simple
6 * list is not sufficient.
7 *
8 * @author Frederik Ramm <frederik@remote.org>
9 */
10public class RelationMember {
11
12 public String role;
13 public OsmPrimitive member;
14
15 /**
16 *
17 * @return Role name or "". Never returns null
18 * @since 1930
19 */
20 public String getRole() {
21 if (role == null) {
22 return "";
23 } else {
24 return role;
25 }
26 }
27
28 /**
29 *
30 * @return True if role is set
31 * @since 1930
32 */
33 public boolean hasRole() {
34 return role != null && !"".equals(role);
35 }
36
37 /**
38 *
39 * @return True if member is relation
40 * @since 1937
41 */
42 public boolean isRelation() {
43 return member instanceof Relation;
44 }
45
46 /**
47 *
48 * @return True if member is way
49 * @since 1937
50 */
51 public boolean isWay() {
52 return member instanceof Way;
53 }
54
55 /**
56 *
57 * @return True if member is node
58 * @since 1937
59 */
60 public boolean isNode() {
61 return member instanceof Node;
62 }
63
64 /**
65 *
66 * @return Member as relation
67 * @since 1937
68 */
69 public Relation getRelation() {
70 return (Relation)member;
71 }
72
73 /**
74 *
75 * @return Member as way
76 * @since 1937
77 */
78 public Way getWay() {
79 return (Way)member;
80 }
81
82 /**
83 *
84 * @return Member as node
85 * @since 1937
86 */
87 public Node getNode() {
88 return (Node)member;
89 }
90
91 /**
92 *
93 * @return Member
94 * @since 1937
95 */
96 public OsmPrimitive getMember() {
97 return member;
98 }
99
100
101 /**
102 * Default constructor. Does nothing.
103 * @deprecated Use other constructors because RelationMember class will became immutable
104 * in the future
105 */
106 @Deprecated
107 public RelationMember() { }
108
109 public RelationMember(String role, OsmPrimitive member) {
110 this.role = role;
111 this.member = member;
112 }
113
114 /**
115 * Copy constructor.
116 * @param other relation member to be copied.
117 */
118 public RelationMember(RelationMember other) {
119 role = other.role;
120 member = other.member;
121 }
122
123 @Override public String toString() {
124 return '"' + role + "\"=" + member;
125 }
126
127 /**
128 * Replies true, if this relation member refers to the primitive
129 *
130 * @param primitive the primitive to check
131 * @return true, if this relation member refers to the primitive
132 */
133 public boolean refersTo(OsmPrimitive primitive) {
134 if (primitive == null) return false;
135 if (member == null) return false;
136 return member == primitive;
137 }
138
139 @Override
140 public int hashCode() {
141 final int prime = 31;
142 int result = 1;
143 result = prime * result + ((member == null) ? 0 : member.hashCode());
144 result = prime * result + ((role == null) ? 0 : role.hashCode());
145 return result;
146 }
147
148 @Override
149 public boolean equals(Object obj) {
150 if (this == obj)
151 return true;
152 if (obj == null)
153 return false;
154 if (getClass() != obj.getClass())
155 return false;
156 RelationMember other = (RelationMember) obj;
157 if (member == null) {
158 if (other.member != null)
159 return false;
160 } else if (!member.equals(other.member))
161 return false;
162 if (role == null) {
163 if (other.role != null)
164 return false;
165 } else if (!role.equals(other.role))
166 return false;
167 return true;
168 }
169}
Note: See TracBrowser for help on using the repository browser.