changeset 9:2bc783262919 default tip

Implementation of Servlet
author Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
date Wed, 24 Apr 2013 10:34:46 +0200
parents 9ce7979fd037
children
files src/main/java/de/mpiwg/indexmeta/web/servlet/JSONServlet.java src/main/java/de/mpiwg/indexmeta/web/servlet/methods/JSONGetCtxFromIndexMeta.java src/main/java/de/mpiwg/indexmeta/web/servlet/methods/JSONSaveCtx.java
diffstat 3 files changed, 196 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /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<String, String[]> paramMap){
+		StringBuilder sb = new StringBuilder();
+		
+		for(Entry<String, String[]> 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();
+	}
+}
--- /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
--- /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());	
+		
+	}
+
+}