view software/mpdl-services-new/mpiwg-mpdl-cms-web/src/de/mpg/mpiwg/berlin/mpdl/servlets/cms/GetToken.java @ 25:e9fe3186670c default tip

letzter Stand eingecheckt
author Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
date Tue, 21 May 2013 10:19:32 +0200
parents
children
line wrap: on
line source

package de.mpg.mpiwg.berlin.mpdl.servlets.cms;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.lucene.index.Term;

import de.mpg.mpiwg.berlin.mpdl.cms.document.Token;
import de.mpg.mpiwg.berlin.mpdl.cms.lucene.IndexHandler;
import de.mpg.mpiwg.berlin.mpdl.exception.ApplicationException;

public class GetToken extends HttpServlet {
  private static final long serialVersionUID = 1L;
  public GetToken() {
    super();
  }

  public void init(ServletConfig config) throws ServletException  {
    super.init(config);
  }

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    String docId = request.getParameter("docId");
    String attribute = request.getParameter("attribute");
    if (attribute == null)
      attribute = "tokenOrig";
    String query = request.getParameter("query");
    String countStr = request.getParameter("count");
    if (countStr == null)
      countStr = "100";
    int count = Integer.parseInt(countStr);
    String outputFormat = request.getParameter("outputFormat");
    if (outputFormat == null)
      outputFormat = "xml";
    try {
      IndexHandler indexHandler = IndexHandler.getInstance();
      ArrayList<Token> token = null;
      if (docId == null)
        token = indexHandler.getToken(attribute, query, count); 
      else
        token = indexHandler.getToken(docId, attribute, query, count);
      if (outputFormat.equals("xml"))
        response.setContentType("text/xml");
      else if (outputFormat.equals("html"))
        response.setContentType("text/html");
      else 
        response.setContentType("text/xml");
      PrintWriter out = response.getWriter();
      out.print("<result>");
      out.print("<attribute>" + attribute + "</attribute>");
      out.print("<query>" + query + "</query>");
      out.print("<count>" + count + "</count>");
      out.print("<result>");
      if (token != null) {
        for (int i=0; i<token.size(); i++) {
          Token t = token.get(i);
          Term term = t.getTerm();
          int freq = t.getFreq();
          out.print("<token>");
          out.print("<text>" + term.text() + "</text>");
          if (freq != -1)
            out.print("<freq>" + freq + "</freq>");
          out.print("</token>");
        }
      }
      out.print("</result>");
      out.print("</result>");
      out.close();
    } catch (ApplicationException e) {
      throw new ServletException(e);
    }
  }

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
  }  

}