Le framework applicatif JBoss Seam intègre facilite l’écriture d’applications contenant des workflows complexes, des flux de pages d’applications Web et des interactions utilisateurs.
//
Specify that this method starts a long running conversation
@Begin
public
String find() {
hotel
= null;
String
searchPattern = searchString == null
? "%" : '%'
+ searchString.toLowerCase().replace('*',
'%') + '%';
hotels
= em.createQuery("from Hotel where
lower(name) like :search or lower(city) like :search or lower(zip)
like :search or lower(address) like :search")
.setParameter("search",
searchPattern)
.setMaxResults(50)
.getResultList();
log.info(hotels.size()
+ " hotels found");
return"main";
}
public
String getSearchString() {
return
searchString;
}
public
String bookHotel() {
if
(hotel == null) return"main";
booking
= new Booking(hotel, user);
booking.setCheckinDate(new
Date());
booking.setCheckoutDate(new
Date());
return"book";
}
@IfInvalid(outcome
= REDISPLAY)
public
String setBookingDetails() {
if
(booking == null || hotel ==
null) return"main";
if
(!booking.getCheckinDate().before(booking.getCheckoutDate())) {
log.info("invalid
booking dates");
FacesMessage
facesMessage = new
FacesMessage("Check out date must be
later than check in date");
facesContext.addMessage(null,
facesMessage);
returnnull;
}
else {
log.info("valid
booking");
return"success";
}
}
@End
public
String confirm() {
if
(booking == null || hotel ==
null) return"main";
em.persist(booking);
log.info("booking
confirmed");
return"confirmed";
}