1 |
<%@page import="org.openisis.*,java.io.IOException,java.util.Date"%> |
2 |
<%! |
3 |
static final String EMPTY = ""; |
4 |
static Db[] dbs = new Db[2]; |
5 |
static String dberr = EMPTY; |
6 |
static { |
7 |
try { |
8 |
String[] args = new String[] { "-v", "error", "-encoding", "Cp850" }; |
9 |
dbs[0] = Db.open( "/var/db/cds/cds", args ); |
10 |
args = new String[] { "-v", "error", "-format", "aligned" }; |
11 |
dbs[1] = Db.open( "/var/db/unesb/unesb", args ); |
12 |
} catch (IOException e) { |
13 |
e.printStackTrace(); |
14 |
dberr = e.toString(); |
15 |
} |
16 |
}; |
17 |
static String NV ( String x ) { return null==x ? EMPTY : x; } |
18 |
static int ROWS = 5; // number of rows to show at once |
19 |
%> |
20 |
<% |
21 |
String search = NV( request.getParameter( "search" ) ); |
22 |
int off = 0; |
23 |
int rows = ROWS; |
24 |
int dbnum = -1; |
25 |
try { |
26 |
off = Integer.parseInt( request.getParameter( "off" ) ); |
27 |
} catch ( Exception e ) {} |
28 |
try { |
29 |
dbnum = Integer.parseInt( request.getParameter( "db" ) ); |
30 |
if ( dbs.length <= dbnum ) |
31 |
dbnum = -1; |
32 |
} catch ( Exception e ) { } |
33 |
if ( 0 > dbnum ) |
34 |
try { |
35 |
dbnum = Integer.parseInt( (String)session.getAttribute( "db" ) ); |
36 |
} catch ( Exception e ) { dbnum = 0; } |
37 |
else |
38 |
session.setAttribute( "db", ""+dbnum ); |
39 |
Db db = dbs[dbnum]; |
40 |
try { |
41 |
rows = Integer.parseInt( request.getParameter( "rows" ) ); |
42 |
} catch ( Exception e ) {} |
43 |
int[] set = (int[])session.getAttribute( "set" ); |
44 |
%> |
45 |
<html> |
46 |
<head> |
47 |
<title>OpenIsis JSP demo</title> |
48 |
</head> |
49 |
<body> |
50 |
<%= dberr %> |
51 |
<form action="Demo.jsp"> |
52 |
<input type="text" name="search" value="<%=search%>"/> |
53 |
<input type="checkbox" name="narrow" value="1"/> narrow previous search |
54 |
<input type="submit" name="action" value="search"/> |
55 |
<input type="text" name="rows" size="2" value="<%=rows%>"/> rows at once |
56 |
in |
57 |
<select name="db"> |
58 |
<option value="0"<%= 0==dbnum ? " selected" : ""%>>cds</option> |
59 |
<option value="1"<%= 1==dbnum ? " selected" : ""%>>unesb</option> |
60 |
</select> |
61 |
</form> |
62 |
<b> |
63 |
Note: $,"",*,+,^,(F),(G),..,$$,/(tag) are supported. |
64 |
Queries are processed straight left to right. |
65 |
</b> |
66 |
<p> |
67 |
<% |
68 |
if ( EMPTY != search ) { |
69 |
long then = (new Date()).getTime(); |
70 |
int[] nset = db.search( search, Db.QRY_SIMPLE ); |
71 |
long now = (new Date()).getTime(); |
72 |
if ( null == nset ) { |
73 |
%> |
74 |
sorry, no results for <%=search%> |
75 |
<% |
76 |
session.removeAttribute( "set" ); |
77 |
return; |
78 |
} else { |
79 |
%> |
80 |
got <%=nset.length%> rows for <%=search%> |
81 |
in <%=(now - then)/1000.%> seconds.<br> |
82 |
<% |
83 |
if ( null == set || null == request.getParameter("narrow") ) |
84 |
set = nset; |
85 |
else { // and sets |
86 |
set = Db.AND( set, nset ); |
87 |
%> |
88 |
<%=set.length%> rows remaining after combine with previous search<br> |
89 |
<% |
90 |
} |
91 |
session.setAttribute( "set", set ); |
92 |
} |
93 |
} // EMPTY != search |
94 |
if ( null == set ) |
95 |
return; |
96 |
if ( 0 < off ) { |
97 |
int boff = off-rows; |
98 |
if ( boff < 0 ) boff = 0; |
99 |
%> |
100 |
<a href="Demo.jsp?off=<%=boff%>&rows=<%=rows%>"><<rows <%=boff+1%> to <%=boff+rows%></a> |
101 |
<% |
102 |
} |
103 |
int end = off + rows; |
104 |
if ( end >= set.length ) |
105 |
end = set.length; |
106 |
else { |
107 |
%> |
108 |
<a href="Demo.jsp?off=<%=end%>&rows=<%=rows%>">rows <%=end+1%> to <%=end+rows%>>></a> |
109 |
<% |
110 |
} |
111 |
%> |
112 |
<h4> rows <%=off+1%> to <%=end%> </h4> |
113 |
<%-- start output --%> |
114 |
<% |
115 |
if ( 0 == dbnum ) { |
116 |
for ( int i=off; i<end; i++ ) { |
117 |
Rec r = db.readRow( set[i] ); |
118 |
if ( null == r ) continue; |
119 |
int m = Db.MDL | Db.PS | Db.HTA; |
120 |
String r13 = "<br> ", s = "<br>"; |
121 |
%> |
122 |
<p> |
123 |
MFN : <%= r.getRowId() %><br> |
124 |
<%= r.v("CONFERENCE : ",null,12,m,0,0,r13,s) %> |
125 |
<%= r.v("TITLE : ",null,24,m,0,0,r13,s) %> |
126 |
<%= r.v("AUTHOR(S) : ",null,14,m,0,0,"; "+r13+" ",s) %> |
127 |
<%= r.v("EDITION : ",null,25,m,0,0,r13,s) %> |
128 |
<%= r.v("IMPRINT : ",null,26,m,0,0,r13,s) %> |
129 |
<%= r.v("COLLATION : ",null,30,m,0,0,r13,s) %> |
130 |
<%= r.v("SERIES : ",null,44,m,0,0,r13,s) %> |
131 |
<%= r.v("NOTES : ",null,50,m,0,0,r13,s) %> |
132 |
<%= r.v("CORP. BODY : ",null,71,m,0,0,r13,s) %> |
133 |
<%= r.v("ADDED CONF : ",null,72,m,0,0,r13,s) %> |
134 |
<%= r.v("OTHER TITLE: ",null,74,m,0,0,r13,s) %> |
135 |
<%= r.v("OTHER LANG : ",null,76,m|'*',0,0,r13,s) %> |
136 |
<%= r.v("KEYWORDS : ",null,69,m,0,0,r13,s) %> |
137 |
<% |
138 |
} |
139 |
} else { |
140 |
%> |
141 |
<table cols="4" width="100%"> |
142 |
<tr> |
143 |
<td width="20"> </td> |
144 |
<td width="20"> </td> |
145 |
<td width="20"> </td> |
146 |
<td> </td> |
147 |
</tr> |
148 |
<% |
149 |
for ( int i=off; i<end; i++ ) { |
150 |
Rec r = db.readRow( set[i] ); |
151 |
if ( null == r ) { |
152 |
%> |
153 |
<tr> |
154 |
<td colspan="4"> |
155 |
skip bad row <%=set[i]%> as <%=i+1%> of <%=set.length%> |
156 |
</td> |
157 |
</tr> |
158 |
<% |
159 |
continue; |
160 |
} |
161 |
int id = r.getRowId(); |
162 |
int l = r.getLen(); |
163 |
%> |
164 |
<tr> |
165 |
<td colspan="4"> |
166 |
row <%=id%> with <%=l%> fields as <%=i+1%> of <%=set.length%> |
167 |
</td> |
168 |
</tr> |
169 |
<% |
170 |
for ( int j=0; j<l; j++ ) { |
171 |
Field f = r.getField(j); |
172 |
%> |
173 |
<tr> |
174 |
<td> <%=id%> </td> |
175 |
<td> <%=f.tag%> </td> |
176 |
<td> </td> |
177 |
<td> <%=f.html()%> </td> |
178 |
</tr> |
179 |
<% |
180 |
if ( '^' == f.val.charAt(0) ) { |
181 |
Field[] s = f.split(); |
182 |
if ( null == s ) |
183 |
continue; |
184 |
for ( int k=0; k<s.length; k++ ) { |
185 |
if ( null == s[k] ) |
186 |
continue; |
187 |
%> |
188 |
<tr> |
189 |
<td> <%=id%> </td> |
190 |
<td> <%=f.tag%> </td> |
191 |
<td> <%=(char)s[k].tag%> </td> |
192 |
<td> <%=s[k].html()%> </td> |
193 |
</tr> |
194 |
<% |
195 |
} // for subfields |
196 |
} // if subfields |
197 |
} // for fields |
198 |
} // for rows |
199 |
%> |
200 |
</table> |
201 |
<% } %> |
202 |
</body> |