# HG changeset patch # User Jorge Urzua # Date 1366792486 -7200 # Node ID 2bc783262919f9bf65960a12e158acf203266589 # Parent 9ce7979fd03761f077cfd7b269ebfa2e7ba55c8c Implementation of Servlet diff -r 9ce7979fd037 -r 2bc783262919 src/main/java/de/mpiwg/indexmeta/web/servlet/JSONServlet.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/mpiwg/indexmeta/web/servlet/JSONServlet.java Wed Apr 24 10:34:46 2013 +0200 @@ -0,0 +1,100 @@ +package de.mpiwg.indexmeta.web.servlet; + +import java.io.IOException; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; +import java.util.Map; +import java.util.Map.Entry; + +import javax.servlet.Servlet; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; + +import de.mpiwg.indexmeta.web.servlet.methods.JSONGetCtxFromDB; +import de.mpiwg.indexmeta.web.servlet.methods.JSONGetCtxFromIndexMeta; +import de.mpiwg.indexmeta.web.servlet.methods.JSONSaveCtx; + +public class JSONServlet extends AbstractServlet implements Servlet{ + private static final long serialVersionUID = 1L; + + private static Logger logger = Logger.getLogger(JSONServlet.class); + + private HttpServletRequest request; + private HttpServletResponse response; + + private void initialize(HttpServletRequest request, HttpServletResponse response){ + + this.request = request; + this.response = response; + this.response.setContentType("application/json; charset=UTF-8"); + + try { + System.out.println(request.getCharacterEncoding()); + request.setCharacterEncoding("UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + this.doIt(request, response); + } + + public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + this.doIt(request, response); + } + + public void doIt(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + long start = System.currentTimeMillis(); + this.initialize(request, response); + + String method = request.getParameter(METHOD); + + logger.info("Starting " + paramsToString(request.getParameterMap())); + + if(StringUtils.isNotEmpty(method)){ + try{ + if(method.equals(getCtxFromDB)){ + JSONGetCtxFromDB.execute(getDp(request, response), request, response); + }else if(method.equals(getCtxFromIndexMeta)){ + JSONGetCtxFromIndexMeta.execute(getDp(request, response), request, response); + }else if(method.equals(getSaveCtx)){ + JSONSaveCtx.execute(getDp(request, response), request, response); + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + PrintWriter out = response.getWriter(); + out.print(e.getMessage()); + response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); + } + }else{ + response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter method can not be null."); + } + + long end = System.currentTimeMillis(); + logger.info("Finish [time=" + (end-start) + "] " + paramsToString(request.getParameterMap())); + } + + private String paramsToString(Map paramMap){ + StringBuilder sb = new StringBuilder(); + + for(Entry entry : paramMap.entrySet()){ + sb.append(entry.getKey() + "=["); + int count = 0; + for(String value : entry.getValue()){ + if(count > 0){ + sb.append(", "); + } + sb.append(value); + count++; + } + sb.append("] "); + } + + return sb.toString(); + } +} diff -r 9ce7979fd037 -r 2bc783262919 src/main/java/de/mpiwg/indexmeta/web/servlet/methods/JSONGetCtxFromIndexMeta.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/mpiwg/indexmeta/web/servlet/methods/JSONGetCtxFromIndexMeta.java Wed Apr 24 10:34:46 2013 +0200 @@ -0,0 +1,32 @@ +package de.mpiwg.indexmeta.web.servlet.methods; + +import java.io.IOException; +import java.io.PrintWriter; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.json.JSONException; +import org.json.JSONObject; + +import de.mpiwg.indexmeta.services.DataProvider; + +public class JSONGetCtxFromIndexMeta extends AbstractServletMethod { + + public static void execute(DataProvider dp, + HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException, JSONException { + + JSONObject json = new JSONObject(); + + long startExecution = System.currentTimeMillis(); + + //TODO + + json.put(RUNTIME, (System.currentTimeMillis() - startExecution)); + + PrintWriter out = response.getWriter(); + out.print(json.toString()); + } +} \ No newline at end of file diff -r 9ce7979fd037 -r 2bc783262919 src/main/java/de/mpiwg/indexmeta/web/servlet/methods/JSONSaveCtx.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/mpiwg/indexmeta/web/servlet/methods/JSONSaveCtx.java Wed Apr 24 10:34:46 2013 +0200 @@ -0,0 +1,64 @@ +package de.mpiwg.indexmeta.web.servlet.methods; + +import java.io.PrintWriter; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.json.JSONObject; + +import de.mpiwg.indexmeta.bo.Contextualization; +import de.mpiwg.indexmeta.services.DataProvider; + +public class JSONSaveCtx extends AbstractServletMethod { + + public static void execute(DataProvider dp, + HttpServletRequest request, HttpServletResponse response) + throws Exception { + + JSONObject json = new JSONObject(); + + long startExecution = System.currentTimeMillis(); + + String indexMetaId = getString(request, p_indexMetaId); + String elementId = getString(request, p_elementId); + + String comment = getString(request, p_comment); + String content = getString(request, p_content); + String remoteId = getString(request, p_remoteId); + String state = getString(request, p_state); + String type = getString(request, p_type); + + if(StringUtils.isEmpty(indexMetaId) || + StringUtils.isEmpty(elementId) || + StringUtils.isEmpty(type)){ + + response.sendError(HttpServletResponse.SC_BAD_REQUEST, + "Parameters 'indexMetaId', 'elementId' and 'type' are null. " + + "At least one of them must be not null."); + return; + } + + Contextualization ctx = dp.getCtx(indexMetaId, elementId); + + if(ctx == null){ + ctx = new Contextualization(); + ctx.setIndexMetaId(indexMetaId); + ctx.setElementId(elementId); + } + + ctx.setComment(comment); + ctx.setContent(content); + ctx.setRemoteId(remoteId); + ctx.setState(state); + ctx.setType(type); + + json.put(RUNTIME, (System.currentTimeMillis() - startExecution)); + + PrintWriter out = response.getWriter(); + out.print(json.toString()); + + } + +}