/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.mobicents.seam.actions;
import java.io.Serializable;
import java.sql.Timestamp;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.servlet.sip.ServletTimer;
import org.jboss.mobicents.seam.model.Order;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.log.Log;
@Stateless
@Name("OrderManager")
public class OrderManagerBean implements OrderManager, Serializable {
@Logger private Log log;
@PersistenceContext EntityManager em;
public void cancelOrder(long orderId) {
Order order = (Order) em.createQuery(
"select o from Order o where o.orderId = :orderId")
.setParameter("orderId", orderId).getSingleResult();
order.setStatus(Order.Status.CANCELLED);
ServletTimer deliveryDateTimer = (ServletTimer) Contexts.getApplicationContext().get("deliveryDateTimer" + orderId);
ServletTimer adminTimer = (ServletTimer) Contexts.getApplicationContext().get("adminTimer" + orderId);
if(deliveryDateTimer!=null) {
deliveryDateTimer.cancel();
Contexts.getApplicationContext().remove("deliveryDateTimer" + orderId);
log.info("Delivery Timer for order "+ orderId +" cancelled");
} else {
log.info("No Delivery Timer to cancel");
}
if(adminTimer!=null) {
adminTimer.cancel();
Contexts.getApplicationContext().remove("adminTimer" + orderId);
log.info("Admin Timer for order "+ orderId +" cancelled");
} else {
log.info("No Admin Timer to cancel");
}
}
public void confirmOrder(long orderId) {
Order order = (Order) em.createQuery(
"select o from Order o where o.orderId = :orderId")
.setParameter("orderId", orderId).getSingleResult();
order.setStatus(Order.Status.PROCESSING);
Contexts.getApplicationContext().remove("deliveryDateTimer" + orderId);
Contexts.getApplicationContext().remove("adminTimer" + orderId);
}
public void setDeliveryDate(Object orderId, Timestamp deliveryDate) {
Order order = (Order) em.createQuery(
"select o from Order o where o.orderId = :orderId")
.setParameter("orderId", orderId).getSingleResult();
order.setDeliveryDate(deliveryDate);
}
}