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

Michael Yuan michael.yuan at jboss.com
Wed Nov 8 04:38:59 EST 2006


  User: myuan   
  Date: 06/11/08 04:38:59

  Added:       examples/jpa/src/org/jboss/seam/example/jpa          
                        Booking.java BookingListAction.java
                        ChangePasswordAction.java Hotel.java
                        HotelBookingAction.java HotelSearchingAction.java
                        LoginAction.java LogoutAction.java
                        RegisterAction.java User.java
  Log:
  add jpa
  
  Revision  Changes    Path
  1.1      date: 2006/11/08 09:38:59;  author: myuan;  state: Exp;jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/Booking.java
  
  Index: Booking.java
  ===================================================================
  //$Id: Booking.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  package org.jboss.seam.example.jpa;
  
  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/08 09:38:59;  author: myuan;  state: Exp;jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/BookingListAction.java
  
  Index: BookingListAction.java
  ===================================================================
  //$Id: BookingListAction.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  package org.jboss.seam.example.jpa;
  
  import static org.jboss.seam.ScopeType.SESSION;
  
  import java.io.Serializable;
  import java.util.List;
  
  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;
  
  @Scope(SESSION)
  @Name("bookingList")
  // @LoggedIn
  public class BookingListAction implements Serializable
  {
     
     @In (create=true)
     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";
     }
     
     
  }
  
  
  
  1.1      date: 2006/11/08 09:38:59;  author: myuan;  state: Exp;jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/ChangePasswordAction.java
  
  Index: ChangePasswordAction.java
  ===================================================================
  //$Id: ChangePasswordAction.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  package org.jboss.seam.example.jpa;
  
  import static org.jboss.seam.ScopeType.EVENT;
  
  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;
  
  @Scope(EVENT)
  @Name("changePassword")
  // @LoggedIn
  public class ChangePasswordAction {
  
     @In @Out
     private User user;
     
     @In (create=true)
     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;
     }
     
  }
  
  
  
  1.1      date: 2006/11/08 09:38:59;  author: myuan;  state: Exp;jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/Hotel.java
  
  Index: Hotel.java
  ===================================================================
  //$Id: Hotel.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  package org.jboss.seam.example.jpa;
  
  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/08 09:38:59;  author: myuan;  state: Exp;jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/HotelBookingAction.java
  
  Index: HotelBookingAction.java
  ===================================================================
  //$Id: HotelBookingAction.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  package org.jboss.seam.example.jpa;
  
  import static javax.persistence.PersistenceContextType.EXTENDED;
  
  import java.util.Calendar;
  import java.util.Date;
  
  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;
  
  @Name("hotelBooking")
  // @LoggedIn
  public class HotelBookingAction {
     
     @In (create=true)
     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()
     {
        return "main";
     }
  
  }
  
  
  1.1      date: 2006/11/08 09:38:59;  author: myuan;  state: Exp;jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/HotelSearchingAction.java
  
  Index: HotelSearchingAction.java
  ===================================================================
  //$Id: HotelSearchingAction.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  package org.jboss.seam.example.jpa;
  
  import java.util.List;
  
  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;
  
  @Name("hotelSearch")
  @Scope(ScopeType.SESSION)
  // @LoggedIn
  public class HotelSearchingAction {
     
     @In (create=true)
     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;
     }
  
  }
  
  
  1.1      date: 2006/11/08 09:38:59;  author: myuan;  state: Exp;jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/LoginAction.java
  
  Index: LoginAction.java
  ===================================================================
  //$Id: LoginAction.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  package org.jboss.seam.example.jpa;
  
  import java.util.List;
  
  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;
  
  @Name("login")
  public class LoginAction {
     
     @In @Out
     private User user;
     
     @In (create=true)
     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/08 09:38:59;  author: myuan;  state: Exp;jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/LogoutAction.java
  
  Index: LogoutAction.java
  ===================================================================
  //$Id: LogoutAction.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  package org.jboss.seam.example.jpa;
  
  import org.jboss.seam.Seam;
  import org.jboss.seam.annotations.Name;
  
  // @LoggedIn
  @Name("logout")
  public class LogoutAction {
     public String logout()
     {
        Seam.invalidateSession();
        return "login";
     }
  }
  
  
  
  1.1      date: 2006/11/08 09:38:59;  author: myuan;  state: Exp;jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/RegisterAction.java
  
  Index: RegisterAction.java
  ===================================================================
  //$Id: RegisterAction.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  package org.jboss.seam.example.jpa;
  
  import static org.jboss.seam.ScopeType.EVENT;
  
  import java.util.List;
  
  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;
  
  @Scope(EVENT)
  @Name("register")
  public class RegisterAction {
  
     @In
     private User user;
     
     @In (create=true)
     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;
     }
  }
  
  
  
  1.1      date: 2006/11/08 09:38:59;  author: myuan;  state: Exp;jboss-seam/examples/jpa/src/org/jboss/seam/example/jpa/User.java
  
  Index: User.java
  ===================================================================
  //$Id: User.java,v 1.1 2006/11/08 09:38:59 myuan Exp $
  package org.jboss.seam.example.jpa;
  
  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