Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
DefaultLeafKeyList |
|
| 1.5925925925925926;1.593 |
1 | /** | |
2 | * Distribution License: | |
3 | * JSword is free software; you can redistribute it and/or modify it under | |
4 | * the terms of the GNU Lesser General Public License, version 2.1 or later | |
5 | * as published by the Free Software Foundation. This program is distributed | |
6 | * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even | |
7 | * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
8 | * See the GNU Lesser General Public License for more details. | |
9 | * | |
10 | * The License is available on the internet at: | |
11 | * http://www.gnu.org/copyleft/lgpl.html | |
12 | * or by writing to: | |
13 | * Free Software Foundation, Inc. | |
14 | * 59 Temple Place - Suite 330 | |
15 | * Boston, MA 02111-1307, USA | |
16 | * | |
17 | * © CrossWire Bible Society, 2005 - 2016 | |
18 | * | |
19 | */ | |
20 | package org.crosswire.jsword.passage; | |
21 | ||
22 | import java.util.Iterator; | |
23 | ||
24 | import org.crosswire.common.util.ItemIterator; | |
25 | ||
26 | /** | |
27 | * A simple default implementation of the Key interface. | |
28 | * | |
29 | * @see gnu.lgpl.License The GNU Lesser General Public License for details. | |
30 | * @author Joe Walker | |
31 | */ | |
32 | 0 | public class DefaultLeafKeyList implements Key { |
33 | /** | |
34 | * Default ctor | |
35 | * @param name | |
36 | */ | |
37 | public DefaultLeafKeyList(String name) { | |
38 | 0 | this(name, name, null); |
39 | 0 | } |
40 | ||
41 | /** | |
42 | * Default ctor | |
43 | * @param name | |
44 | * @param osisName | |
45 | */ | |
46 | public DefaultLeafKeyList(String name, String osisName) { | |
47 | 0 | this(name, osisName, null); |
48 | 0 | } |
49 | ||
50 | /** | |
51 | * Default ctor | |
52 | * @param name | |
53 | * @param osisName | |
54 | * @param parent | |
55 | */ | |
56 | 0 | public DefaultLeafKeyList(String name, String osisName, Key parent) { |
57 | 0 | this.name = name; |
58 | 0 | this.parent = parent; |
59 | 0 | this.osisName = osisName; |
60 | 0 | } |
61 | ||
62 | /* (non-Javadoc) | |
63 | * @see org.crosswire.jsword.passage.Key#canHaveChildren() | |
64 | */ | |
65 | public boolean canHaveChildren() { | |
66 | 0 | return false; |
67 | } | |
68 | ||
69 | /* (non-Javadoc) | |
70 | * @see org.crosswire.jsword.passage.Key#getChildCount() | |
71 | */ | |
72 | public int getChildCount() { | |
73 | 0 | return 0; |
74 | } | |
75 | ||
76 | /* (non-Javadoc) | |
77 | * @see org.crosswire.jsword.passage.Key#getName() | |
78 | */ | |
79 | public String getName() { | |
80 | 0 | return name; |
81 | } | |
82 | ||
83 | /* (non-Javadoc) | |
84 | * @see org.crosswire.jsword.passage.Key#getName(org.crosswire.jsword.passage.Key) | |
85 | */ | |
86 | public String getName(Key base) { | |
87 | 0 | return getName(); |
88 | } | |
89 | ||
90 | /* (non-Javadoc) | |
91 | * @see org.crosswire.jsword.passage.Key#getRootName() | |
92 | */ | |
93 | public String getRootName() { | |
94 | 0 | return getName(); |
95 | } | |
96 | ||
97 | /* (non-Javadoc) | |
98 | * @see org.crosswire.jsword.passage.Key#getOsisRef() | |
99 | */ | |
100 | public String getOsisRef() { | |
101 | 0 | return osisName; |
102 | } | |
103 | ||
104 | /* (non-Javadoc) | |
105 | * @see org.crosswire.jsword.passage.Key#getOsisID() | |
106 | */ | |
107 | public String getOsisID() { | |
108 | 0 | return getOsisRef(); |
109 | } | |
110 | ||
111 | /* (non-Javadoc) | |
112 | * @see org.crosswire.jsword.passage.Key#getParent() | |
113 | */ | |
114 | public Key getParent() { | |
115 | 0 | return parent; |
116 | } | |
117 | ||
118 | /* (non-Javadoc) | |
119 | * @see org.crosswire.jsword.passage.Key#getCardinality() | |
120 | */ | |
121 | public int getCardinality() { | |
122 | 0 | return 1; |
123 | } | |
124 | ||
125 | /* (non-Javadoc) | |
126 | * @see org.crosswire.jsword.passage.Key#isEmpty() | |
127 | */ | |
128 | public boolean isEmpty() { | |
129 | 0 | return false; |
130 | } | |
131 | ||
132 | /* (non-Javadoc) | |
133 | * @see org.crosswire.jsword.passage.Key#contains(org.crosswire.jsword.passage.Key) | |
134 | */ | |
135 | public boolean contains(Key key) { | |
136 | 0 | return this.equals(key); |
137 | } | |
138 | ||
139 | /* (non-Javadoc) | |
140 | * @see java.lang.Iterable#iterator() | |
141 | */ | |
142 | public Iterator<Key> iterator() { | |
143 | 0 | return new ItemIterator<Key>(this); |
144 | } | |
145 | ||
146 | /* (non-Javadoc) | |
147 | * @see org.crosswire.jsword.passage.Key#addAll(org.crosswire.jsword.passage.Key) | |
148 | */ | |
149 | public void addAll(Key key) { | |
150 | 0 | throw new UnsupportedOperationException(); |
151 | } | |
152 | ||
153 | /* (non-Javadoc) | |
154 | * @see org.crosswire.jsword.passage.Key#removeAll(org.crosswire.jsword.passage.Key) | |
155 | */ | |
156 | public void removeAll(Key key) { | |
157 | 0 | throw new UnsupportedOperationException(); |
158 | } | |
159 | ||
160 | /* (non-Javadoc) | |
161 | * @see org.crosswire.jsword.passage.Key#retainAll(org.crosswire.jsword.passage.Key) | |
162 | */ | |
163 | public void retainAll(Key key) { | |
164 | 0 | throw new UnsupportedOperationException(); |
165 | } | |
166 | ||
167 | /* (non-Javadoc) | |
168 | * @see org.crosswire.jsword.passage.Key#clear() | |
169 | */ | |
170 | public void clear() { | |
171 | 0 | } |
172 | ||
173 | /* (non-Javadoc) | |
174 | * @see org.crosswire.jsword.passage.Key#get(int) | |
175 | */ | |
176 | public Key get(int index) { | |
177 | 0 | if (index == 0) { |
178 | 0 | return this; |
179 | } | |
180 | 0 | return null; |
181 | } | |
182 | ||
183 | /* (non-Javadoc) | |
184 | * @see org.crosswire.jsword.passage.Key#indexOf(org.crosswire.jsword.passage.Key) | |
185 | */ | |
186 | public int indexOf(Key that) { | |
187 | 0 | if (this.equals(that)) { |
188 | 0 | return 0; |
189 | } | |
190 | 0 | return -1; |
191 | } | |
192 | ||
193 | /* (non-Javadoc) | |
194 | * @see org.crosswire.jsword.passage.Key#blur(int, org.crosswire.jsword.passage.RestrictionType) | |
195 | */ | |
196 | public void blur(int by, RestrictionType restrict) { | |
197 | 0 | throw new UnsupportedOperationException(); |
198 | } | |
199 | ||
200 | @Override | |
201 | public String toString() { | |
202 | 0 | return getName(); |
203 | } | |
204 | ||
205 | @Override | |
206 | public boolean equals(Object obj) { | |
207 | 0 | if (this == obj) { |
208 | 0 | return true; |
209 | } | |
210 | ||
211 | // Since this can not be null | |
212 | 0 | if (obj == null) { |
213 | 0 | return false; |
214 | } | |
215 | ||
216 | // We might consider checking for equality against all Keys? | |
217 | // However currently we don't. | |
218 | ||
219 | // Check that that is the same as this | |
220 | // Don't use instanceof since that breaks inheritance | |
221 | 0 | if (!obj.getClass().equals(this.getClass())) { |
222 | 0 | return false; |
223 | } | |
224 | ||
225 | // The real bit ... | |
226 | 0 | DefaultLeafKeyList that = (DefaultLeafKeyList) obj; |
227 | 0 | return name.equals(that.name); |
228 | } | |
229 | ||
230 | @Override | |
231 | public int hashCode() { | |
232 | 0 | return name.hashCode(); |
233 | } | |
234 | ||
235 | /* (non-Javadoc) | |
236 | * @see java.lang.Comparable#compareTo(java.lang.Object) | |
237 | */ | |
238 | public int compareTo(Key obj) { | |
239 | 0 | DefaultLeafKeyList that = (DefaultLeafKeyList) obj; |
240 | 0 | return name.compareTo(that.name); |
241 | } | |
242 | ||
243 | @Override | |
244 | public DefaultLeafKeyList clone() { | |
245 | 0 | DefaultLeafKeyList clone = null; |
246 | try { | |
247 | 0 | clone = (DefaultLeafKeyList) super.clone(); |
248 | 0 | if (parent != null) { |
249 | 0 | clone.parent = parent.clone(); |
250 | } | |
251 | 0 | } catch (CloneNotSupportedException e) { |
252 | 0 | assert false : e; |
253 | 0 | } |
254 | 0 | return clone; |
255 | } | |
256 | ||
257 | /** | |
258 | * The parent of this key | |
259 | */ | |
260 | private Key parent; | |
261 | ||
262 | /** | |
263 | * The human readable string that this key represents | |
264 | */ | |
265 | private String name; | |
266 | ||
267 | /** | |
268 | * The OSIS version of this Key | |
269 | */ | |
270 | private String osisName; | |
271 | ||
272 | /** | |
273 | * | |
274 | */ | |
275 | private static final long serialVersionUID = -7462556005744186622L; | |
276 | ||
277 | } |