[jboss-cvs] jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa ...

Michael Yuan michael.yuan at jboss.com
Tue Jan 9 15:53:45 EST 2007


  User: myuan   
  Date: 07/01/09 15:53:45

  Modified:    examples/jpa/src/org/jboss/seam/example/jpa          
                        Booking.java BookingListAction.java
                        ChangePasswordAction.java Hotel.java
                        HotelBookingAction.java HotelSearchingAction.java
                        LoginAction.java RegisterAction.java User.java
  Removed:     examples/jpa/src/org/jboss/seam/example/jpa          
                        LogoutAction.java
  Log:
  Update the app to the new booking example
  
  Revision  Changes    Path
  1.4       +15 -3     jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/Booking.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Booking.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/Booking.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- Booking.java	1 Dec 2006 23:56:16 -0000	1.3
  +++ Booking.java	9 Jan 2007 20:53:44 -0000	1.4
  @@ -1,14 +1,14 @@
  -//$Id: Booking.java,v 1.3 2006/12/01 23:56:16 myuan Exp $
  +//$Id: Booking.java,v 1.4 2007/01/09 20:53:44 myuan Exp $
   package org.jboss.seam.example.jpa;
   
   import java.io.Serializable;
  +import java.math.BigDecimal;
   import java.text.DateFormat;
   import java.util.Date;
   
   import javax.persistence.Basic;
   import javax.persistence.Entity;
   import javax.persistence.GeneratedValue;
  -import javax.persistence.GenerationType;
   import javax.persistence.Id;
   import javax.persistence.ManyToOne;
   import javax.persistence.Temporal;
  @@ -44,6 +44,18 @@
         this.user = user;
      }
   
  +   @Transient
  +   public BigDecimal getTotal()
  +   {
  +      return hotel.getPrice().multiply( new BigDecimal( getNights() ) );
  +   }
  +
  +   @Transient
  +   public int getNights()
  +   {
  +      return (int) ( checkoutDate.getTime() - checkinDate.getTime() ) / 1000 / 60 / 60 / 24;
  +   }
  +
      @Id @GeneratedValue
      public Long getId()
      {
  @@ -113,7 +125,7 @@
      public String getDescription()
      {
         DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
  -      return hotel.getName() + 
  +      return hotel==null ? null : hotel.getName() + 
               ", " + df.format( getCheckinDate() ) + 
               " to " + df.format( getCheckoutDate() );
      }
  
  
  
  1.2       +18 -9     jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/BookingListAction.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: BookingListAction.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/BookingListAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- BookingListAction.java	8 Nov 2006 09:38:59 -0000	1.1
  +++ BookingListAction.java	9 Jan 2007 20:53:44 -0000	1.2
  @@ -1,30 +1,34 @@
  -//$Id: BookingListAction.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  +//$Id: BookingListAction.java,v 1.2 2007/01/09 20:53:44 myuan Exp $
   package org.jboss.seam.example.jpa;
   
  +import static javax.ejb.TransactionAttributeType.REQUIRES_NEW;
   import static org.jboss.seam.ScopeType.SESSION;
   
   import java.io.Serializable;
   import java.util.List;
   
  +import javax.ejb.Remove;
  +import javax.ejb.Stateful;
  +import javax.ejb.TransactionAttribute;
   import javax.persistence.EntityManager;
   import javax.persistence.PersistenceContext;
   
  -import org.jboss.seam.annotations.Logger;
   import org.jboss.seam.annotations.Destroy;
   import org.jboss.seam.annotations.Factory;
   import org.jboss.seam.annotations.In;
  +import org.jboss.seam.annotations.Logger;
   import org.jboss.seam.annotations.Name;
   import org.jboss.seam.annotations.Observer;
  -import org.jboss.seam.annotations.Out;
   import org.jboss.seam.annotations.Scope;
   import org.jboss.seam.annotations.datamodel.DataModel;
   import org.jboss.seam.annotations.datamodel.DataModelSelection;
   import org.jboss.seam.core.FacesMessages;
   import org.jboss.seam.log.Log;
   
  + at Stateful
   @Scope(SESSION)
   @Name("bookingList")
  -// @LoggedIn
  + at TransactionAttribute(REQUIRES_NEW)
   public class BookingListAction implements Serializable
   {
      
  @@ -37,7 +41,6 @@
      @DataModel
      private List<Booking> bookings;
      @DataModelSelection 
  -   @Out(required=false)
      private Booking booking;
      
      @Logger 
  @@ -52,15 +55,21 @@
               .getResultList();
      }
      
  -   public String cancel()
  +   public void cancel()
      {
  -      log.info("Cancel booking: #0 for #{user.username}", booking.getId());
  +      log.info("Cancel booking: #{bookingList.booking.id} for #{user.username}");
         Booking cancelled = em.find(Booking.class, booking.getId());
         if (cancelled!=null) em.remove( cancelled );
         getBookings();
  -      FacesMessages.instance().add("Booking cancelled for confirmation number #{booking.id}");
  -      return "main";
  +      FacesMessages.instance().add("Booking cancelled for confirmation number #{bookingList.booking.id}");
  +   }
  +   
  +   public Booking getBooking()
  +   {
  +      return booking;
      }
      
  +   @Destroy @Remove
  +   public void destroy() {}
      
   }
  
  
  
  1.2       +15 -10    jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/ChangePasswordAction.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ChangePasswordAction.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/ChangePasswordAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- ChangePasswordAction.java	8 Nov 2006 09:38:59 -0000	1.1
  +++ ChangePasswordAction.java	9 Jan 2007 20:53:44 -0000	1.2
  @@ -1,8 +1,10 @@
  -//$Id: ChangePasswordAction.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  +//$Id: ChangePasswordAction.java,v 1.2 2007/01/09 20:53:44 myuan Exp $
   package org.jboss.seam.example.jpa;
   
   import static org.jboss.seam.ScopeType.EVENT;
   
  +import javax.ejb.Remove;
  +import javax.ejb.Stateful;
   import javax.persistence.EntityManager;
   import javax.persistence.PersistenceContext;
   
  @@ -13,10 +15,11 @@
   import org.jboss.seam.annotations.Scope;
   import org.jboss.seam.core.FacesMessages;
   
  + at Stateful
   @Scope(EVENT)
   @Name("changePassword")
  -// @LoggedIn
  -public class ChangePasswordAction {
  +public class ChangePasswordAction
  +{
   
      @In @Out
      private User user;
  @@ -26,27 +29,27 @@
      
      private String verify;
      
  -   public String changePassword()
  +   private boolean changed;
  +   
  +   public void changePassword()
      {
         if ( user.getPassword().equals(verify) )
         {
            user = em.merge(user);
            FacesMessages.instance().add("Password updated");
  -         return "main";
  +         changed = true;
         }
         else 
         {
            FacesMessages.instance().add("verify", "Re-enter new password");
            revertUser();
            verify=null;
  -         return null;
         }
      }
      
  -   public String cancel()
  +   public boolean isChanged()
      {
  -      revertUser();
  -      return "main";
  +      return changed;
      }
   
      private void revertUser()
  @@ -64,4 +67,6 @@
         this.verify = verify;
      }
      
  +   @Destroy @Remove
  +   public void destroy() {}
   }
  
  
  
  1.2       +14 -2     jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/Hotel.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Hotel.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/Hotel.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- Hotel.java	8 Nov 2006 09:38:59 -0000	1.1
  +++ Hotel.java	9 Jan 2007 20:53:44 -0000	1.2
  @@ -1,8 +1,10 @@
  -//$Id: Hotel.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  +//$Id: Hotel.java,v 1.2 2007/01/09 20:53:44 myuan Exp $
   package org.jboss.seam.example.jpa;
   
   import java.io.Serializable;
  +import java.math.BigDecimal;
   
  +import javax.persistence.Column;
   import javax.persistence.Entity;
   import javax.persistence.GeneratedValue;
   import javax.persistence.Id;
  @@ -22,6 +24,7 @@
      private String state;
      private String zip;
      private String country;
  +   private BigDecimal price;
      
      @Id @GeneratedValue
      public Long getId()
  @@ -88,12 +91,21 @@
      {
         return country;
      }
  -   
      public void setCountry(String country)
      {
         this.country = country;
      }
   
  +   @Column(precision=6, scale=2)
  +   public BigDecimal getPrice()
  +   {
  +      return price;
  +   }
  +   public void setPrice(BigDecimal price)
  +   {
  +      this.price = price;
  +   }
  +   
      @Override
      public String toString()
      {
  
  
  
  1.3       +25 -24    jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/HotelBookingAction.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: HotelBookingAction.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/HotelBookingAction.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- HotelBookingAction.java	17 Nov 2006 02:49:05 -0000	1.2
  +++ HotelBookingAction.java	9 Jan 2007 20:53:44 -0000	1.3
  @@ -1,11 +1,12 @@
  -//$Id: HotelBookingAction.java,v 1.2 2006/11/17 02:49:05 gavin Exp $
  +//$Id: HotelBookingAction.java,v 1.3 2007/01/09 20:53:44 myuan Exp $
   package org.jboss.seam.example.jpa;
   
   import static javax.persistence.PersistenceContextType.EXTENDED;
   
   import java.util.Calendar;
  -import java.util.Date;
   
  +import javax.ejb.Remove;
  +import javax.ejb.Stateful;
   import javax.persistence.EntityManager;
   import javax.persistence.PersistenceContext;
   
  @@ -20,10 +21,12 @@
   import org.jboss.seam.core.FacesMessages;
   import org.jboss.seam.log.Log;
   
  + at Stateful
   @Name("hotelBooking")
  -// @LoggedIn
  -public class HotelBookingAction {
  +public class HotelBookingAction
  +{
      
  +   // @PersistenceContext(type=EXTENDED)
      @In (create=true)
      private EntityManager em;
      
  @@ -46,61 +49,59 @@
      @Logger 
      private Log log;
      
  +   private boolean bookingValid;
  +   
      @Begin
  -   public String selectHotel(Hotel selectedHotel)
  +   public void selectHotel(Hotel selectedHotel)
      {
         hotel = em.merge(selectedHotel);
  -      return "hotel";
      }
      
  -   public String bookHotel()
  +   public void bookHotel()
      {      
         booking = new Booking(hotel, user);
         Calendar calendar = Calendar.getInstance();
         booking.setCheckinDate( calendar.getTime() );
         calendar.add(Calendar.DAY_OF_MONTH, 1);
         booking.setCheckoutDate( calendar.getTime() );
  -      
  -      return "book";
      }
   
  -   public String setBookingDetails()
  +   public void setBookingDetails()
      {
  -      if (booking==null || hotel==null) return "main";
  -      
         Calendar calendar = Calendar.getInstance();
         calendar.add(Calendar.DAY_OF_MONTH, -1);
         if ( booking.getCheckinDate().before( calendar.getTime() ) )
         {
            facesMessages.add("Check in date must be a future date");
  -         return null;
         }
         else if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )
         {
            facesMessages.add("Check out date must be later than check in date");
  -         return null;
         }
         else
         {
  -         return "confirm";
  +         bookingValid=true;
         }
      }
   
  +   public boolean isBookingValid()
  +   {
  +      return bookingValid;
  +   }
  +   
      @End
  -   public String confirm()
  +   public void confirm()
      {
  -      if (booking==null || hotel==null) return "main";
         em.persist(booking);
         facesMessages.add("Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}");
         log.info("New booking: #{booking.id} for #{user.username}");
  -      events.raiseEvent("bookingConfirmed");
  -      return "confirmed";
  +      events.raiseTransactionSuccessEvent("bookingConfirmed");
      }
      
      @End
  -   public String cancel()
  -   {
  -      return "main";
  -   }
  +   public void cancel() {}
  +   
  +   @Destroy @Remove
  +   public void destroy() {}
   
   }
  \ No newline at end of file
  
  
  
  1.2       +15 -11    jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/HotelSearchingAction.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: HotelSearchingAction.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/HotelSearchingAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- HotelSearchingAction.java	8 Nov 2006 09:38:59 -0000	1.1
  +++ HotelSearchingAction.java	9 Jan 2007 20:53:44 -0000	1.2
  @@ -1,23 +1,26 @@
  -//$Id: HotelSearchingAction.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  +//$Id: HotelSearchingAction.java,v 1.2 2007/01/09 20:53:44 myuan Exp $
   package org.jboss.seam.example.jpa;
   
   import java.util.List;
   
  +import javax.ejb.Remove;
  +import javax.ejb.Stateful;
   import javax.persistence.EntityManager;
   import javax.persistence.PersistenceContext;
   
  -import org.jboss.seam.annotations.In;
  -
   import org.jboss.seam.ScopeType;
   import org.jboss.seam.annotations.Destroy;
   import org.jboss.seam.annotations.Name;
   import org.jboss.seam.annotations.Scope;
   import org.jboss.seam.annotations.datamodel.DataModel;
   
  +import org.jboss.seam.annotations.In;
  +
  + at Stateful
   @Name("hotelSearch")
   @Scope(ScopeType.SESSION)
  -// @LoggedIn
  -public class HotelSearchingAction {
  +public class HotelSearchingAction
  +{
      
      @In (create=true)
      private EntityManager em;
  @@ -29,18 +32,16 @@
      @DataModel
      private List<Hotel> hotels;
      
  -   public String find()
  +   public void find()
      {
         page = 0;
         queryHotels();   
  -      return "main";
      }
   
  -   public String nextPage()
  +   public void nextPage()
      {
         page++;
         queryHotels();
  -      return "main";
      }
         
      private void queryHotels()
  @@ -76,4 +77,7 @@
         this.searchString = searchString;
      }
   
  +   @Destroy @Remove
  +   public void destroy() {}
  +
   }
  \ No newline at end of file
  
  
  
  1.2       +46 -10    jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/LoginAction.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: LoginAction.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/LoginAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- LoginAction.java	8 Nov 2006 09:38:59 -0000	1.1
  +++ LoginAction.java	9 Jan 2007 20:53:44 -0000	1.2
  @@ -1,27 +1,43 @@
  -//$Id: LoginAction.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  +//$Id: LoginAction.java,v 1.2 2007/01/09 20:53:44 myuan Exp $
   package org.jboss.seam.example.jpa;
   
   import java.util.List;
   
  +import javax.ejb.Remove;
  +import javax.ejb.Stateful;
   import javax.persistence.EntityManager;
   import javax.persistence.PersistenceContext;
   
  +import org.jboss.seam.ScopeType;
  +import org.jboss.seam.Seam;
  +import org.jboss.seam.annotations.Destroy;
   import org.jboss.seam.annotations.In;
   import org.jboss.seam.annotations.Name;
   import org.jboss.seam.annotations.Out;
  -import org.jboss.seam.contexts.Contexts;
  +import org.jboss.seam.annotations.Scope;
  +import org.jboss.seam.annotations.Synchronized;
   import org.jboss.seam.core.FacesMessages;
   
  + at Stateful
  + at Scope(ScopeType.SESSION)
  + at Synchronized
   @Name("login")
  -public class LoginAction {
  +public class LoginAction
  +{
      
  -   @In @Out
  +   @In(required=false) 
  +   @Out(required=false)
      private User user;
      
      @In (create=true)
      private EntityManager em;
   
  -   public String login()
  +   @In
  +   private FacesMessages facesMessages;
  +   
  +   private boolean loggedIn;
  +
  +   public void login()
      {
         List<User> results = em.createQuery("select u from User u where u.username=:username and u.password=:password")
               .setParameter("username", user.getUsername())
  @@ -30,17 +46,37 @@
         
         if ( results.size()==0 )
         {
  -         FacesMessages.instance().add("Invalid login");
  -         return "login";
  +         facesMessages.add("Invalid login");
         }
         else
         {
            user = results.get(0);
  -         Contexts.getSessionContext().set("loggedIn", true);
  -         FacesMessages.instance().add("Welcome, #{user.name}");
  -         return "main";
  +         loggedIn = true;
  +         facesMessages.add("Welcome, #{user.name}");
  +      }
  +      
  +   }
  +
  +   public void logout()
  +   {
  +      loggedIn = false;
  +      Seam.invalidateSession();
         }
         
  +   public void validateLogin()
  +   {
  +      if ( !loggedIn )
  +      {
  +         facesMessages.add("Please log in first");
      }
  +   }
  +
  +   public boolean isLoggedIn()
  +   {
  +      return loggedIn;
  +   }
  +   
  +   @Destroy @Remove
  +   public void destroy() {}
   
   }
  
  
  
  1.3       +23 -6     jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/RegisterAction.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: RegisterAction.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/RegisterAction.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- RegisterAction.java	17 Nov 2006 02:49:05 -0000	1.2
  +++ RegisterAction.java	9 Jan 2007 20:53:44 -0000	1.3
  @@ -1,10 +1,12 @@
  -//$Id: RegisterAction.java,v 1.2 2006/11/17 02:49:05 gavin Exp $
  +//$Id: RegisterAction.java,v 1.3 2007/01/09 20:53:44 myuan Exp $
   package org.jboss.seam.example.jpa;
   
   import static org.jboss.seam.ScopeType.EVENT;
   
   import java.util.List;
   
  +import javax.ejb.Remove;
  +import javax.ejb.Stateful;
   import javax.persistence.EntityManager;
   import javax.persistence.PersistenceContext;
   
  @@ -14,9 +16,11 @@
   import org.jboss.seam.annotations.Scope;
   import org.jboss.seam.core.FacesMessages;
   
  + at Stateful
   @Scope(EVENT)
   @Name("register")
  -public class RegisterAction {
  +public class RegisterAction
  +{
   
      @In
      private User user;
  @@ -29,7 +33,9 @@
      
      private String verify;
      
  -   public String register()
  +   private boolean registered;
  +   
  +   public void register()
      {
         if ( user.getPassword().equals(verify) )
         {
  @@ -40,22 +46,30 @@
            {
               em.persist(user);
               facesMessages.add("Successfully registered as #{user.username}");
  -            return "login";
  +            registered = true;
            }
            else
            {
               facesMessages.add("Username #{user.username} already exists");
  -            return null;
            }
         }
         else 
         {
            facesMessages.add("verify", "Re-enter your password");
            verify=null;
  -         return null;
         }
      }
   
  +   public void invalid()
  +   {
  +      facesMessages.add("Please try again");
  +   }
  +   
  +   public boolean isRegistered()
  +   {
  +      return registered;
  +   }
  +
      public String getVerify()
      {
         return verify;
  @@ -65,4 +79,7 @@
      {
         this.verify = verify;
      }
  +   
  +   @Destroy @Remove
  +   public void destroy() {}
   }
  
  
  
  1.2       +0 -0      jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/User.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: User.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/User.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- User.java	8 Nov 2006 09:38:59 -0000	1.1
  +++ User.java	9 Jan 2007 20:53:44 -0000	1.2
  @@ -1,4 +1,4 @@
  -//$Id: User.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  +//$Id: User.java,v 1.2 2007/01/09 20:53:44 myuan Exp $
   package org.jboss.seam.example.jpa;
   
   import static org.jboss.seam.ScopeType.SESSION;
  
  
  



More information about the jboss-cvs-commits mailing list