Select Git revision
BuildDocs.cmake
-
Amy Stamile authoredAmy Stamile authored
SearchServlet.java 3.68 KiB
import java.util.logging.Logger;
import java.util.Map;
import java.util.List;
import java.util.ArrayList;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.Charset;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.security.Principal;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SearchServlet extends javax.servlet.http.HttpServlet
{
private static final Logger LOGGER = Logger.getLogger("PSearch");
private static final SearchSettings settings = SearchSettings.getInstance("discovery.properties");
public void init() throws ServletException
{
super.init();
LOGGER.info("URLs : " + settings.serviceUrls.toString());
LOGGER.info("DB : " + settings.dbConn.toString());
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, UnsupportedEncodingException
{
LOGGER.info("trace");
long startTime_msec = System.currentTimeMillis();
legacyLogEntry(request);
Map<String, String[]> params = request.getParameterMap();
try
{
Coord coord = new Coord(params);
SubsurveyId subsurveyId = new SubsurveyId(params);
Inputs inputs = new Inputs(/*auth*/null, coord, subsurveyId, false);
/* query Obscore table */
DbPSearch dbps;
synchronized(DbPSearch.class)
{
dbps = new DbPSearch();
}
String[] pubdidArr = dbps.queryOverlapingPubdid(coord, subsurveyId);
final String RESPONSE_ENCODING = "UTF-8";
/* if filters installed response will be wrapped */
if(response instanceof PubdidResponseWrapper)
{
LOGGER.info("response-type is PubdidResponseWrapper");
response.setContentType("text/plain");
response.setCharacterEncoding(RESPONSE_ENCODING);
/* collect all search description and set to wrapped response */
SearchDescription search = new SearchDescription();
search.pubdidArr = pubdidArr;
search.inputs = inputs;
PubdidResponseWrapper pubdidWrapper = (PubdidResponseWrapper) response;
pubdidWrapper.set(search);
}
else
{
LOGGER.info("response-type is HttpServletResponse");
response.setContentType("text/plain");
response.setCharacterEncoding(RESPONSE_ENCODING);
PrintWriter writer = response.getWriter();
for(String pubdid : pubdidArr)
{
writer.println(pubdid);
}
writer.close();
}
}
catch (IllegalArgumentException illArg)
{
response.sendError(HttpServletResponse.SC_BAD_REQUEST,
"Request with incorrect parameters: " + illArg.getMessage());
return;
}
catch(Exception ex)
{
LOGGER.info("Exception: " + ex.getMessage());
ex.printStackTrace();
}
return;
}
private void legacyLogEntry(HttpServletRequest request) throws UnsupportedEncodingException
{
StringBuffer requestURL = request.getRequestURL();
if (request.getQueryString() != null)
{
requestURL.append("?").append(request.getQueryString());
String completeURL = requestURL.toString();
String className = this.getClass().getSimpleName();
LOGGER.info(className + " vlkb req from: "
+ request.getRemoteAddr()
+ " doGet: " + URLDecoder.decode(completeURL, "UTF-8"));
}
}
}