public class Controller extends HttpServlet {
  /** Przetworzenie dania dla metod GEt i POST z HTTP.
   * @param request danie
   * @param response odpowied
   */
  protected void processRequest(HttpServletRequest request,
                                HttpServletResponse response)
                                throws ServletException,
                                java.io.IOException {
    String next;

    try {
      // utworzenie obiektu kontekstowego
      RequestContext requestContext = new RequestContext(request, response);

      // wywoanie komponentw przetwarzania zapytania w celu
      // obsugi dania
      ApplicationController applicationController = new ApplicationControllerImpl();
      ResponseContext responseContext =
        applicationController.handleRequest(requestContext);
 
      // wywoanie komponentw zwizanych z obsug odpowiedzi
      applicationController.handleResponse(requestContext, responseContext);
    }
    catch (Exception e) {
      LogManager.logMessage("FrontController(CommandStrategy)", e.getMessage() );

      /** ApplicationResources zapewnia prosty interfejs pobierania staych 
        * i innych predefiniowanych wartoci**/
      next = ApplicationResources.getInstance().getErrorPage(e);
    }

    dispatch(request, response, next);

  }

  /** Obsuga metody GET z HTTP.
   * @param request danie
   * @param response odpowied
   */
  protected void doGet(HttpServletRequest request, 
                       HttpServletResponse response)
                       throws ServletException, java.io.IOException {
    processRequest(request, response);
  }

  /** Obsuga metody POST z HTTP.
   * @param request danie
   * @param response odpowied
   */
  protected void doPost(HttpServletRequest request, 
                        HttpServletResponse response)
                        throws ServletException, java.io.IOException {
    processRequest(request, response);
  }

  /** Zwraca krtki opis serwletu. */
  public String getServletInfo() {
    return getSignature();
  }

  /** metoda przekazania sterowania */
  protected void dispatch(HttpServletRequest request, 
                          HttpServletResponse response,
                          String page) throws 
                          javax.servlet.ServletException, 
                          java.io.IOException {
    RequestDispatcher dispatcher = 
      getServletContext().getRequestDispatcher(page);
    dispatcher.forward(request, response);
  }

  public void init(ServletConfig config) throws ServletException {
    super.init(config);
  }

  public void destroy() { }

  private String getSignature() {
    return "ServiceToWorker-Controller";
  }
}
