[jboss-cvs] jboss-seam/examples/groovybooking/src/action/org/jboss/seam/example/groovy ...

Emmanuel Bernard emmanuel.bernard at jboss.com
Wed Apr 18 02:40:03 EDT 2007


  User: ebernard
  Date: 07/04/18 02:40:03

  Added:       examples/groovybooking/src/action/org/jboss/seam/example/groovy       
                        HotelBookingAction.groovy Random.groovy
                        ChangePasswordAction.java
                        HotelSearchingAction.groovy
                        AuthenticatorAction.java BookingListAction.groovy
                        RegisterAction.groovy
  Log:
  JBSEAM-1199 Support for .groovy deployment in WEB-INF/dev Cannot be used to write EJB 3 Groovy session beans
  JBSEAM-1200 Support for Groovy in the seam-gen environment
  
  Revision  Changes    Path
  1.1      date: 2007/04/18 06:40:03;  author: ebernard;  state: Exp;jboss-seam/examples/groovybooking/src/action/org/jboss/seam/example/groovy/HotelBookingAction.groovy
  
  Index: HotelBookingAction.groovy
  ===================================================================
  //$Id: HotelBookingAction.groovy,v 1.1 2007/04/18 06:40:03 ebernard Exp $
  package org.jboss.seam.example.groovy
  
  import javax.persistence.EntityManager
  
  import org.jboss.seam.ScopeType
  import org.jboss.seam.annotations.Begin
  import org.jboss.seam.annotations.End
  import org.jboss.seam.annotations.In
  import org.jboss.seam.annotations.Logger
  import org.jboss.seam.annotations.Name
  import org.jboss.seam.annotations.Out
  import org.jboss.seam.core.Events
  import org.jboss.seam.core.FacesMessages
  import org.jboss.seam.log.Log
  
  @Name("hotelBooking")
  class HotelBookingAction
  {
  
     @In
     EntityManager em
  
     @In
     User user
  
     @In(required=false) @Out
     Hotel hotel
  
     @In(required=false)
     @Out(required=false)
     Booking booking
  
     @In
     FacesMessages facesMessages
  
     @In
     Events events
  
     @Logger
     Log log
  
     boolean bookingValid
  
     @Begin
     void selectHotel(Hotel selectedHotel)
     {
        hotel = em.merge(selectedHotel)
     }
  
     void bookHotel()
     {
        booking = new Booking(hotel, user)	
        Calendar calendar = Calendar.getInstance()
        booking.checkinDate = calendar.time
        calendar.add Calendar.DAY_OF_MONTH, 1
        booking.checkoutDate = calendar.time
     }
  
     void setBookingDetails()
     {
        Calendar calendar = Calendar.getInstance()
        calendar.add Calendar.DAY_OF_MONTH, -1
        if ( booking.checkinDate < calendar.time )
        {
           facesMessages.addToControl "checkinDate", "Check in date must be a future date"
           bookingValid=false
        }
        else if ( booking.checkinDate >= booking.checkoutDate )
        {
           facesMessages.addToControl "checkoutDate", "Check out date must be later than check in date"
           bookingValid=false
        }
        else
        {
           bookingValid=true
        }
     }
  
     @Out (required=false, scope=ScopeType.SESSION)
     List <Booking> bookings
  
     @End
     void confirm()
     {
        em.persist(booking)
        facesMessages.add "Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}", new Object[0]
        log.info("New booking: #{booking.id} for #{user.username}")
        // events.raiseTransactionSuccessEvent("bookingConfirmed")
  
        // force refresh in main.xhtml
        bookings = null
     }
  
     @End
     void cancel() {}
  
  }
  
  
  
  1.1      date: 2007/04/18 06:40:03;  author: ebernard;  state: Exp;jboss-seam/examples/groovybooking/src/action/org/jboss/seam/example/groovy/Random.groovy
  
  Index: Random.groovy
  ===================================================================
  //$Id: Random.groovy,v 1.1 2007/04/18 06:40:03 ebernard Exp $
  package org.jboss.seam.example.groovy;
  
  /**
   * Not used in the application but a non Seam component is also hot deployable
   */
  class Random
  {
  
  }
  
  
  
  1.1      date: 2007/04/18 06:40:03;  author: ebernard;  state: Exp;jboss-seam/examples/groovybooking/src/action/org/jboss/seam/example/groovy/ChangePasswordAction.java
  
  Index: ChangePasswordAction.java
  ===================================================================
  //$Id: ChangePasswordAction.java,v 1.1 2007/04/18 06:40:03 ebernard Exp $
  package org.jboss.seam.example.groovy;
  
  import javax.persistence.EntityManager;
  
  import static org.jboss.seam.ScopeType.EVENT;
  import org.jboss.seam.annotations.In;
  import org.jboss.seam.annotations.Name;
  import org.jboss.seam.annotations.Out;
  import org.jboss.seam.annotations.Scope;
  import org.jboss.seam.core.FacesMessages;
  
  @Scope(EVENT)
  @Name("changePassword")
  public class ChangePasswordAction
  {
  
     @In @Out
     private User user;
     
     @In
     private EntityManager em;
     
     private String verify;
     
     private boolean changed;
     
     public void changePassword()
     {
        if ( user.getPassword().equals(verify) )
        {
           user = em.merge(user);
           FacesMessages.instance().add("Password updated");
           changed = true;
        }
        else 
        {
           FacesMessages.instance().add("verify", "Re-enter new password");
           revertUser();
           verify=null;
        }
     }
     
     public boolean isChanged()
     {
        return changed;
     }
     
     private void revertUser()
     {
        user = em.find(User.class, user.getUsername());
     }
  
     public String getVerify()
     {
        return verify;
     }
  
     public void setVerify(String verify)
     {
        this.verify = verify;
     }
     
  }
  
  
  
  1.1      date: 2007/04/18 06:40:03;  author: ebernard;  state: Exp;jboss-seam/examples/groovybooking/src/action/org/jboss/seam/example/groovy/HotelSearchingAction.groovy
  
  Index: HotelSearchingAction.groovy
  ===================================================================
  //$Id: HotelSearchingAction.groovy,v 1.1 2007/04/18 06:40:03 ebernard Exp $
  package org.jboss.seam.example.groovy
  
  import javax.persistence.EntityManager
  import javax.persistence.PersistenceContext
  
  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
  
  import org.jboss.seam.annotations.Factory
  
  @Name("hotelSearch")
  @Scope(ScopeType.SESSION)
  class HotelSearchingAction
  {
  
     @In
     private EntityManager em
  
     String searchString
     int pageSize = 10
     int page
  
     @DataModel
     List<Hotel> hotels
  
     public void find()
     {
        page = 0
        queryHotels()
     }
  
     public void nextPage()
     {
        page++
        queryHotels()
     }
  
     private void queryHotels()
     {
        def query = em.createQuery('''
           select h from Hotel h where
           lower(h.name) like #{pattern}
           or lower(h.city) like #{pattern}
           or lower(h.zip) like #{pattern}
           or lower(h.address) like #{pattern}
           ''')
        query.maxResults = pageSize
        query.firstResult = page * pageSize
        hotels = query.getResultList()	
     }
  
     @Factory(value="pattern", scope=ScopeType.EVENT)
     public String getSearchPattern()
     {
        return searchString ?
              "%${searchString.toLowerCase().replace('*', '%')}%" :
              "%";
     }
  
     public boolean isNextPageAvailable()
     {
        return hotels && hotels.size()==pageSize
     }
  }
  
  
  
  1.1      date: 2007/04/18 06:40:03;  author: ebernard;  state: Exp;jboss-seam/examples/groovybooking/src/action/org/jboss/seam/example/groovy/AuthenticatorAction.java
  
  Index: AuthenticatorAction.java
  ===================================================================
  package org.jboss.seam.example.groovy;
  
  import java.util.List;
  import javax.persistence.EntityManager;
  
  import static org.jboss.seam.ScopeType.SESSION;
  import org.jboss.seam.annotations.In;
  import org.jboss.seam.annotations.Name;
  import org.jboss.seam.annotations.Out;
  
  @Name("authenticator")
  public class AuthenticatorAction
  {
     @In EntityManager em;
     
     @Out(required=false, scope = SESSION)
     private User user;
     
     public boolean authenticate()
     {
        List results = em.createQuery("select u from User u where u.username=#{identity.username} and u.password=#{identity.password}")
              .getResultList();
        
        if ( results.size()==0 )
        {
           return false;
        }
        else
        {
           user = (User) results.get(0);
           return true;
        }
     }
  
  }
  
  
  
  1.1      date: 2007/04/18 06:40:03;  author: ebernard;  state: Exp;jboss-seam/examples/groovybooking/src/action/org/jboss/seam/example/groovy/BookingListAction.groovy
  
  Index: BookingListAction.groovy
  ===================================================================
  //$Id: BookingListAction.groovy,v 1.1 2007/04/18 06:40:03 ebernard Exp $
  package org.jboss.seam.example.groovy
  
  import javax.persistence.EntityManager
  
  import org.jboss.seam.ScopeType
  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.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
  
  @Scope(ScopeType.SESSION)
  @Name("bookingList")
  // @TransactionAttribute(REQUIRES_NEW)
  class BookingListAction implements Serializable
  {
  
     @In
     EntityManager em
  
     @In
     User user
  
     @DataModel
     private List<Booking> bookings
  
     @DataModelSelection
     Booking booking
  
     @Logger
     Log log
  
     @Factory
     public void getBookings()
     {
        bookings = em.createQuery('''
           select b from Booking b
           where b.user.username = :username
           order by b.checkinDate''')
              .setParameter("username", user.username)
              .getResultList()
     }
  
     public void cancel()
     {
        log.info("Cancel booking: #{bookingList.booking.id} for #{user.username}")
        Booking cancelled = em.find(Booking.class, booking.id)
        if (cancelled != null) em.remove( cancelled )
        getBookings()
        FacesMessages.instance().add("Booking cancelled for confirmation number #{bookingList.booking.id}", new Object[0])
     }
  
  }
  
  
  
  1.1      date: 2007/04/18 06:40:03;  author: ebernard;  state: Exp;jboss-seam/examples/groovybooking/src/action/org/jboss/seam/example/groovy/RegisterAction.groovy
  
  Index: RegisterAction.groovy
  ===================================================================
  //$Id: RegisterAction.groovy,v 1.1 2007/04/18 06:40:03 ebernard Exp $
  package org.jboss.seam.example.groovy;
  
  import javax.persistence.EntityManager;
  import javax.persistence.PersistenceContext;
  
  import org.jboss.seam.annotations.Destroy;
  import org.jboss.seam.annotations.In;
  import org.jboss.seam.annotations.Name;
  import org.jboss.seam.annotations.Scope;
  import org.jboss.seam.core.FacesMessages;
  import org.jboss.seam.ScopeType;
  
  @Scope(ScopeType.EVENT)
  @Name("register")
  class RegisterAction
  {
  
     @In
     User user;
  
     @In
     EntityManager em;
  
     @In
     FacesMessages facesMessages;
  
     String verify;
  
     boolean registered;
  
     void register()
     {
         if ( user.password == verify ) {
            List existing = em.createQuery(
               '''select u.username
               from User u
               where u.username=#{user.username}
               ''').getResultList()
  
            if (!existing.size())
            {
               em.persist(user)
               facesMessages.add("Successfully registered as #{user.username}", new Object[0]);
               registered = true
            }
            else
            {
               facesMessages.addToControl("username", "Username #{user.username} already exists")
            }
         }
         else
         {
            facesMessages.add("verify", "Re-enter your password")
            verify=null
         }
     }
  
     void invalid()
     {
        facesMessages.add("Please try again", new Object[0])
     }
  }
  
  
  



More information about the jboss-cvs-commits mailing list