/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.superbiz.moviefun; import javax.ejb.EJB; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; /** * @version $Revision$ $Date$ */ public class ActionServlet extends HttpServlet { @EJB(name = "movies") private Movies moviesBean; @Override protected void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { process(request, response); } @Override protected void doPost(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { process(request, response); } private void process(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { final HttpSession session = request.getSession(); List<Movie> movies = null; ListIterator<Movie> listIterator = null; final int display = 5; final String action = request.getParameter("action"); if ("Add".equals(action)) { final String title = request.getParameter("title"); final String director = request.getParameter("director"); final String genre = request.getParameter("genre"); final int rating = Integer.parseInt(request.getParameter("rating")); final int year = Integer.parseInt(request.getParameter("year")); final Movie movie = new Movie(title, director, genre, rating, year); moviesBean.addMovie(movie); } else if ("Remove".equals(action)) { final String[] ids = request.getParameterValues("id"); for (final String id : ids) { moviesBean.deleteMovieId(new Long(id)); } } else if (">>".equals(action)) { movies = (List) session.getAttribute("movies.collection"); listIterator = (ListIterator) session.getAttribute("movies.iterator"); } else if ("<<".equals(action)) { movies = (List) session.getAttribute("movies.collection"); listIterator = (ListIterator) session.getAttribute("movies.iterator"); for (int i = display * 2; i > 0 && listIterator.hasPrevious(); i--) { listIterator.previous(); // backup } } else if ("findByTitle".equals(action)) { movies = moviesBean.findByTitle(request.getParameter("key")); } else if ("findByDirector".equals(action)) { movies = moviesBean.findByDirector(request.getParameter("key")); } else if ("findByGenre".equals(action)) { movies = moviesBean.findByGenre(request.getParameter("key")); } if (movies == null) { try { movies = moviesBean.getMovies(); } catch (final Throwable e) { // We must not have run setup yet response.sendRedirect("setup.jsp"); return; } } if (listIterator == null) { listIterator = movies.listIterator(); } session.setAttribute("movies.collection", movies); session.setAttribute("movies.iterator", listIterator); final List<Movie> moviesToShow = new ArrayList<Movie>(); final boolean hasPrevious = listIterator.hasPrevious(); final int start = listIterator.nextIndex(); for (int i=display; i > 0 && listIterator.hasNext(); i-- ) { final Movie movie = (Movie) listIterator.next(); moviesToShow.add(movie); } final boolean hasNext = listIterator.hasNext(); final int end = listIterator.nextIndex(); request.setAttribute("movies", moviesToShow); request.setAttribute("start", start); request.setAttribute("end", end); request.setAttribute("total", movies.size()); request.setAttribute("display", display); request.setAttribute("hasNext", hasNext); request.setAttribute("hasPrev", hasPrevious); request.getRequestDispatcher("WEB-INF/moviefun.jsp").forward(request, response); } }