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