package com.jm.dwr;

import java.util.HashMap;
import java.util.Map;

import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;

import com.jm.bean.BeanSession;

/**
 * 
 * 
 * Nome do Arquivo: FacadeAjaxSession.
 * 
 * @author Handerson Frota[handersonbf@gmail.com - www.handersonfrota.com.br]
 * 
 * @since DWRSessionRequest - 2008.
 */
public class FacadeAjaxSession {

	/**
	 * 
	 * @author Handerson Frota[handersonbf@gmail.com]
	 * 
	 * @param attribute
	 * @return
	 */
	public String exampleSession1(String attribute) {
		WebContext wc = WebContextFactory.get();

		String valueSession = "";

		if (wc.getHttpServletRequest().getSession().getAttribute(attribute) != null) {
			valueSession = wc.getHttpServletRequest().getSession().getAttribute(attribute).toString();
		} else {
			valueSession = "Session is null";
		}

		return valueSession;
	}

	/**
	 * 
	 * @author Handerson Frota[handersonbf@gmail.com]
	 * 
	 * @param attribute
	 * @param value
	 */
	public void createSession(String attribute, String value) {
		WebContext wc = WebContextFactory.get();

		wc.getHttpServletRequest().getSession().setAttribute(attribute, value);
	}

	/**
	 * 
	 * @author Handerson Frota[handersonbf@gmail.com]
	 * 
	 * @param attribute
	 * @return
	 */
	public String exampleSession2(String attribute) {
		Session session = new SessionFacade();

		String valueSession = "";

		if (session.getAttribute(attribute) != null) {
			valueSession = session.getAttribute(attribute).toString();
		} else {
			valueSession = "Session is null";
		}

		return valueSession;
	}

	/**
	 * 
	 * @author Handerson Frota[handersonbf@gmail.com]
	 * 
	 * @param beanSession
	 */
	public void addMapSession(BeanSession beanSession) {
		Session session = new SessionFacade();
		Map<String, BeanSession> sessionMap = null;

		if (session.getAttribute("sessionMap") != null) {
			sessionMap = (Map) session.getAttribute("sessionMap");
		} else {
			sessionMap = new HashMap<String, BeanSession>();
		}
		String keyMap = beanSession.getId() + "_" + beanSession.getName();

		beanSession.setKeyMap(keyMap);

		sessionMap.put(keyMap, beanSession);

		session.setAttribute("sessionMap", sessionMap);
	}

	/**
	 * 
	 * @author Handerson Frota[handersonbf@gmail.com]
	 * 
	 * @return
	 * @throws Throwable
	 */
	public Map listMapSession() throws Throwable {
		Session session = new SessionFacade();
		Map<String, BeanSession> sessionMap = null;

		if (session.getAttribute("sessionMap") != null) {
			sessionMap = (Map) session.getAttribute("sessionMap");
		} else {
			sessionMap = new HashMap<String, BeanSession>();
		}

		return sessionMap;
	}

	/**
	 * 
	 * @author Handerson Frota[handersonbf@gmail.com]
	 * 
	 * @param beanSession
	 * @throws Throwable
	 */
	public void removeValueMap(BeanSession beanSession) throws Throwable {
		Session session = new SessionFacade();
		Map sessionMap = null;

		if (session.getAttribute("sessionMap") != null) {
			sessionMap = (Map) session.getAttribute("sessionMap");
		} else {
			sessionMap = new HashMap<String, BeanSession>();
		}

		if (sessionMap.containsKey(beanSession.getKeyMap())) {
			sessionMap.remove(beanSession.getKeyMap());
		}

		session.setAttribute("sessionMap", sessionMap);
	}
}
