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

Last change on this file since 2656 was 2598, checked in by Gubaer, 14 years ago

comment to follow in a later commit
Have to break up a commit because of SSL problem in SVN (filed a ticket - #4093)

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