package eu.dnetlib.enabling.ui;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.velocity.Template;
import org.apache.velocity.context.Context;
import org.springframework.beans.factory.annotation.Required;

public class MapMainServlet extends MainServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 8186357695248972911L;
	private String googleMapKey;
	private String mdHarvFormat;
	private String mdAggrFormat;
	private boolean withTransformatorService;
	
	public MapMainServlet() throws ServletException {
		super();
	}


	
	@Override
	public Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context context) throws Exception {
		String base = (request.getContextPath().split("\\/"))[1];

		String sessionId = "";
		Cookie[] cookies = request.getCookies();
		if (cookies != null) {
			for (Cookie c : cookies) {
				if (c.getName().equals("session")) {
					sessionId =  c.getValue();
				}
			}
		}

		String basedir = "/" + base + "/" + gwtModule;
		
		context.put("TITLE", title);
		context.put("BASEDIR", basedir);
		context.put("MDAGGRFORMAT", mdAggrFormat);
		context.put("MDHARVFORMAT", mdHarvFormat);
		context.put("WITHTRANSFORMATOR", withTransformatorService);
		
		if ((sessionId == "")||(sessionManager.isValidSession(sessionId))) {
			context.put("DRIVERAPPCONTEXT", "/" + base);
			context.put("GOOGLEMAPKEY" , googleMapKey);
			context.put("GWTJS", gwtModule + ".nocache.js");
			return getVelocityEngine().getTemplate(template);
		}
	
		return getVelocityEngine().getTemplate("eu/dnetlib/enabling/ui/velocity/sessionexpired_base.html.vm");
	}

	public String getGoogleMapKey() {
		return googleMapKey;
	}

	@Required
	public void setGoogleMapKey(String googleMapKey) {
		this.googleMapKey = googleMapKey;
	}



	public String getMdHarvFormat() {
		return mdHarvFormat;
	}


	@Required
	public void setMdHarvFormat(String mdHarvFormat) {
		this.mdHarvFormat = mdHarvFormat;
	}

	public String getMdAggrFormat() {
		return mdAggrFormat;
	}

	@Required
	public void setMdAggrFormat(String mdAggrFormat) {
		this.mdAggrFormat = mdAggrFormat;
	}
	
	public boolean isWithTransformatorService() {
		return withTransformatorService;
	}
	
	@Required
	public void setWithTransformatorService(boolean withTransformatorService) {
		this.withTransformatorService = withTransformatorService;
	}
}
