view src/main/java/de/mpiwg/indexmeta/web/servlet/JSONInterface.java @ 7:bc57f2660b0f

implementation of web service
author Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
date Fri, 12 Apr 2013 17:48:42 +0200
parents
children
line wrap: on
line source

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 org.json.JSONObject;

import de.mpiwg.indexmeta.web.servlet.methods.JSONGetCtxFromDB;

public class JSONInterface extends AbstractServlet implements Servlet{
	private static final long serialVersionUID = 1L;
	
	private static Logger logger = Logger.getLogger(JSONInterface.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(null, request, response);
				}else if(method.equals("")){
					
				}
				
			}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();
	}
}