Package com.alexnevsky.hotel.controller

Source Code of com.alexnevsky.hotel.controller.Controller

package com.alexnevsky.hotel.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

import com.alexnevsky.hotel.commands.ICommand;
import com.alexnevsky.hotel.dao.AbstractDAOFactory;
import com.alexnevsky.hotel.manager.AttributesManager;
import com.alexnevsky.hotel.webapp.Config;

/**
* Controller class.
* The Controller process the user requests. Implements Service to Worker
* (Front Controller + View Helper) pattern with Servlet Front,
* Command and Controller, Dispatcher in Controller, JSP View and JavaBean
* Helper strategies. Also Controller part of MVC model.
*
* @version 1.0 10.05.2011
* @author Alex Nevsky
*/
public class Controller extends HttpServlet {

  private static final long serialVersionUID = 1L;
  private static final String LOG4J_CONFIG = "log4jConfigLocation";
  private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
  private static Logger logger;
  /**
   * Data Access Object Factory to use by all classes of the system.
   */
  private static AbstractDAOFactory daoFactory;

  public Controller() {
    super();
  }

  @Override
  public void init() throws ServletException {
    super.init();
    try {
      String pathPrefix = this.getServletContext().getRealPath("/");
      String log4jConfigFile = this.getServletContext().getInitParameter(LOG4J_CONFIG);
      DOMConfigurator.configure(pathPrefix + log4jConfigFile);
      logger = Logger.getLogger(this.getClass());
      daoFactory = Config.getInstance(this.getServletContext()).getDAOFactory();
      logger.info("Servlet successfully initialized");
    } catch (Exception e) {
      // Critical error encountered. One of the resources can not be
      // loaded. So we can not guarantee correct working.
      if (logger != null) {
        logger.fatal(e, e);
      }
      throw new ServletException(e);
    }
  }

  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    response.setContentType(CONTENT_TYPE);
    this.processRequest(request, response);
  }

  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response) {
    response.setContentType(CONTENT_TYPE);
    this.processRequest(request, response);
  }

  /**
   * Processes user request by calling necessary actions
   * and dispatching user to the view.
   *
   * @param request
   *            User request.
   * @param response
   *            Response for the user.
   */
  private void processRequest(HttpServletRequest request, HttpServletResponse response) {
    String page = null;

    try {
      ICommand command = RequestHelper.getInstance().getCommand(request);
      page = command.execute(request, response);
    } finally {
      logger.info("User '" + request.getSession().getAttribute(AttributesManager.PARAM_NAME_LOGIN) + "'. "
          + "Dispatching to view: " + page + ". RemoteAddr: " + request.getRemoteAddr());

      RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher(page);
      try {
        dispatcher.forward(request, response);
      } catch (ServletException ex) {
        logger.error(ex, ex);
      } catch (IOException ex) {
        logger.error(ex, ex);
      }
    }
  }

  /**
   * Returns the DAO Factory associated with this Controller.
   *
   * @return The DAO Factory associated with this Controller
   */
  public static AbstractDAOFactory getDAOFactory() {
    return daoFactory;
  }
}
TOP

Related Classes of com.alexnevsky.hotel.controller.Controller

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.