Author: jgallimore
Date: Mon Apr 18 16:17:57 2011
New Revision: 1094639

URL: http://svn.apache.org/viewvc?rev=1094639&view=rev
Log:
Refactor the moviefun application so the JSP view is a little more MVC

Added:
    
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/moviefun.jsp
Removed:
    
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/moviefun.jsp
Modified:
    
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/context.xml
    
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/ActionServlet.java
    
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/MoviesImpl.java
    
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/web.xml
    
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/index.jsp
    
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/setup.jsp

Modified: 
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/context.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/context.xml?rev=1094639&r1=1094638&r2=1094639&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/context.xml
 (original)
+++ 
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/context.xml
 Mon Apr 18 16:17:57 2011
@@ -17,5 +17,5 @@
     limitations under the License.
 -->
 <Context>
-  <Valve className="org.apache.catalina.valves.RemoteAddrValve" 
allow="127\.0\.0\.1|0:0:0:0:0:0:0:1(%.*)?" deny=""/>
-</Context>
\ No newline at end of file
+  <Valve className="org.apache.catalina.valves.RemoteAddrValve" 
allow="127\.0\.0\.1|0:0:0:0:0:0:0:1(%.*)?|^::1$" deny=""/>
+</Context>

Modified: 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/ActionServlet.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/ActionServlet.java?rev=1094639&r1=1094638&r2=1094639&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/ActionServlet.java
 (original)
+++ 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/ActionServlet.java
 Mon Apr 18 16:17:57 2011
@@ -16,8 +16,17 @@
  */
 package org.superbiz.moviefun;
 
