| RangeQuery.java |
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 package org.crosswire.jsword.index.query;
20
21 import org.crosswire.jsword.JSMsg;
22 import org.crosswire.jsword.book.BookException;
23 import org.crosswire.jsword.index.Index;
24 import org.crosswire.jsword.passage.Key;
25 import org.crosswire.jsword.passage.NoSuchKeyException;
26
27 /**
28 * A range query specifies how a range should be included in the search. It
29 * provides a range, a modifier (AND [+] or AND NOT [-]).
30 *
31 * @see gnu.lgpl.License The GNU Lesser General Public License for details.
32 * @author DM Smith
33 */
34 public class RangeQuery extends AbstractQuery {
35
36 /**
37 * Construct a query from the range specification.
38 *
39 * @param theRange
40 */
41 public RangeQuery(String theRange) {
42 super(theRange);
43 }
44
45 /*
46 * (non-Javadoc)
47 *
48 * @see
49 * org.crosswire.jsword.index.search.parse.Query#find(org.crosswire.jsword
50 * .index.search.Index)
51 */
52 public Key find(Index index) throws BookException {
53 String range = getQuery();
54 try {
55 return index.getKey(range);
56 } catch (NoSuchKeyException e) {
57 // TRANSLATOR: User error condition: The passage range could not be understood. {0} is a placeholder for the passage.
58 throw new BookException(JSMsg.gettext("Syntax Error: Invalid passage \"{0}\"", range), e);
59 }
60 }
61 }
62