/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package com.jboss.dvd.seam;
import java.io.Serializable;
import java.util.List;
import javax.ejb.Remove;
import javax.ejb.Stateful;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.End;
import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.annotations.bpm.ResumeProcess;
import org.jboss.seam.annotations.datamodel.DataModel;
import org.jboss.seam.annotations.datamodel.DataModelSelection;
import org.jbpm.graph.exe.ProcessInstance;
import com.jboss.dvd.seam.Order.Status;
@Stateful
@Name("showorders")
public class ShowOrdersAction
implements ShowOrders,
Serializable
{
private static final long serialVersionUID = -5377038496721657104L;
@In(value="currentUser",required=false)
Customer customer;
@PersistenceContext(type=PersistenceContextType.EXTENDED)
EntityManager em;
@DataModel
List<Order> orders;
@DataModelSelection
@Out(value="myorder", required=false, scope=ScopeType.CONVERSATION)
Order order;
@Begin @Factory("orders")
@SuppressWarnings("unchecked")
public String findOrders() {
orders = em.createQuery("select o from Order o where o.customer = :customer")
.setParameter("customer", customer)
.getResultList();
order = null;
return "showorders";
}
@In(required=false)
ProcessInstance processInstance;
@ResumeProcess(definition="OrderManagement", processKey="#{orders.rowData.orderId}")
public String cancelOrder() {
em.refresh(order);
if ( order.getStatus() != Status.OPEN ) {
return null;
}
order.setStatus(Status.CANCELLED);
processInstance.signal("cancel");
return findOrders();
}
public String detailOrder() {
em.refresh(order);
return "showorders";
}
@End
public String reset() {
return null;
}
@Remove
public void destroy() {}
}