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