PlaceMap.java 5.81 KB
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fi.insomnia.bortal.servlet;

import fi.insomnia.bortal.facade.EventMapFacade;
import fi.insomnia.bortal.facade.PlaceFacade;
import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.User;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.PrintWriter;
import javax.ejb.EJB;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author tuukka
 */
public class PlaceMap extends HttpServlet {

    public static final String PARAMETER_EVENT_MAP_ID = "mapid";
    public static final String PARAMETER_SELECTED_PLACE_ID = "placeid";
    public static final String PARAMETER_CURRENT_USER_ID = "userid";
    @EJB
    private PlaceFacade placeFacade;
    @EJB
    private EventMapFacade eventMapFacade;
    @EJB
    private UserFacade userFacade;

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {

            Integer placeId = getIntegerParameter(request, PARAMETER_SELECTED_PLACE_ID);
            Integer mapId = getIntegerParameter(request, PARAMETER_EVENT_MAP_ID);
            Integer userId = getIntegerParameter(request, PARAMETER_CURRENT_USER_ID);

            Place place = null;
            EventMap map = null;

            if (placeId != null) {
                place = placeFacade.find(placeId);
            }

            if (place != null) {
                map = place.getMap();
            } else {
                map = getEventMapFacade().find(mapId);
            }

            BufferedImage image = map.getMapWithPlaces();


            if (userId != null) {
                User user = userFacade.find(userId);

                if(user != null) {
                    place.drawOwnedPlace(image);
                }
            }


            if (place != null) {
                place.drawSelectedPlace(image);
            }



            response.setContentType("image/png");
            ImageIO.write(image, "png", response.getOutputStream());


            /* TODO output your page here
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet PlaceMap</title>");  
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet PlaceMap at " + request.getContextPath () + "</h1>");
            out.println("</body>");
            out.println("</html>");
             */
        } finally {
            out.close();
        }
    }

    public void addPlacesToMap() {
    }

    /***
     * Convert request parameter into integer
     * @param request
     * @param parameter
     * @return
     */
    private static Integer getIntegerParameter(HttpServletRequest request, String parameter) {
        try {
            String valueString = request.getParameter(parameter);
            Integer value = Integer.parseInt(valueString);
            return value;
        } catch (NumberFormatException nfe) {
        }
        return null;
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    /**
     * @return the placeFacade
     */
    public PlaceFacade getPlaceFacade() {
        return placeFacade;
    }

    /**
     * @param placeFacade the placeFacade to set
     */
    public void setPlaceFacade(PlaceFacade placeFacade) {
        this.placeFacade = placeFacade;
    }

    /**
     * @return the eventMapFacade
     */
    public EventMapFacade getEventMapFacade() {
        return eventMapFacade;
    }

    /**
     * @param eventMapFacade the eventMapFacade to set
     */
    public void setEventMapFacade(EventMapFacade eventMapFacade) {
        this.eventMapFacade = eventMapFacade;
    }

    /**
     * @return the userFacade
     */
    public UserFacade getUserFacade() {
        return userFacade;
    }

    /**
     * @param userFacade the userFacade to set
     */
    public void setUserFacade(UserFacade userFacade) {
        this.userFacade = userFacade;
    }
}