1 2 3 4 5 6 7 8 9 10 11 12 13 14 

JBoss Seam

4.2.Code de la démo

@Stateful
@Name("hotelBooking")
@Interceptor(SeamInterceptor.class)
@Conversational(ifNotBegunOutcome = "main")
@LoggedIn
public class HotelBookingAction implements HotelBooking, Serializable {
private static final Logger log = Logger.getLogger(HotelBooking.class);

@PersistenceContext(type = EXTENDED)
private EntityManager em;

private String searchString;

@DataModel
private List<Hotel> hotels;
@DataModelSelectionIndex
private int hotelIndex;

@Out(required = false)
private Hotel hotel;

@In(required = false)
@Out(required = false)
@Valid
private Booking booking;

@In
private User user;

@In
private transient FacesContext facesContext;



// 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 void setSearchString(String searchString) {
this.searchString = searchString;
}


public String selectHotel() {
if (hotels == null) return "main";
setHotel();
return "selected";
}


public String nextHotel() {
if (hotelIndex < hotels.size() - 1) {
++hotelIndex;
setHotel();
}
return null;
}


public String lastHotel() {
if (hotelIndex > 0) {
--hotelIndex;
setHotel();
}
return null;
}


private void setHotel() {
hotel = hotels.get(hotelIndex);
log.info(hotelIndex + "=>" + hotel);
}


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);
return null;
} 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";
}


@Destroy
@Remove
public void destroy() {
log.info("destroyed");
}

}

1 2 3 4 5 6 7 8 9 10 11 12 13 14 

Retrouvez ci-dessous les autres sections du Laboratoire Sun
Evènements
Java Sun Net Talk LIVE CHAT le 2 Avril à 16h303/29/08
SolarisSunDécouvrez les nouveaux Sun Fire sous Intel10/11/07
JavaValtech Days10/9/07
JavaApacheCon du 1 au 4 mai à Amsterdam2/13/07

Exemples de code
JavaManipuler les looks and feel (lister et affecter)10/15/07
JavaFaire sa propre injection de dépendance avec les annotations5/9/06
JavaSplash screen avec progress Bar5/5/06
JavaFaire un splash screen en swing5/5/06

Actualités
SunProjet Kenai: une nouvelle forge open source10/3/08
SunSun Microsystems en forme !8/4/08
SunOpenDS un ldap 100% java7/24/08
SunSun et Fujitsu annoncent un nouveau Sparc647/16/08
SunVisualVM, un outil de surveillance des applications Java7/10/08

Tips du laboratoire
EclipseVisual Editor avec Eclipse Europa, c'est possible3/28/08
EclipseGérer les projets dans un workspace.10/16/07
JavaManager votre server d'application avec Eclipse4/21/07
JavaVue des sub-packages avec Eclipse4/21/07
JavaGlisser-déposer avec Eclipse4/21/07

Laboratoire SUPINFO des technologies Sun
labo-sun@supinfo.com


Conditions d'utilisation et © Copyright SUPINFO International University
23, rue de Château Landon - 75010 PARIS - Tél : +33 (0) 153359700 Fax : +33 (0) 153359701
Respect de la vie privée