blob: eb74941f11f55d132b3d7f93b4417f25f238322b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.framework.search.engine.servlet;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.osee.framework.core.server.OseeHttpServlet;
import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.framework.logging.OseeLog;
/**
* @author Roberto E. Escobar
*/
public class SearchEngineTaggerServlet extends OseeHttpServlet {
private static final long serialVersionUID = 5104108752343302320L;
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
long start = System.currentTimeMillis();
try {
StringBuffer message = new StringBuffer();
int branchId = Integer.parseInt(request.getParameter("branchId"));
boolean waitForTags = Boolean.parseBoolean(request.getParameter("wait"));
if (waitForTags) {
TagListener listener = new TagListener();
Activator.getInstance().getSearchTagger().tagByBranchId(listener, branchId);
if (listener.wasProcessed() != true) {
synchronized (listener) {
listener.wait();
}
}
message.append(String.format("Processed %d queries containing %d attributes in %d ms.",
listener.getQueryCount(), listener.getAttributeCount(), System.currentTimeMillis() - start));
} else {
Activator.getInstance().getSearchTagger().tagByBranchId(branchId);
}
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.setStatus(HttpServletResponse.SC_ACCEPTED);
response.getWriter().write(message.toString());
} catch (Exception ex) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
response.setContentType("text/plain");
OseeLog.log(Activator.class, Level.SEVERE, String.format("Error submitting for tagging - [%s]",
request.toString()), ex);
response.getWriter().write(Lib.exceptionToString(ex));
}
response.getWriter().flush();
response.getWriter().close();
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPut(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
InputStream inputStream = null;
try {
boolean waitForTags = Boolean.parseBoolean(request.getParameter("wait"));
inputStream = request.getInputStream();
if (waitForTags) {
TagListener listener = new TagListener();
Activator.getInstance().getSearchTagger().tagFromXmlStream(listener, inputStream);
if (listener.wasProcessed() != true) {
synchronized (listener) {
listener.wait();
}
}
} else {
Activator.getInstance().getSearchTagger().tagFromXmlStream(inputStream);
}
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.setStatus(HttpServletResponse.SC_CREATED);
} catch (Exception ex) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
response.setContentType("text/plain");
OseeLog.log(Activator.class, Level.SEVERE, String.format("Error submitting for tagging - [%s]",
request.toString()), ex);
response.getWriter().write(Lib.exceptionToString(ex));
} finally {
if (inputStream != null) {
inputStream.close();
}
response.getWriter().flush();
response.getWriter().close();
}
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doDelete(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
String queryId = request.getParameter("queryId");
int value = Activator.getInstance().getSearchTagger().deleteTags(Integer.parseInt(queryId));
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
if (value > 0) {
response.setStatus(HttpServletResponse.SC_ACCEPTED);
} else {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
}
} catch (Exception ex) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
response.setContentType("text/plain");
OseeLog.log(Activator.class, Level.SEVERE, String.format("Error submitting for tagging - [%s]",
request.toString()), ex);
response.getWriter().write(Lib.exceptionToString(ex));
} finally {
response.getWriter().flush();
response.getWriter().close();
}
}
}