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

Norman Richards norman.richards at jboss.com
Mon Feb 19 16:53:50 EST 2007


  User: nrichards
  Date: 07/02/19 16:53:50

  Modified:    examples/spring/src/org/jboss/seam/example/spring               
                        Booking.java Hotel.java HotelBookingAction.java
                        HotelSearchingAction.java User.java
  Added:       examples/spring/src/org/jboss/seam/example/spring               
                        BookingListAction.java BookingService.java
                        ChangePasswordAction.java LoginAction.java
                        RegisterAction.java UserService.java
                        ValidationException.java
  Removed:     examples/spring/src/org/jboss/seam/example/spring               
                        MyApp.java SeamBookingDao.java
                        SpringBookingDao.java
  Log:
  booking
  
  Revision  Changes    Path
  1.2       +190 -173  jboss-seam/examples/spring/src/org/jboss/seam/example/spring/Booking.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Booking.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/spring/src/org/jboss/seam/example/spring/Booking.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- Booking.java	18 Feb 2007 19:57:59 -0000	1.1
  +++ Booking.java	19 Feb 2007 21:53:50 -0000	1.2
  @@ -1,6 +1,8 @@
  +//$Id: Booking.java,v 1.2 2007/02/19 21:53:50 nrichards Exp $
   package org.jboss.seam.example.spring;
   
   import java.io.Serializable;
  +import java.math.BigDecimal;
   import java.text.DateFormat;
   import java.util.Date;
   
  @@ -16,10 +18,11 @@
   import org.hibernate.validator.Length;
   import org.hibernate.validator.NotNull;
   import org.hibernate.validator.Pattern;
  +import org.jboss.seam.annotations.Name;
   
   @Entity
  -public class Booking 
  -    implements Serializable
  + at Name("booking")
  +public class Booking implements Serializable
   {
      private Long id;
      private User user;
  @@ -41,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()
      {
  @@ -50,6 +65,7 @@
      {
         this.id = id;
      }
  +   
      @NotNull
      @Basic @Temporal(TemporalType.DATE) 
      public Date getCheckinDate()
  @@ -94,7 +110,7 @@
      
      @NotNull(message="Credit card number is required")
      @Length(min=16, max=16, message="Credit card number must 16 digits long")
  -   @Pattern(regex="\\d*", message="Credit card number must be numeric")
  +   @Pattern(regex="^\\d*$", message="Credit card number must be numeric")
      public String getCreditCard()
      {
         return creditCard;
  @@ -109,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() );
      }
  @@ -170,4 +186,5 @@
      {
         return "Booking(" + user + ","+ hotel + ")";
      }
  +
   }
  
  
  
  1.2       +114 -112  jboss-seam/examples/spring/src/org/jboss/seam/example/spring/Hotel.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Hotel.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/spring/src/org/jboss/seam/example/spring/Hotel.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- Hotel.java	18 Feb 2007 19:57:59 -0000	1.1
  +++ Hotel.java	19 Feb 2007 21:53:50 -0000	1.2
  @@ -1,3 +1,4 @@
  +//$Id: Hotel.java,v 1.2 2007/02/19 21:53:50 nrichards Exp $
   package org.jboss.seam.example.spring;
   
   import java.io.Serializable;
  @@ -10,10 +11,11 @@
   
   import org.hibernate.validator.Length;
   import org.hibernate.validator.NotNull;
  +import org.jboss.seam.annotations.Name;
   
   @Entity
  -public class Hotel 
  -    implements Serializable
  + at Name("hotel")
  +public class Hotel implements Serializable
   {
       private Long id;
       private String name;
  
  
  
  1.2       +104 -92   jboss-seam/examples/spring/src/org/jboss/seam/example/spring/HotelBookingAction.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: HotelBookingAction.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/spring/src/org/jboss/seam/example/spring/HotelBookingAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- HotelBookingAction.java	19 Feb 2007 19:30:26 -0000	1.1
  +++ HotelBookingAction.java	19 Feb 2007 21:53:50 -0000	1.2
  @@ -1,44 +1,62 @@
  +//$Id: HotelBookingAction.java,v 1.2 2007/02/19 21:53:50 nrichards Exp $
   package org.jboss.seam.example.spring;
   
  +import static org.jboss.seam.ScopeType.SESSION;
  +import static javax.persistence.PersistenceContextType.EXTENDED;
  +
   import java.util.Calendar;
  +import java.util.List;
   
  -import javax.persistence.EntityManager;
  -import javax.persistence.EntityManagerFactory;
  -import javax.persistence.PersistenceException;
  +import javax.faces.application.FacesMessage;
  +import javax.faces.application.FacesMessage.Severity;
   
  -//import org.jboss.seam.core.Events;
  +import org.jboss.seam.annotations.Begin;
  +import org.jboss.seam.annotations.Destroy;
  +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;
  -import org.springframework.orm.jpa.JpaCallback;
  -import org.springframework.orm.jpa.JpaTemplate;
  -
  -public class HotelBookingAction
  -{   
  -    private JpaTemplate jpaTemplate;
  +import org.jboss.seam.log.Log;
  +
  +import org.hibernate.Session;
  +
  + at Name("hotelBooking")
  +public class HotelBookingAction {
  +
  +	@In("#{bookingService}")
  +	private BookingService bookingService;
   
  +	@In
       private User user;
  +
  +	@In(required = false)
  +	@Out
       private Hotel hotel;
  +
  +	@In(required = false)
  +	@Out(required = false)
       private Booking booking;
  +
  +	@In
       private FacesMessages facesMessages;
  -//    private Events events;
  -//    private Log log;
  +
  +	@In
  +	private Events events;
  +
  +	@Logger
  +	private Log log;
   
       private boolean bookingValid;
   
  -    //@Begin
  -    public void selectHotel(final Hotel selectedHotel)
  -    {
  -        hotel = (Hotel) jpaTemplate.execute(new JpaCallback() {        
  -            public Object doInJpa(EntityManager em) 
  -                throws PersistenceException 
  -            {
  -                return em.merge(selectedHotel);
  -            }
  -        });
  +	@Begin
  +	public void selectHotel(Hotel selectedHotel) {
  +		hotel = bookingService.findHotelById(selectedHotel.getId());
       }
   
  -    public void bookHotel()
  -    {      
  +	public void bookHotel() {
           booking = new Booking(hotel, user);
           Calendar calendar = Calendar.getInstance();
           booking.setCheckinDate(calendar.getTime());
  @@ -46,47 +64,41 @@
           booking.setCheckoutDate(calendar.getTime());
       }
   
  -    public void setBookingDetails()
  -    {
  -        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");
  -            bookingValid=false;
  -        } else if (!booking.getCheckinDate().before(booking.getCheckoutDate())) {
  -            facesMessages.add("Check out date must be later than check in date");
  -            bookingValid=false;
  -        } else {
  -            bookingValid=true;
  +	public void setBookingDetails() {
  +		bookingValid = true;
  +		try {
  +			bookingService.validateBooking(booking);
  +		} catch (ValidationException e) {
  +			facesMessages.add(FacesMessage.SEVERITY_ERROR, e.getMessage());
  +			bookingValid = false;
           }
       }
  -    public boolean isBookingValid()
  -    {
  +
  +	public boolean isBookingValid() {
           return bookingValid;
       }
   
  -    //@End
  -    public void confirm()
  -    {
  -        jpaTemplate.execute(new JpaCallback() {        
  -            public Object doInJpa(EntityManager em) 
  -                throws PersistenceException 
  -            {
  -                System.out.println("PERSIST: " + booking);
  -                em.persist(booking);
  +	@Out(required = false, scope = SESSION)
  +	List<Booking> bookings;
  +
  +	@End
  +	public String confirm() {
  +		try {
  +			bookingService.bookHotel(booking);
  +		} catch (ValidationException e) {
  +			facesMessages.add(FacesMessage.SEVERITY_ERROR, e.getMessage());
                   return null;
               }
  -        });
  +		facesMessages.add("Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}");
  +		log.info("New booking: #{booking.id} for #{user.username}");
          
  -        //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.raiseTransactionSuccessEvent("bookingConfirmed");
  +		// force refresh in main.xhtml
  +		bookings = null;
  +		return "main";
       }
   
  -    //@End
  -    public void cancel() {}
  -    
  -    public void setEntityManagerFactory(EntityManagerFactory emf) {
  -        jpaTemplate = new JpaTemplate(emf);
  +	@End
  +	public void cancel() {
       }
  +
   }
  \ No newline at end of file
  
  
  
  1.2       +68 -91    jboss-seam/examples/spring/src/org/jboss/seam/example/spring/HotelSearchingAction.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: HotelSearchingAction.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/spring/src/org/jboss/seam/example/spring/HotelSearchingAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- HotelSearchingAction.java	19 Feb 2007 19:30:26 -0000	1.1
  +++ HotelSearchingAction.java	19 Feb 2007 21:53:50 -0000	1.2
  @@ -1,72 +1,45 @@
  +//$Id: HotelSearchingAction.java,v 1.2 2007/02/19 21:53:50 nrichards Exp $
   package org.jboss.seam.example.spring;
   
  -import java.util.ArrayList;
   import java.util.List;
   
  -import javax.faces.model.DataModel;
  -import javax.persistence.EntityManager;
  -import javax.persistence.EntityManagerFactory;
  -import javax.persistence.PersistenceException;
  -
  -import org.jboss.seam.jsf.ListDataModel;
  -import org.springframework.orm.jpa.JpaCallback;
  -import org.springframework.orm.jpa.JpaTemplate;
  +import org.jboss.seam.ScopeType;
  +import org.jboss.seam.annotations.In;
  +import org.jboss.seam.annotations.Name;
  +import org.jboss.seam.annotations.Scope;
  +import org.jboss.seam.annotations.datamodel.DataModel;
   
  + at Name("hotelSearch")
  + at Scope(ScopeType.SESSION)
   public class HotelSearchingAction
   {
  -   private JpaTemplate jpaTemplate;
  +
  +   @In("#{bookingService}")
  +   private BookingService bookingService;
      
      private String searchString;
      private int pageSize = 10;
      private int page;
      
  +   @DataModel
      private List<Hotel> hotels;
      
  -   public void setEntityManagerFactory(EntityManagerFactory emf) {
  -       jpaTemplate = new JpaTemplate(emf);
  -   }
  -   
  -   public List<Hotel> getHotels() {
  -       return hotels;
  -   }
  -   
  -   public DataModel getHotelsModel() {
  -       List data = getHotels();
  -       
  -       if (data == null) {
  -           data = new ArrayList(0);
  -       }
  -       
  -       return new ListDataModel(data);       
  -   }
  -   
      public void find()
      {
         page = 0;
         queryHotels();
      }
  +
      public void nextPage()
      {
         page++;
         queryHotels();
      }
         
  -   @SuppressWarnings("unchecked")
      private void queryHotels()
      {       
  -       hotels = (List<Hotel>) jpaTemplate.execute(new JpaCallback() {        
  -           public Object doInJpa(EntityManager em) 
  -               throws PersistenceException 
  -           {
                  String searchPattern = searchString==null ? "%" : '%' + searchString.toLowerCase().replace('*', '%') + '%';
  -               return em.createQuery("select h from Hotel h where lower(h.name) like :search or lower(h.city) like :search or lower(h.zip) like :search or lower(h.address) like :search")
  -                     .setParameter("search", searchPattern)
  -                     .setMaxResults(pageSize)
  -                     .setFirstResult( page * pageSize )
  -                     .getResultList();              
  -           }
  -       });
  -       System.out.println("HOTELS:" + hotels);
  +      hotels = bookingService.findHotels(searchPattern, pageSize, page * pageSize);
      }
      
      public boolean isNextPageAvailable()
  @@ -77,15 +50,19 @@
      public int getPageSize() {
         return pageSize;
      }
  +
      public void setPageSize(int pageSize) {
         this.pageSize = pageSize;
      }
  +
      public String getSearchString()
      {
         return searchString;
      }
  +
      public void setSearchString(String searchString)
      {
         this.searchString = searchString;
      }
  +
   }
  \ No newline at end of file
  
  
  
  1.2       +11 -2     jboss-seam/examples/spring/src/org/jboss/seam/example/spring/User.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: User.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/spring/src/org/jboss/seam/example/spring/User.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- User.java	18 Feb 2007 19:57:59 -0000	1.1
  +++ User.java	19 Feb 2007 21:53:50 -0000	1.2
  @@ -1,3 +1,4 @@
  +//$Id: User.java,v 1.2 2007/02/19 21:53:50 nrichards Exp $
   package org.jboss.seam.example.spring;
   
   import static org.jboss.seam.ScopeType.SESSION;
  @@ -6,12 +7,19 @@
   
   import javax.persistence.Entity;
   import javax.persistence.Id;
  +import javax.persistence.Table;
  +
   import org.hibernate.validator.Length;
   import org.hibernate.validator.NotNull;
  +import org.hibernate.validator.Pattern;
  +import org.jboss.seam.annotations.Name;
  +import org.jboss.seam.annotations.Scope;
   
   @Entity
  -public class User 
  -    implements Serializable
  + at Name("user")
  + at Scope(SESSION)
  + at Table(name="Customer")
  +public class User implements Serializable
   {
      private String username;
      private String password;
  @@ -50,6 +58,7 @@
      
      @Id
      @Length(min=5, max=15)
  +   @Pattern(regex="^\\w*$", message="not a valid username")
      public String getUsername()
      {
         return username;
  
  
  
  1.1      date: 2007/02/19 21:53:50;  author: nrichards;  state: Exp;jboss-seam/examples/spring/src/org/jboss/seam/example/spring/BookingListAction.java
  
  Index: BookingListAction.java
  ===================================================================
  //$Id: BookingListAction.java,v 1.1 2007/02/19 21:53:50 nrichards Exp $
  package org.jboss.seam.example.spring;
  
  // 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.TransactionAttribute;
  
  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.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;
  
  import org.hibernate.Session;
  
  @Scope(SESSION)
  @Name("bookingList")
  // @TransactionAttribute(REQUIRES_NEW)
  public class BookingListAction implements Serializable
  {
  
     @In("#{bookingService}")
     private BookingService bookingService;
  
     @In
     private User user;
  
     @DataModel
     private List<Booking> bookings;
     @DataModelSelection
     private Booking booking;
  
     @Logger
     private Log log;
  
     @Factory(value="")
     // @Observer("bookingConfirmed")
     public void getBookings()
     {
        bookings = bookingService.findBookingsByUsername(user.getUsername());
     }
  
     public void cancel()
     {
        log.info("Cancel booking: #{bookingList.booking.id} for #{user.username}");
        bookingService.cancelBooking(booking.getId());
        getBookings();
        FacesMessages.instance().add("Booking cancelled for confirmation number #{bookingList.booking.id}");
     }
  
     public Booking getBooking()
     {
        return booking;
     }
  
  }
  
  
  
  1.1      date: 2007/02/19 21:53:50;  author: nrichards;  state: Exp;jboss-seam/examples/spring/src/org/jboss/seam/example/spring/BookingService.java
  
  Index: BookingService.java
  ===================================================================
  /**
   *
   */
  package org.jboss.seam.example.spring;
  
  import java.util.Calendar;
  import java.util.List;
  
  import org.hibernate.Session;
  
  /**
   * @author youngm
   *
   */
  public class BookingService {
  	private Session session;
  
  	public List<Hotel> findHotels(String searchPattern, int firstResult, int maxResults) {
  		return session.createQuery("select h from Hotel h where lower(h.name) like :search or lower(h.city) like :search or lower(h.zip) like :search or lower(h.address) like :search")
  	            .setParameter("search", searchPattern)
  	            .setMaxResults(maxResults)
  	            .setFirstResult( firstResult )
  	            .list();
  	}
  
  	public List findBookingsByUsername(String username) {
  		return session.createQuery("select b from Booking b where b.user.username = :username order by b.checkinDate")
  				.setParameter("username", username).list();
  	}
  
  	public void cancelBooking(Long bookingId) {
  		if (bookingId == null) {
  			throw new IllegalArgumentException("BookingId cannot be null");
  		}
  		Booking cancelled = (Booking) session.get(Booking.class, bookingId);
  		if (cancelled != null) {
  			session.delete(cancelled);
  		}
  	}
  
  	public void validateBooking(Booking booking) throws ValidationException {
  		Calendar calendar = Calendar.getInstance();
  		calendar.add(Calendar.DAY_OF_MONTH, -1);
  		if (booking.getCheckinDate().before(calendar.getTime())) {
  			throw new ValidationException("Check in date must be a future date");
  		} else if (!booking.getCheckinDate().before(booking.getCheckoutDate())) {
  			throw new ValidationException("Check out date must be later than check in date");
  		}
  	}
  
  	public void bookHotel(Booking booking) throws ValidationException {
  		validateBooking(booking);
  		session.persist(booking);
  	}
  
  	public Hotel findHotelById(Long hotelId) {
  		if (hotelId == null) {
  			throw new IllegalArgumentException("hotelId cannot be null");
  		}
  		return (Hotel) session.get(Hotel.class, hotelId);
  	}
  
  	/**
  	 * @param session the session to set
  	 */
  	public void setSession(Session session) {
  		this.session = session;
  	}
  }
  
  
  
  1.1      date: 2007/02/19 21:53:50;  author: nrichards;  state: Exp;jboss-seam/examples/spring/src/org/jboss/seam/example/spring/ChangePasswordAction.java
  
  Index: ChangePasswordAction.java
  ===================================================================
  //$Id: ChangePasswordAction.java,v 1.1 2007/02/19 21:53:50 nrichards Exp $
  package org.jboss.seam.example.spring;
  
  import static org.jboss.seam.ScopeType.EVENT;
  
  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.annotations.Scope;
  import org.jboss.seam.core.FacesMessages;
  
  import org.hibernate.Session;
  
  @Scope(EVENT)
  @Name("changePassword")
  public class ChangePasswordAction
  {
  
     @In @Out
     private User user;
  
     @In("#{userService}")
     private UserService userService;
  
     private String verify;
  
     private boolean changed;
  
     public void changePassword()
     {
  	   if(userService.changePassword(user.getUsername(), verify, user.getPassword())) {
  	         FacesMessages.instance().add("Password updated");
  	         changed = true;
  	   } else {
  	         FacesMessages.instance().add("verify", "Re-enter new password");
  	         verify=null;
  	   }
  	   user = userService.findUser(user.getUsername());
     }
  
     public boolean isChanged()
     {
        return changed;
     }
  
     public String getVerify()
     {
        return verify;
     }
  
     public void setVerify(String verify)
     {
        this.verify = verify;
     }
  
  }
  
  
  
  1.1      date: 2007/02/19 21:53:50;  author: nrichards;  state: Exp;jboss-seam/examples/spring/src/org/jboss/seam/example/spring/LoginAction.java
  
  Index: LoginAction.java
  ===================================================================
  //$Id: LoginAction.java,v 1.1 2007/02/19 21:53:50 nrichards Exp $
  package org.jboss.seam.example.spring;
  
  import org.jboss.seam.ScopeType;
  import org.jboss.seam.Seam;
  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.annotations.Synchronized;
  import org.jboss.seam.core.FacesMessages;
  
  @Scope(ScopeType.SESSION)
  @Synchronized
  @Name("login")
  public class LoginAction {
  
  	@In(required = false)
  	@Out(required = false)
  	private User user;
  
  	@In("#{userService}")
  	private UserService userService;
  
  	@In
  	private FacesMessages facesMessages;
  
  	private boolean loggedIn;
  
  	public void login() {
  		User candidateUser = userService.findUser(user.getUsername(), user.getPassword());
  
  		if (candidateUser == null) {
  			facesMessages.add("Invalid login");
  		} else {
  			user = candidateUser;
  			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;
  	}
  
  }
  
  
  
  1.1      date: 2007/02/19 21:53:50;  author: nrichards;  state: Exp;jboss-seam/examples/spring/src/org/jboss/seam/example/spring/RegisterAction.java
  
  Index: RegisterAction.java
  ===================================================================
  //$Id: RegisterAction.java,v 1.1 2007/02/19 21:53:50 nrichards Exp $
  package org.jboss.seam.example.spring;
  
  import static org.jboss.seam.ScopeType.EVENT;
  
  import java.util.List;
  
  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.hibernate.Session;
  
  @Scope(EVENT)
  @Name("register")
  public class RegisterAction
  {
  
     @In
     private User user;
  
     @In("#{userService}")
     private UserService userService;
  
     @In
     private FacesMessages facesMessages;
  
     private String verify;
  
     private boolean registered;
  
     public void register()
     {
        if ( user.getPassword().equals(verify) )
        {
  
      	  try {
      		  userService.createUser(user);
                registered = true;
      	  } catch(ValidationException e) {
      		  facesMessages.add(e.getMessage());
      	  }
        }
        else
        {
           facesMessages.add("verify", "Re-enter your password");
           verify=null;
        }
     }
  
     public void invalid()
     {
        facesMessages.add("Please try again");
     }
  
     public boolean isRegistered()
     {
        return registered;
     }
  
     public String getVerify()
     {
        return verify;
     }
  
     public void setVerify(String verify)
     {
        this.verify = verify;
     }
  
  }
  
  
  
  1.1      date: 2007/02/19 21:53:50;  author: nrichards;  state: Exp;jboss-seam/examples/spring/src/org/jboss/seam/example/spring/UserService.java
  
  Index: UserService.java
  ===================================================================
  /**
   *
   */
  package org.jboss.seam.example.spring;
  
  import java.util.List;
  
  import org.hibernate.Session;
  import org.jboss.seam.core.FacesMessages;
  
  /**
   * @author youngm
   *
   */
  public class UserService {
  	private Session session;
  
  	public boolean changePassword(String username, String oldPassword, String newPassword) {
  		if (newPassword == null || "".equals(newPassword)) {
  			throw new IllegalArgumentException("newPassword cannot be null.");
  		}
  		User user = findUser(username);
  		if (user.getPassword().equals(oldPassword)) {
  			user.setPassword(newPassword);
  			return true;
  		} else {
  			return false;
  		}
  	}
  
  	public User findUser(String username) {
  		if (username == null || "".equals(username)) {
  			throw new IllegalArgumentException("Username cannot be null");
  		}
  		return (User) session.get(User.class, username);
  	}
  
  	public User findUser(String username, String password) {
  		List<User> results = session.createQuery(
  				"select u from User u where u.username=:username and u.password=:password").setParameter("username",
  				username).setParameter("password", password).list();
  		if (results.size() == 0) {
  			return null;
  		} else {
  			return results.get(0);
  		}
  	}
  
  	public void createUser(User user) throws ValidationException {
  		if(user == null) {
  			throw new IllegalArgumentException("User cannot be null");
  		}
  		User existingUser = findUser(user.getUsername());
  		if(existingUser != null) {
  			throw new ValidationException("Username "+user.getUsername()+" already exists");
  		}
  		session.persist(user);
  	}
  
  	/**
  	 * @param session the session to set
  	 */
  	public void setSession(Session session) {
  		this.session = session;
  	}
  }
  
  
  
  1.1      date: 2007/02/19 21:53:50;  author: nrichards;  state: Exp;jboss-seam/examples/spring/src/org/jboss/seam/example/spring/ValidationException.java
  
  Index: ValidationException.java
  ===================================================================
  package org.jboss.seam.example.spring;
  
  /**
   * @author youngm
   *
   */
  public class ValidationException extends Exception {
  
  	public ValidationException(String message) {
  		super(message);
  	}
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list