/* * SessionBean1.java * * Created on Apr 9, 2008, 11:38:35 AM */ package hibernatetravelapp; import com.sun.rave.web.ui.appbase.AbstractSessionBean; import com.sun.webui.jsf.model.Option; import java.util.List; import java.util.Set; import javax.faces.FacesException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.collection.PersistentSet; import travel.HibernateUtil; import travel.Person; import travel.Trip; /** *

Session scope data bean for your application. Create properties * here to represent cached data that should be made available across * multiple HTTP requests for an individual user.

* *

An instance of this class will be created for you automatically, * the first time your application evaluates a value binding expression * or method binding expression that references a managed bean using * this class.

* */ public class SessionBean1 extends AbstractSessionBean { // /** *

Automatically managed component initialization. WARNING: * This method is automatically generated, so any user-specified code inserted * here is subject to being replaced.

*/ private void _init() throws Exception { } //
private Option[] personOptions; /** * Get the value of personOptions * * @return the value of personOptions */ public Option[] getPersonOptions() { return personOptions; } /** * Set the value of personOptions * * @param personOptions new value of personOptions */ public void setPersonOptions(Option[] personOptions) { this.personOptions = personOptions; } private Integer selectedPersonId; /** * Get the value of selectedPersonId * * @return the value of selectedPersonId */ public Integer getSelectedPersonId() { return selectedPersonId; } /** * Set the value of selectedPersonId * * @param selectedPersonId new value of selectedPersonId */ public void setSelectedPersonId(Integer selectedPersonId) { this.selectedPersonId = selectedPersonId; updateTrips4Person(); } private Trip[] trips4Person; /** * Get the value of trips4Person * * @return the value of trips4Person */ public Trip[] getTrips4Person() { return trips4Person; } /** * Set the value of trips4Person * * @param trips4Person new value of trips4Person */ public void setTrips4Person(Trip[] trips4Person) { this.trips4Person = trips4Person; } /** *

Construct a new session data bean instance.

*/ public SessionBean1() { } /** *

This method is called when this bean is initially added to * session scope. Typically, this occurs as a result of evaluating * a value binding or method binding expression, which utilizes the * managed bean facility to instantiate this bean and store it into * session scope.

* *

You may customize this method to initialize and cache data values * or resources that are required for the lifetime of a particular * user session.

*/ @Override public void init() { // Perform initializations inherited from our superclass super.init(); // Perform application initialization that must complete // *before* managed components are initialized // TODO - add your own initialiation code here // // Initialize automatically managed components // *Note* - this logic should NOT be modified try { _init(); } catch (Exception e) { log("SessionBean1 Initialization Failure", e); throw e instanceof FacesException ? (FacesException) e : new FacesException(e); } // // Perform application initialization that must complete // *after* managed components are initialized // TODO - add your own initialization code here buildPersonOptions(); } /** *

This method is called when the session containing it is about to be * passivated. Typically, this occurs in a distributed servlet container * when the session is about to be transferred to a different * container instance, after which the activate() method * will be called to indicate that the transfer is complete.

* *

You may customize this method to release references to session data * or resources that can not be serialized with the session itself.

*/ @Override public void passivate() { } /** *

This method is called when the session containing it was * reactivated.

* *

You may customize this method to reacquire references to session * data or resources that could not be serialized with the * session itself.

*/ @Override public void activate() { } /** *

This method is called when this bean is removed from * session scope. Typically, this occurs as a result of * the session timing out or being terminated by the application.

* *

You may customize this method to clean up resources allocated * during the execution of the init() method, or * at any later time during the lifetime of the application.

*/ @Override public void destroy() { } /** *

Return a reference to the scoped data bean.

* * @return reference to the scoped data bean */ protected ApplicationBean1 getApplicationBean1() { return (ApplicationBean1) getBean("ApplicationBean1"); } private void buildPersonOptions() { List personList = null; try { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction tx = session.beginTransaction(); Query q = session.createQuery("from Person"); personList = (List) q.list(); } catch (Exception e) { e.printStackTrace(); } personOptions = new Option[personList.size()]; int i = 0; for (Person person : personList) { Option opt = new Option(person.getPersonId(), person.getName()); personOptions[i++] = opt; } } private void updateTrips4Person() { if (selectedPersonId == null) { trips4Person = new Trip[1]; trips4Person[0] = new Trip(); return; } Set personTrips = null; try { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction tx = session.beginTransaction(); Person person = (Person) session.load(Person.class, selectedPersonId); personTrips = (PersistentSet) person.getTrips(); } catch (Exception e) { e.printStackTrace(); } trips4Person = (Trip[]) personTrips.toArray(new Trip[0]); } }