root/lex/trunk/jsp/search.jsp

Revision 394, 4.7 kB (checked in by chris, 3 years ago)

Fix problem with being unable to create an LS for clauses with no
predicate, e.g. Gen 3,5(f).

Reorganised jsp directory to separate includes and css from jsp pages.

Renamed lsedit.jsp to lexicon.jsp.

Added a controller for lexicon.jsp.

Moved tests into their own package.

Separated finished and unfinished tests to make it easier to run all the
finished and working ones.

Line 
1 <%@ include file="include/setup.jsp" %>
2
3 <% String pageTitle = "Search"; %>
4 <%@ include file="include/header.jsp" %>
5
6 <%@ page import="java.util.*" %>
7 <%@ page import="com.qwirx.lex.Search" %>
8 <%@ page import="com.qwirx.lex.Search.SearchResult" %>
9 <%@ page import="com.qwirx.lex.hebrew.*" %>
10 <%@ page import="com.qwirx.lex.morph.*" %>
11 <%@ page import="com.qwirx.lex.translit.*" %>
12 <%@ page import="jemdros.*" %>
13 <%@ page import="org.aptivate.web.utils.EditField" %>
14
15 <script type="text/javascript"><!--
16
17 function enableLimitControls()
18 {
19         var form = document.forms.simple;
20         form.book.disabled        = !form.limit_loc.checked;
21         // form.max_results.disabled = !form.limit_num.checked;
22 }
23
24 function toggle(button, divid)
25 {
26     div = document.getElementById(divid);
27     if (div.style.display == "block")
28         {
29                 div.style.display = "none";
30         button.value = button.value.replace("«", "»");
31         }
32         else
33         {
34                 div.style.display = "block";
35         button.value = button.value.replace("»", "«");
36         }
37 }
38
39 //--></script>
40
41 <%
42         EditField field = new EditField(request);
43         List<String> books = emdros.getEnumerationConstantNames("book_name_e");
44        
45         int maxResults = 100;
46        
47         try
48         {
49                 maxResults = Integer.parseInt(request.getParameter("max_results"));
50         }
51         catch (Exception e)
52         {
53                 // do nothing
54         }
55        
56         String query  = null;
57         Search search = null;
58         DatabaseException exception = null;
59         boolean simpleSearch   = (request.getParameter("simple")   != null);
60         boolean advancedSearch = (request.getParameter("advanced") != null);
61         List<SearchResult> results = null;
62         DatabaseTransliterator transliterator;
63        
64         if (simpleSearch || advancedSearch)
65         {
66                 transliterator = new DatabaseTransliterator(sql);
67                 search = new Search(emdros, transliterator);
68                 search.setMaxResults(maxResults);
69                
70                 if (simpleSearch)
71                 {
72                         query = request.getParameter("q");
73                         results = search.basic(query);
74                 }
75                 else if (advancedSearch)
76                 {
77                         query = request.getParameter("aq");
78                         // results = search.advanced(query);
79                        
80                         try
81                         {
82                                 results = search.advanced(query);
83                         }
84                         catch (DatabaseException e)
85                         {
86                                 exception = e;
87                         }
88                 }
89         }
90 %>
91
92 <form name="simple" method="GET" class="bigborder">
93         <p>
94                 Simple search (enter surface consonants for a Hebrew word):
95         </p>
96         <p>
97                 <%= field.text("q", "", true, 40) %>
98                 <input type="submit" name="simple" value="Search" />
99                 <%
100                 if (simpleSearch && request.getParameter("q").equals(""))
101                 {
102                         results = null;
103                         %><div class="errormsg">Please enter a word to search for.</div><%
104                 }
105                 %>
106         </p>
107         <hr />
108         <p>
109                 Advanced search (enter an MQL query to nest within [clause]):
110         </p>
111         <p>
112                 <%= field.text("aq").setAttribute("size", "40") %>
113                 <input type="submit" name="advanced" value="Search" />
114                 <%
115                 if (advancedSearch)
116                 {
117                         if (request.getParameter("aq").equals(""))
118                         {
119                                 results = null;
120                                 %><div class="errormsg">Please enter an MQL query.</div><%
121                         }
122                         else if (exception != null)
123                         {
124                                 %>
125                                 <div class="errormsg">
126                                 <%= exception.getCause().getMessage()
127                                         .replaceAll("\n(.)", ": $1") %>
128                                 </div>
129                                 <%
130                         }
131                 }
132                 %>
133         </p>
134         <hr />
135         <div id="simple_adv_div" class="advanced">
136         <p>
137                 <%= field.checkbox("limit_loc").setAttribute("onclick",
138                         "return enableLimitControls()") %>
139                 Limit search to <%= field.select("book", books) %>
140         </p>
141         <p>
142                 Return only the first
143                 <%= field.text("max_results", "100", true, 5) %>
144                 clauses         
145         </p>
146         <hr />
147         <p>
148                 Three Latin consonants are expected, in upper or lower case,
149                 from the set:
150         </p>
151         <table class="grid">
152                 <tr>
153                         <th>Consonants</th>
154                         <%
155                                 String latin  = ">BGDHWZXVJKLMNS<PYQRFCT";
156                                
157                                 for (int i = 0; i < latin.length()      ; i++)
158                                 {
159                                         String c = latin.substring(i, i + 1).replaceAll("<", "&lt;");
160                                         %>
161                                         <td><%= c %></td>
162                                         <%
163                                 }
164                         %>
165                 </tr>
166         </table>
167         </div>
168         <div>
169                 <input type="button" name="simple_adv_btn"
170                         value="Advanced Options &raquo;"
171                         onclick="toggle(this, 'simple_adv_div')" />
172         </div>
173 </form>
174
175 <script type="text/javascript"><!--
176         enableLimitControls();
177 //--></script>
178
179 <%
180         if (search != null && results != null)
181         {               
182                 %>
183                 <h3>Search Results for <em><%= query %></em></h3>
184                 <%
185                
186                 if (results.size() == 0)
187                 {
188                         %><h4>No matches found</h4><%
189                 }
190                 else
191                 {
192                         int numShown = search.getResultCount();
193                         %><h4>Displaying first <%= results.size() %> of
194                         <%= search.getResultCount() %> results.</h4><%
195                
196                         %>
197                         <table class="search_results">
198                                 <tr>
199                                         <th>Clause Text</th>
200                                         <th>Reference</th>
201                                 </tr>
202                         <%
203                
204                         for (Iterator<SearchResult> i = results.iterator(); i.hasNext();)
205                         {
206                                 SearchResult result = i.next();
207                                
208                                 %>
209                                 <tr>
210                                         <td class="translit"><%= result.getDescription() %></td>
211                                         <td><a href="<%= result.getLinkUrl() %>"><%=
212                                                 result.getLocation()
213                                         %></a></td>
214                                 </tr>
215                                 <%
216                         }
217                
218                         %>
219                         </table>
220                         <%
221                 }
222         }       
223 %>
224
225 <%@ include file="include/footer.jsp" %>
Note: See TracBrowser for help on using the browser.