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

Gavin King gavin.king at jboss.com
Mon Nov 20 00:19:01 EST 2006


  User: gavin   
  Date: 06/11/20 00:19:01

  Added:       examples/icefaces/src/org/jboss/seam/example/booking                   
                        Booking.java BookingList.java
                        BookingListAction.java ChangePassword.java
                        ChangePasswordAction.java Hotel.java
                        HotelBooking.java HotelBookingAction.java
                        HotelSearching.java HotelSearchingAction.java
                        LoggedIn.java LoggedInInterceptor.java Login.java
                        LoginAction.java Logout.java LogoutAction.java
                        Register.java RegisterAction.java User.java
  Log:
  add icefaces example to cvs, thanks to icesoft
  
  Revision  Changes    Path
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/Booking.java
  
  Index: Booking.java
  ===================================================================
  //$Id: Booking.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import java.io.Serializable;
  import java.text.DateFormat;
  import java.util.Date;
  
  import javax.persistence.Basic;
  import javax.persistence.Entity;
  import javax.persistence.GeneratedValue;
  import javax.persistence.Id;
  import javax.persistence.ManyToOne;
  import javax.persistence.Temporal;
  import javax.persistence.TemporalType;
  import javax.persistence.Transient;
  
  import org.hibernate.validator.Length;
  import org.hibernate.validator.NotNull;
  import org.hibernate.validator.Pattern;
  import org.jboss.seam.annotations.Name;
  
  @Entity
  @Name("booking")
  public class Booking implements Serializable
  {
     private Long id;
     private User user;
     private Hotel hotel;
     private Date checkinDate;
     private Date checkoutDate;
     private String creditCard;
     private String creditCardName;
     private int creditCardExpiryMonth;
     private int creditCardExpiryYear;
     private boolean smoking;
     private int beds;
     
     public Booking() {}
     
     public Booking(Hotel hotel, User user)
     {
        this.hotel = hotel;
        this.user = user;
     }
  
     @Id @GeneratedValue
     public Long getId()
     {
        return id;
     }
     public void setId(Long id)
     {
        this.id = id;
     }
     
     @NotNull
     @Basic @Temporal(TemporalType.DATE) 
     public Date getCheckinDate()
     {
        return checkinDate;
     }
     public void setCheckinDate(Date datetime)
     {
        this.checkinDate = datetime;
     }
  
     @ManyToOne @NotNull
     public Hotel getHotel()
     {
        return hotel;
     }
     public void setHotel(Hotel hotel)
     {
        this.hotel = hotel;
     }
     
     @ManyToOne @NotNull
     public User getUser()
     {
        return user;
     }
     public void setUser(User user)
     {
        this.user = user;
     }
     
     @Basic @Temporal(TemporalType.DATE) 
     @NotNull
     public Date getCheckoutDate()
     {
        return checkoutDate;
     }
     public void setCheckoutDate(Date checkoutDate)
     {
        this.checkoutDate = checkoutDate;
     }
     
     @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")
     public String getCreditCard()
     {
        return creditCard;
     }
  
     public void setCreditCard(String creditCard)
     {
        this.creditCard = creditCard;
     }
     
     @Transient
     public String getDescription()
     {
        DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
        return hotel.getName() + 
              ", " + df.format( getCheckinDate() ) + 
              " to " + df.format( getCheckoutDate() );
     }
  
     public boolean isSmoking()
     {
        return smoking;
     }
  
     public void setSmoking(boolean smoking)
     {
        this.smoking = smoking;
     }
     
     public int getBeds()
     {
        return beds;
     }
  
     public void setBeds(int beds)
     {
        this.beds = beds;
     }
     @NotNull(message="Credit card name is required")
     @Length(min=3, max=70, message="Credit card name is required")
     public String getCreditCardName()
     {
        return creditCardName;
     }
  
     public void setCreditCardName(String creditCardName)
     {
        this.creditCardName = creditCardName;
     }
  
     public int getCreditCardExpiryMonth()
     {
        return creditCardExpiryMonth;
     }
  
     public void setCreditCardExpiryMonth(int creditCardExpiryMonth)
     {
        this.creditCardExpiryMonth = creditCardExpiryMonth;
     }
  
     public int getCreditCardExpiryYear()
     {
        return creditCardExpiryYear;
     }
  
     public void setCreditCardExpiryYear(int creditCardExpiryYear)
     {
        this.creditCardExpiryYear = creditCardExpiryYear;
     }
     
     @Override
     public String toString()
     {
        return "Booking(" + user + ","+ hotel + ")";
     }
  
  }
  
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/BookingList.java
  
  Index: BookingList.java
  ===================================================================
  //$Id: BookingList.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import javax.ejb.Local;
  
  @Local
  public interface BookingList
  {
     public void getBookings();
     public String cancel();
     public void destroy();
  }
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/BookingListAction.java
  
  Index: BookingListAction.java
  ===================================================================
  //$Id: BookingListAction.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  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.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;
  
  @Stateful
  @Scope(SESSION)
  @Name("bookingList")
  @LoggedIn
  @TransactionAttribute(REQUIRES_NEW)
  public class BookingListAction implements BookingList, Serializable
  {
     
     @PersistenceContext
     private EntityManager em;
     
     @In
     private User user;
     
     @DataModel
     private List<Booking> bookings;
     @DataModelSelection 
     @Out(required=false)
     private Booking booking;
     
     @Logger 
     private Log log;
     
     @Factory
     @Observer("bookingConfirmed")
     public void getBookings()
     {
        bookings = em.createQuery("select b from Booking b where b.user.username = :username order by b.checkinDate")
              .setParameter("username", user.getUsername())
              .getResultList();
     }
     
     public String cancel()
     {
        log.info("Cancel booking: #0 for #{user.username}", booking.getId());
        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";
     }
     
     @Destroy @Remove
     public void destroy() {}
     
  }
  
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/ChangePassword.java
  
  Index: ChangePassword.java
  ===================================================================
  //$Id: ChangePassword.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import javax.ejb.Local;
  
  @Local
  public interface ChangePassword
  {
     public String changePassword();
     public String cancel();
     
     public String getVerify();
     public void setVerify(String verify);
     
     public void destroy();
  }
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/ChangePasswordAction.java
  
  Index: ChangePasswordAction.java
  ===================================================================
  //$Id: ChangePasswordAction.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import static org.jboss.seam.ScopeType.EVENT;
  
  import javax.ejb.Remove;
  import javax.ejb.Stateful;
  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.Out;
  import org.jboss.seam.annotations.Scope;
  import org.jboss.seam.core.FacesMessages;
  
  @Stateful
  @Scope(EVENT)
  @Name("changePassword")
  @LoggedIn
  public class ChangePasswordAction implements ChangePassword
  {
  
     @In @Out
     private User user;
     
     @PersistenceContext
     private EntityManager em;
     
     private String verify;
     
     public String changePassword()
     {
        if ( user.getPassword().equals(verify) )
        {
           user = em.merge(user);
           FacesMessages.instance().add("Password updated");
           return "main";
        }
        else 
        {
           FacesMessages.instance().add("verify", "Re-enter new password");
           revertUser();
           verify=null;
           return null;
        }
     }
     
     public String cancel()
     {
        revertUser();
        return "main";
     }
  
     private void revertUser()
     {
        user = em.find(User.class, user.getUsername());
     }
  
     public String getVerify()
     {
        return verify;
     }
  
     public void setVerify(String verify)
     {
        this.verify = verify;
     }
     
     @Destroy @Remove
     public void destroy() {}
  }
  
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/Hotel.java
  
  Index: Hotel.java
  ===================================================================
  //$Id: Hotel.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import java.io.Serializable;
  
  import javax.persistence.Entity;
  import javax.persistence.GeneratedValue;
  import javax.persistence.Id;
  
  import org.hibernate.validator.Length;
  import org.hibernate.validator.NotNull;
  import org.jboss.seam.annotations.Name;
  
  @Entity
  @Name("hotel")
  public class Hotel implements Serializable
  {
     private Long id;
     private String name;
     private String address;
     private String city;
     private String state;
     private String zip;
     private String country;
     
     @Id @GeneratedValue
     public Long getId()
     {
        return id;
     }
     public void setId(Long id)
     {
        this.id = id;
     }
     
     @Length(max=50) @NotNull
     public String getName()
     {
        return name;
     }
     public void setName(String name)
     {
        this.name = name;
     }
     
     @Length(max=100) @NotNull
     public String getAddress()
     {
        return address;
     }
     public void setAddress(String address)
     {
        this.address = address;
     }
     
     @Length(max=40) @NotNull
     public String getCity()
     {
        return city;
     }
     public void setCity(String city)
     {
        this.city = city;
     }
     
     @Length(min=4, max=6) @NotNull
     public String getZip()
     {
        return zip;
     }
     public void setZip(String zip)
     {
        this.zip = zip;
     }
     
     @Length(min=2, max=10) @NotNull
     public String getState()
     {
        return state;
     }
     public void setState(String state)
     {
        this.state = state;
     }
     
     @Length(min=2, max=40) @NotNull
     public String getCountry()
     {
        return country;
     }
     
     public void setCountry(String country)
     {
        this.country = country;
     }
  
     @Override
     public String toString()
     {
        return "Hotel(" + name + "," + address + "," + city + "," + zip + ")";
     }
  }
  
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/HotelBooking.java
  
  Index: HotelBooking.java
  ===================================================================
  //$Id: HotelBooking.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import javax.ejb.Local;
  
  @Local
  public interface HotelBooking
  {
     public String selectHotel(Hotel selectedHotel);
     
     public String bookHotel();
     
     public String setBookingDetails();
     
     public String confirm();
     public String cancel();
     
     public void destroy();
     
  }
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/HotelBookingAction.java
  
  Index: HotelBookingAction.java
  ===================================================================
  //$Id: HotelBookingAction.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import static javax.persistence.PersistenceContextType.EXTENDED;
  
  import java.util.Calendar;
  
  import javax.ejb.Remove;
  import javax.ejb.Stateful;
  import javax.persistence.EntityManager;
  import javax.persistence.PersistenceContext;
  
  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;
  
  @Stateful
  @Name("hotelBooking")
  @LoggedIn
  public class HotelBookingAction implements HotelBooking
  {
     
     @PersistenceContext(type=EXTENDED)
     private EntityManager em;
     
     @In 
     private User user;
     
     @In(required=false) @Out
     private Hotel hotel;
     
     @In(required=false) 
     @Out(required=false)
     private Booking booking;
       
     @In(create=true)
     private FacesMessages facesMessages;
        
     @In(create=true)
     private Events events;
     
     @Logger 
     private Log log;
     
     @Begin
     public String selectHotel(Hotel selectedHotel)
     {
        hotel = em.merge(selectedHotel);
        return "hotel";
     }
     
     public String 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()
     {
        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";
        }
     }
  
     @End
     public String 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";
     }
     
     @End
     public String cancel()
     {
         System.out.println("Cancelling hotel booking. ");
        return "main";
     }
     
     @Destroy @Remove
     public void destroy() {}
  
  }
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/HotelSearching.java
  
  Index: HotelSearching.java
  ===================================================================
  //$Id: HotelSearching.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import javax.ejb.Local;
  import javax.faces.event.ValueChangeEvent;
  
  @Local
  public interface HotelSearching
  {
     public int getPageSize();
     public void setPageSize(int pageSize);
     
     public String getSearchString();
     public void setSearchString(String searchString);
     public void handleSearchStringChange(ValueChangeEvent e);
     
     public String find();
     public String nextPage();
     public boolean isNextPageAvailable();
  
     public void destroy();
     
  }
  
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/HotelSearchingAction.java
  
  Index: HotelSearchingAction.java
  ===================================================================
  //$Id: HotelSearchingAction.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  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.annotations.Destroy;
  import org.jboss.seam.annotations.Name;
  import org.jboss.seam.annotations.Scope;
  import org.jboss.seam.annotations.datamodel.DataModel;
  
  import javax.faces.event.ValueChangeEvent;
  
  @Stateful
  @Name("hotelSearch")
  @Scope(ScopeType.SESSION)
  @LoggedIn
  public class HotelSearchingAction implements HotelSearching
  {
     
     @PersistenceContext
     private EntityManager em;
     
     private String searchString;
     private int pageSize = 10;
     private int page;
     
     @DataModel
     private List<Hotel> hotels;
     
     public String find()
     {
        page = 0;
        queryHotels();   
        return "main";
     }
  
     public String nextPage()
     {
        page++;
        queryHotels();
        return "main";
     }
        
     private void queryHotels()
     {
        String searchPattern = searchString==null ? "%" : '%' + searchString.toLowerCase().replace('*', '%') + '%';
        hotels = 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();
     }
     
     public boolean isNextPageAvailable()
     {
        return hotels!=null && hotels.size()==pageSize;
     }
     
     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;
     }
  
     public void handleSearchStringChange(ValueChangeEvent e)  {
        page = 0;
        searchString = String.valueOf(e.getNewValue());
        queryHotels();
     }
     
     @Destroy @Remove
     public void destroy() {}
  
  }
  
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/LoggedIn.java
  
  Index: LoggedIn.java
  ===================================================================
  //$Id: LoggedIn.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import static java.lang.annotation.ElementType.TYPE;
  import static java.lang.annotation.RetentionPolicy.RUNTIME;
  
  import java.lang.annotation.Documented;
  import java.lang.annotation.Retention;
  import java.lang.annotation.Target;
  
  import javax.interceptor.Interceptors;
  
  @Target(TYPE)
  @Retention(RUNTIME)
  @Documented
  @Interceptors(LoggedInInterceptor.class)
  public @interface LoggedIn {}
  
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/LoggedInInterceptor.java
  
  Index: LoggedInInterceptor.java
  ===================================================================
  //$Id: LoggedInInterceptor.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import java.lang.reflect.Method;
  
  import javax.interceptor.AroundInvoke;
  import javax.interceptor.InvocationContext;
  import javax.faces.event.PhaseId;
  
  import org.jboss.seam.annotations.Interceptor;
  import org.jboss.seam.contexts.Contexts;
  import org.jboss.seam.contexts.Lifecycle;
  import org.jboss.seam.interceptors.BijectionInterceptor;
  import org.jboss.seam.interceptors.BusinessProcessInterceptor;
  import org.jboss.seam.interceptors.ConversationInterceptor;
  import org.jboss.seam.interceptors.RemoveInterceptor;
  import org.jboss.seam.interceptors.ValidationInterceptor;
  
  @Interceptor(around={BijectionInterceptor.class, ValidationInterceptor.class, 
                       ConversationInterceptor.class, BusinessProcessInterceptor.class},
               within=RemoveInterceptor.class)
  public class LoggedInInterceptor
  {
  
     @AroundInvoke
     public Object checkLoggedIn(InvocationContext invocation) throws Exception
     {
        boolean isLoggedIn = Contexts.getSessionContext().get("loggedIn")!=null;
        if ( Lifecycle.getPhaseId()==PhaseId.INVOKE_APPLICATION )
        {
           if (isLoggedIn) 
           {
              return invocation.proceed();
           }
           else 
           {
              return "login";
           }
        }
        else
        {
           if ( isLoggedIn )
           {
              return invocation.proceed();
           }
           else
           {
              Method method = invocation.getMethod();
              if ( method.getReturnType().equals(void.class) )
              {
                 return null;
              }
              else
              {
                 return method.invoke( invocation.getTarget(), invocation.getParameters() );
              }
           }
        }
     }
  
  }
  
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/Login.java
  
  Index: Login.java
  ===================================================================
  //$Id: Login.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import javax.ejb.Local;
  
  @Local
  public interface Login
  {
     public String login();
  }
  
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/LoginAction.java
  
  Index: LoginAction.java
  ===================================================================
  //$Id: LoginAction.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import java.util.List;
  
  import javax.ejb.Stateless;
  import javax.persistence.EntityManager;
  import javax.persistence.PersistenceContext;
  
  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.core.FacesMessages;
  
  @Stateless
  @Name("login")
  public class LoginAction implements Login
  {
     
     @In @Out
     private User user;
     
     @PersistenceContext
     private EntityManager em;
  
     public String login()
     {
        List<User> results = em.createQuery("select u from User u where u.username=:username and u.password=:password")
              .setParameter("username", user.getUsername())
              .setParameter("password", user.getPassword())
              .getResultList();
        
        if ( results.size()==0 )
        {
           FacesMessages.instance().add("Invalid login");
           return "login";
        }
        else
        {
           user = results.get(0);
           Contexts.getSessionContext().set("loggedIn", true);
           FacesMessages.instance().add("Welcome, #{user.name}");
           return "main";
        }
        
     }
  
  }
  
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/Logout.java
  
  Index: Logout.java
  ===================================================================
  //$Id: Logout.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import javax.ejb.Local;
  
  @Local
  public interface Logout
  {
     public String logout();
  }
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/LogoutAction.java
  
  Index: LogoutAction.java
  ===================================================================
  //$Id: LogoutAction.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import javax.ejb.Stateless;
  
  import org.jboss.seam.Seam;
  import org.jboss.seam.annotations.Name;
  
  @Stateless
  @LoggedIn
  @Name("logout")
  public class LogoutAction implements Logout
  {
     public String logout()
     {
        Seam.invalidateSession();
        return "login";
     }
  }
  
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/Register.java
  
  Index: Register.java
  ===================================================================
  //$Id: Register.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import javax.ejb.Local;
  
  @Local
  public interface Register
  {
     public String register();
     public String getVerify();
     public void setVerify(String verify);
     
     public void destroy();
  }
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/RegisterAction.java
  
  Index: RegisterAction.java
  ===================================================================
  //$Id: RegisterAction.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  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;
  
  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;
  
  @Stateful
  @Scope(EVENT)
  @Name("register")
  public class RegisterAction implements Register
  {
  
     @In
     private User user;
     
     @PersistenceContext
     private EntityManager em;
     
     @In(create=true)
     private transient FacesMessages facesMessages;
     
     private String verify;
     
     public String register()
     {
        if ( user.getPassword().equals(verify) )
        {
           List existing = em.createQuery("select u.username from User u where u.username=:username")
              .setParameter("username", user.getUsername())
              .getResultList();
           if (existing.size()==0)
           {
              em.persist(user);
              facesMessages.add("Successfully registered as #{user.username}");
              return "login";
           }
           else
           {
              facesMessages.add("Username #{user.username} already exists");
              return null;
           }
        }
        else 
        {
           facesMessages.add("verify", "Re-enter your password");
           verify=null;
           return null;
        }
     }
  
     public String getVerify()
     {
        return verify;
     }
  
     public void setVerify(String verify)
     {
        this.verify = verify;
     }
     
     @Destroy @Remove
     public void destroy() {}
  }
  
  
  
  1.1      date: 2006/11/20 05:19:01;  author: gavin;  state: Exp;jboss-seam/examples/icefaces/src/org/jboss/seam/example/booking/User.java
  
  Index: User.java
  ===================================================================
  //$Id: User.java,v 1.1 2006/11/20 05:19:01 gavin Exp $
  package org.jboss.seam.example.booking;
  
  import static org.jboss.seam.ScopeType.SESSION;
  
  import java.io.Serializable;
  
  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
  @Name("user")
  @Scope(SESSION)
  @Table(name="Customer")
  public class User implements Serializable
  {
     private String username;
     private String password;
     private String name;
     
     public User(String name, String password, String username)
     {
        this.name = name;
        this.password = password;
        this.username = username;
     }
     
     public User() {}
  
     @NotNull
     @Length(max=100)
     public String getName()
     {
        return name;
     }
     public void setName(String name)
     {
        this.name = name;
     }
     
     @NotNull
     @Length(min=5, max=15)
     public String getPassword()
     {
        return password;
     }
     public void setPassword(String password)
     {
        this.password = password;
     }
     
     @Id
     @Length(min=5, max=15)
     @Pattern(regex="^\\w*$", message="not a valid username")
     public String getUsername()
     {
        return username;
     }
     public void setUsername(String username)
     {
        this.username = username;
     }
     
     @Override
     public String toString() 
     {
        return "User(" + username + ")";
     }
  }
  
  
  



More information about the jboss-cvs-commits mailing list