-import javax.ejb.EJB;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ListIterator;
+
+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 javax.ejb.EJB;
 
 /**
  * @version $Revision$ $Date$
@@ -25,7 +34,113 @@ import javax.servlet.http.HttpServlet;
 public class ActionServlet extends HttpServlet {
 
     @EJB(name = "movies")
-    private Movies movies;
+    private Movies moviesBean;
+
+       @Override
+       protected void doGet(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
+               process(request, response);
+       }
+
+       @Override
+       protected void doPost(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
+               process(request, response);
+       }
+
+       private void process(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
+               HttpSession session = request.getSession();
+               
+           List<Movie> movies = null;
+           ListIterator<Movie> listIterator = null;
+           int display = 5;
+           
+           String action = request.getParameter("action");
+
+           
+               if ("Add".equals(action)) {
+
+               String title = request.getParameter("title");
+               String director = request.getParameter("director");
+               String genre = request.getParameter("genre");
+               int rating = Integer.parseInt(request.getParameter("rating"));
+               int year = Integer.parseInt(request.getParameter("year"));
+
+               Movie movie = new Movie(title, director, genre, rating, year);
+
+               moviesBean.addMovie(movie);
+
+           } else if ("Remove".equals(action)) {
+
+               String[] ids = request.getParameterValues("id");
+               for (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 (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);
+           
+           List<Movie> moviesToShow = new ArrayList<Movie>();
+           
+           boolean hasPrevious = listIterator.hasPrevious();
+           
+           int start = listIterator.nextIndex();
+        
+           for (int i=display; i > 0 && listIterator.hasNext(); i-- ) {
+                   Movie movie = (Movie) listIterator.next();
+                   moviesToShow.add(movie);
+           }
+        
+           boolean hasNext = listIterator.hasNext();
+                       
+           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);
+       }
 
 }

Modified: 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/MoviesImpl.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/MoviesImpl.java?rev=1094639&r1=1094638&r2=1094639&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/MoviesImpl.java
 (original)
+++ 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/java/org/superbiz/moviefun/MoviesImpl.java
 Mon Apr 18 16:17:57 2011
@@ -68,7 +68,7 @@ public class MoviesImpl implements Movie
     @Override
     public void deleteMovieId(long id) {
         Movie movie = entityManager.find(Movie.class, id);
-        entityManager.remove(movie);
+        deleteMovie(movie);
     }
 
     @Override

Added: 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/moviefun.jsp
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/moviefun.jsp?rev=1094639&view=auto
==============================================================================
--- 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/moviefun.jsp
 (added)
+++ 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/moviefun.jsp
 Mon Apr 18 16:17:57 2011
@@ -0,0 +1,134 @@
+<%--
+    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.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions"; prefix="fn" %>
+<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c' %>
+
+<html>
+<head><title>Moviefun :: Index</title>
+    <link rel="stylesheet" href="default.css" type="text/css"/>
+
+</head>
+<body>
+<p/>
+<div id="Content">
+<table>
+<tr>
+<td>
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+    <tr class="topBar">
+        <td align="left" width="85%">&nbsp;
+            <span class="topBarDiv">Mini-Movie Application</span>
+        </td>
+        <td align="right" valign="middle" width="1%" nowrap>
+            <form method="POST" action="moviefun" name="findMovie" 
style="padding: 1px; margin: 1px">
+            <select name="action">
+                <option value="findByTitle">Title</option>
+                <option value="findByDirector">Director</option>
+                <option value="findByGenre">Genre</option>
+            </select>
+            <input type="text" name="key" size="20"/>
+            <input type="submit" value="Search"/>
+            </form>
+        </td>
+    </tr>
+    </table>
+
+</td>
+</tr>
+<tr>
+<td>
+    <div class="basicPanelContainer" style="width: 100%">
+
+        <div class="basicPanelTitle">Movies</div>
+
+        <div class="basicPanelBody">
+            <form method="POST" action="moviefun" name="listMovies" 
style="padding: 1px; margin: 1px">
+            <table class="tableview" width="100%" cellspacing="0" 
cellpadding="0" style="padding: 5px">
+            <tr>
+            <th>Title</th>
+            <th>Director</th>
+            <th>Genre</th>
+            <th>Rating</th>
+            <th>Year</th>
+            <th>&nbsp;</th>
+            </tr>
+            <c:forEach var="movie" items="${movies}">
+            <tr>
+            <td width="200"><c:out value="${movie.title}" /></td>
+            <td width="120"><c:out value="${movie.director}" /></td>
+            <td width="90"><c:out value="${movie.genre}" /></td>
+            <td width="50"><c:out value="${movie.rating}" /></td>
+            <td width="50"><c:out value="${movie.year}" /></td>
+            <td><input type="checkbox" name="id" value="<c:out 
value="${movie.id}" />"></td>
+            </tr>
+
+            </c:forEach>
+            </table>
+            <table width="100%" cellspacing="0" cellpadding="0" 
style="padding: 5px">
+            <tr>
+            <td>
+            <c:if test="${hasPrev}"><input type="submit" name="action" 
value="<<"/></c:if>
+
+            <c:out value="${start+1}" /> -  <c:out value="${end}" /> of  
<c:out value="${total}" />
+
+            <c:if test="${hasNext}"><input type="submit" name="action" 
value=">>"/></c:if>
+            </td>
+            </tr>
+            </table>
+            </form>
+        </div>
+    </div>
+</td>
+</tr>
+<tr>
+<td>
+    <div class="basicPanelContainer" style="width: 100%">
+        <div class="basicPanelTitle">Add</div>
+        <div class="basicPanelBody">
+            <form method="POST" action="moviefun" name="addMovie" 
style="padding: 1px; margin: 1px">
+            <table width="100%" cellspacing="0" cellpadding="0" 
style="padding: 0px">
+            <tr>
+            <td width="200"><input type="text" name="title" size="29"/></td>
+            <td width="120"><input type="text" name="director" size="17"/></td>
+            <td width="90"><input type="text" name="genre" size="14"/></td>
+            <td width="50"><input type="text" name="rating" size="7"/></td>
+            <td width="50"><input type="text" name="year" size="4"/></td>
+            <td><input type="submit" name="action" value="Add"/></td>
+            </tr>
+            </table>
+            </form>
+
+        </div>
+    </div>
+</td>
+</tr>
+</table>
+
+    <div class="bottomshadow"></div>
+
+    <div id="poweredby" class="smalltext">
+        Powered by
+        <a href="http://tomcat.apache.org"; class="smalltext">Apache Tomcat</a> 
and
+        <a href="http://openejb.apache.org"; class="smalltext">Apache 
OpenEJB</a>.
+        <br/>
+    </div>
+
+
+</div>
+</body>
+</html>
\ No newline at end of file

Modified: 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/web.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/web.xml?rev=1094639&r1=1094638&r2=1094639&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/web.xml
 (original)
+++ 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/WEB-INF/web.xml
 Mon Apr 18 16:17:57 2011
@@ -16,26 +16,29 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd";>
-  <context-param>
-    <param-name>javax.faces.PROJECT_STAGE</param-name>
-    <param-value>Development</param-value>
-  </context-param>
-  <servlet>
-    <servlet-name>ActionServlet</servlet-name>
-    <servlet-class>org.superbiz.moviefun.ActionServlet</servlet-class>
-  </servlet>
-  <servlet>
-    <servlet-name>Faces Servlet</servlet-name>
-    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
-    <load-on-startup>1</load-on-startup>
-  </servlet>
-  <servlet-mapping>
-    <servlet-name>Faces Servlet</servlet-name>
-    <url-pattern>/faces/*</url-pattern>
-  </servlet-mapping>
-  <welcome-file-list>
-    <welcome-file>index.jsp</welcome-file>
-  </welcome-file-list>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd";>
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>ActionServlet</servlet-name>
+        <servlet-class>org.superbiz.moviefun.ActionServlet</servlet-class>
+    </servlet>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>ActionServlet</servlet-name>
+        <url-pattern>/moviefun/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>index.jsp</welcome-file>
+    </welcome-file-list>
 </web-app>

Modified: 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/index.jsp
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/index.jsp?rev=1094639&r1=1094638&r2=1094639&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/index.jsp 
(original)
+++ 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/index.jsp 
Mon Apr 18 16:17:57 2011
@@ -23,11 +23,10 @@
 <p/>
 
 <div id="Content">
-    <p>Please select one of the following links:</p>
-    <a href="setup.jsp">Setup</a> - Sets up the application with some sample 
data<br/>
-    <a href="moviefun.jsp">JSP</a> - Use the JSP version of the 
application<br/>
-    <a href="faces/index.xhtml">JSF</a> - Use the JSF 2 version of the 
application<br/>
-
+       <p>Please select one of the following links:</p>
+       <a href="setup.jsp">Setup</a> - Sets up the application with some 
sample data<br />
+       <a href="moviefun">JSP</a> - Use the JSP version of the application<br 
/>
+       <a href="faces/index.xhtml">JSF</a> - Use the JSF 2 version of the 
application<br />
 
     <div class="bottomshadow"></div>
 

Modified: 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/setup.jsp
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/setup.jsp?rev=1094639&r1=1094638&r2=1094639&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/setup.jsp 
(original)
+++ 
openejb/trunk/openejb3/examples/webapps/moviefun/app/src/main/webapp/setup.jsp 
Mon Apr 18 16:17:57 2011
@@ -62,4 +62,4 @@ Done!
 </table>
 
 <h2>Continue</h2>
-<a href="moviefun.jsp">Go to main app</a>
\ No newline at end of file
+<a href="moviefun">Go to main app</a>
\ No newline at end of file


Reply via email to