diff src/main/java/de/mpiwg/indexmeta/web/servlet/JSONServlet.java @ 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
children
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();
+	}
+}