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

Last change on this file since 3779 was 3719, checked in by bastiK, 13 years ago

added missing license information

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