2 * Copyright (c) 1995-2010, Index Data
4 * See the file LICENSE for details.
6 package com.indexdata.zgate;
8 import java.io.IOException;
9 import java.io.PrintWriter;
10 import javax.servlet.ServletException;
11 import javax.servlet.http.HttpServlet;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
15 import org.yaz4j.Connection;
16 import org.yaz4j.Record;
17 import org.yaz4j.ResultSet;
18 import org.yaz4j.exception.ZoomException;
24 public class ZgateServlet extends HttpServlet {
27 public void init() throws ServletException {
28 System.out.println("Zeta: java.library.path=" + System.getProperty("java.library.path"));
29 System.out.println("Zeta: LD_LIBRARY_PATH=" + System.getenv("LD_LIBRARY_PATH"));
34 * For dinosaur search use: ?zurl=z3950.loc.gov:7090/voyager&query=@attr 1=7 0253333490&syntax=usmarc
36 protected void doGet(HttpServletRequest request, HttpServletResponse response)
37 throws ServletException, IOException {
38 String zurl = request.getParameter("zurl");
39 if (zurl == null || zurl.isEmpty()) { response.sendError(400, "Missing parameter 'zurl'"); return; }
41 String query = request.getParameter("query");
42 if (query == null || query.isEmpty()) { response.sendError(400, "Missing parameter 'query'"); return; }
44 String syntax = request.getParameter("syntax");
45 if (syntax == null || syntax.isEmpty()) { response.sendError(400, "Missing parameter 'syntax'"); return; }
48 if (request.getParameter("maxrecs") != null && !request.getParameter("maxrecs").isEmpty()) {
50 maxrecs = Integer.parseInt(request.getParameter("maxrecs"));
51 } catch (NumberFormatException nfe) {
52 response.sendError(400, "Malformed parameter 'maxrecs'");
57 response.getWriter().println("SEARCH PARAMETERS");
58 response.getWriter().println("zurl: " + zurl);
59 response.getWriter().println("query: " + query);
60 response.getWriter().println("syntax: " + syntax);
61 response.getWriter().println("maxrecs: " + maxrecs);
62 response.getWriter().println();
64 Connection con = new Connection(zurl, 0);
65 con.setSyntax(syntax);
68 ResultSet set = con.search(query, Connection.QueryType.PrefixQuery);
69 response.getWriter().println("Showing " + maxrecs + " of " +set.getHitCount());
70 response.getWriter().println();
71 for(int i=0; i<set.getHitCount() && i<maxrecs; i++) {
72 Record rec = set.getRecord(i);
73 if (rec == null) continue;
74 response.getWriter().print(rec.render());
76 } catch (ZoomException ze) {
77 throw new ServletException(ze);
84 protected void doPost(HttpServletRequest request, HttpServletResponse response)
85 throws ServletException, IOException {
89 public String getServletInfo() {
90 return "Zeta search engine servlet";