Source code: com/eireneh/bible/control/search/words/PassageLeftParamWord.java
1
2 package com.eireneh.bible.control.search.words;
3
4 import java.util.Enumeration;
5 import java.util.Vector;
6
7 import com.eireneh.bible.passage.*;
8 import com.eireneh.bible.control.search.*;
9
10 /**
11 * The Search Word for a Word to search for. The default
12 * if no other SearchWords match.
13 *
14 * <table border='1' cellPadding='3' cellSpacing='0' width="100%">
15 * <tr><td bgColor='white'class='TableRowColor'><font size='-7'>
16 * Distribution Licence:<br />
17 * Project B is free software; you can redistribute it
18 * and/or modify it under the terms of the GNU General Public License,
19 * version 2 as published by the Free Software Foundation.<br />
20 * This program is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23 * General Public License for more details.<br />
24 * The License is available on the internet
25 * <a href='http://www.gnu.org/copyleft/gpl.html'>here</a>, by writing to
26 * <i>Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
27 * MA 02111-1307, USA</i>, Or locally at the Licence link below.<br />
28 * The copyright to this program is held by it's authors.
29 * </font></td></tr></table>
30 * @see <a href='http://www.eireneh.com/servlets/Web'>Project B Home</a>
31 * @see docs.Licence
32 * @author Joe Walker
33 */
34 public class PassageLeftParamWord implements ParamWord
35 {
36 /**
37 * Get a word for something else to word on.
38 * @param engine The controller that can provide access to the search
39 * string or a default Bible.
40 * @return The requested text
41 * @exception SearchException If this action is not appropriate
42 */
43 public String getWord(Engine engine) throws SearchException
44 {
45 throw new SearchException("search_left_param");
46 }
47
48 /**
49 * Get a Passage for something else to word on.
50 * @param engine The controller that can provide access to the search
51 * string or a default Bible.
52 * @return A Passage relevant to this command
53 * @exception SearchException If this action is not appropriate
54 */
55 public Passage getPassage(Engine engine) throws SearchException
56 {
57 Enumeration en = engine.elements();
58 StringBuffer buff = new StringBuffer();
59
60 int paren_level = 1;
61 while (true)
62 {
63 if (!engine.elements().hasMoreElements())
64 throw new SearchException("search_left_brackets");
65
66 SearchWord word = (SearchWord) en.nextElement();
67
68 if (word instanceof PassageLeftParamWord) paren_level++;
69 if (word instanceof PassageRightParamWord) paren_level--;
70
71 if (paren_level == 0) break;
72
73 buff.append(word);
74 buff.append(" ");
75 }
76
77 try
78 {
79 return PassageFactory.createPassage(buff.toString());
80 }
81 catch (NoSuchVerseException ex)
82 {
83 throw new SearchException("search_illegal_passage", ex, new Object[] { buff.toString() });
84 }
85 }
86 }