📄 ordermanagementbean.java
字号:
/*
* @author : Sujatha
* @Version : 1.0
*
* Development Environment : Oracle 9i JDeveloper
* Name of the File : OrderManagementBean.java
* Creation/Modification History :
*
* Sujatha 11-Dec-2002 Created
*
*/
package oracle.otnsamples.vsm.services;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import javax.ejb.FinderException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import oracle.otnsamples.util.ServiceLocator;
import oracle.otnsamples.vsm.Constants;
import oracle.otnsamples.vsm.entities.ItemDetailLocal;
import oracle.otnsamples.vsm.entities.ItemDetailLocalHome;
import oracle.otnsamples.vsm.entities.ItemDetailPK;
import oracle.otnsamples.vsm.entities.OrderItemLocal;
import oracle.otnsamples.vsm.entities.OrderItemLocalHome;
import oracle.otnsamples.vsm.entities.ProductOrderLocal;
import oracle.otnsamples.vsm.entities.ProductOrderLocalHome;
import oracle.otnsamples.vsm.services.data.Address;
import oracle.otnsamples.vsm.services.data.Order;
import oracle.otnsamples.vsm.services.data.OrderDetail;
/**
* This is the implementation of Order Management Service bean. The bean
* provides implementations for all the order management services defined in
* the remote interface. The bean interacts with various local entity beans to
* retrieve and store data to the persistent store.The entity beans referenced
* in this bean are described in ejb-jar.xml
*/
public class OrderManagementBean implements SessionBean {
/**
* Initializes the bean
*/
public void ejbCreate() {
}
/**
* Container call back, called just after instance of this bean is activated
*/
public void ejbActivate() {
}
/**
* Container call back, called just before instance of this bean is
* passivated
*/
public void ejbPassivate() {
}
/**
* Container call back, called by container before it ends the life of the
* session object.
*/
public void ejbRemove() {
}
/**
* Set the associated session context. The container calls this method after
* the instance creation.
*
* @param <b>ctx</b> - A SessionContext interface for the instance.
*/
public void setSessionContext(SessionContext ctx) {
}
/**
* This business method retrieves all orders placed by a mall user
*
* @param <b>userName</b> - userName of the user whose order information has
* to be queried
* @param <b>count</b> - number of latest orders to be queried
*
* @return <b>Order[]</b> - array of order value objects having latest order
* information
*
* @throws <b>OrderException</b> if the orders could not be fetched
* @throws <b>RemoteException</b> container error
*/
public Order[] getLatestOrdersForUser(String userName, int count)
throws OrderException {
// Check if the username has been specified
if(userName == null || "".equals(userName.trim())) {
throw new OrderException(
"Username not specified", "error.order.usernull");
}
/* If number of latest orders to be queried is not specified default the count
to one*/
if(count == 0) {
count = 1;
}
List ordersList = null;
try {
// Look up product order entity
ProductOrderLocalHome home = getOrderLocalHome();
Collection orderCollection =
home.findLatestOrdersForUser(userName, count);
ProductOrderLocal orderLocal = null;
Iterator ordersIter = orderCollection.iterator();
ordersList = new ArrayList(orderCollection.size());
List orderItems = null;
OrderItemLocal orderItemLocal = null;
// Create a list of order details and a list of order items for the user
while(ordersIter.hasNext()) {
orderLocal = (ProductOrderLocal) ordersIter.next();
orderItems = new ArrayList();
// Loop through the order items and add order items for this order to a list
for(
Iterator orderItemsIter = orderLocal.getOrderItems().iterator();
orderItemsIter.hasNext();) {
orderItemLocal = (OrderItemLocal) orderItemsIter.next();
orderItems.add(new OrderDetail(
orderLocal.getId(),
orderItemLocal.getItemID(),
orderItemLocal.getShopID(),
orderItemLocal.getQuantity().intValue(),
orderItemLocal.getUnitPrice()
.doubleValue(),
orderItemLocal.getStatus()));
}
// Add order information to a list
ordersList.add(new Order(
orderLocal.getId(), orderLocal.getOrderDate(),
orderLocal.getUserName(),
orderLocal.getShipToAddress(),
orderLocal.getCity(), orderLocal.getState(),
orderLocal.getCountry(), orderLocal.getZip(),
orderLocal.getPhone(), orderItems));
}
} catch(Exception ex) {
throw new OrderException(
"Unable to retrieve orders for user because " +
ex.getMessage(), "error.order.retrieval");
}
return (Order[]) ordersList.toArray(new Order[ ordersList.size() ]);
}
/**
* This business method retrieves orders for a given user
*
* @param <b>userName</b> - user for whom the orders have to be looked up
*
* @return <b>Order[]</b> - array of order value objects having order
* information
*
* @throws <b>OrderException</b> if the order information could not be
* retrieved
* @throws <b>RemoteException</b> container error
*/
public Order[] getOrdersForUser(String userName)
throws OrderException {
// Check if the username has been specified
if(userName == null || "".equals(userName.trim())) {
throw new OrderException(
"Username not specified", "error.order.usernull");
}
List ordersList = null;
try {
// Look up product order entity
ProductOrderLocalHome home = getOrderLocalHome();
// Query the orders for the specified user
Collection orderCollection = home.findOrdersForUser(userName);
Iterator ordersIter = orderCollection.iterator();
ordersList = new ArrayList(orderCollection.size());
ProductOrderLocal orderLocal = null;
OrderItemLocal orderItemLocal = null;
List orderItems = null;
// Create a list of order details and a list of order items for the user
while(ordersIter.hasNext()) {
orderLocal = (ProductOrderLocal) ordersIter.next();
orderItems = new ArrayList();
// Loop through the order items and add order items for this order to a list
for(
Iterator orderItemsIter = orderLocal.getOrderItems().iterator();
orderItemsIter.hasNext();) {
orderItemLocal = (OrderItemLocal) orderItemsIter.next();
// If the order is rejected, do not display it to user
if(!Constants.REJECTED.equals(orderItemLocal.getStatus())) {
orderItems.add(new OrderDetail(
orderLocal.getId(),
orderItemLocal.getItemID(),
orderItemLocal.getShopID(),
orderItemLocal.getQuantity()
.intValue(),
orderItemLocal.getUnitPrice()
.doubleValue(),
orderItemLocal.getStatus()));
}
}
// Add order information to a list
ordersList.add(new Order(
orderLocal.getId(), orderLocal.getOrderDate(),
orderLocal.getUserName(),
orderLocal.getShipToAddress(),
orderLocal.getCity(), orderLocal.getState(),
orderLocal.getCountry(), orderLocal.getZip(),
orderLocal.getPhone(), orderItems));
}
} catch(Exception ex) {
throw new OrderException(
"Unable to retrieve orders for user because " +
ex.getMessage(), "error.order.retrieval");
}
return (Order[]) ordersList.toArray(new Order[ ordersList.size() ]);
}
/**
* This business method retrieves all orders to be shipped by a shop
*
* @param <b>shopID</b> - ID of the shop for which pending orders have to be
* queried
*
* @return <b>Order[]</b> - array of order value objects having order
* information
*
* @throws <b>OrderException</b> if the orders could not be fetched
* @throws <b>RemoteException</b> container error
*/
public Order[] getPendingOrdersForShop(String shopID)
throws OrderException {
// Check if the shop has been specified
if(shopID == null || "".equals(shopID.trim())) {
throw new OrderException("Shop not specified", "error.order.shopnull");
}
List ordersList = null;
try {
/* Look up product order entity and query for pending orders on the
specified shop */
ProductOrderLocalHome home = getOrderLocalHome();
Collection orderCollection = home.findPendingOrdersForShop(shopID);
ProductOrderLocal orderLocal = null;
OrderItemLocal orderItemLocal = null;
Iterator ordersIter = orderCollection.iterator();
ordersList = new ArrayList(orderCollection.size());
List orderItems = null;
// Create a list of order details and a list of order items for the shop
while(ordersIter.hasNext()) {
orderLocal = (ProductOrderLocal) ordersIter.next();
orderItems = new ArrayList();
// Loop through the order items and add order items for this order to a list
for(
Iterator orderItemsIter = orderLocal.getOrderItems().iterator();
orderItemsIter.hasNext();) {
orderItemLocal = (OrderItemLocal) orderItemsIter.next();
// Add the order item if it belongs to the shop
if(orderItemLocal.getShopID().equals(shopID)) {
orderItems.add(new OrderDetail(
orderLocal.getId(),
orderItemLocal.getItemID(),
orderItemLocal.getShopID(),
orderItemLocal.getQuantity()
.intValue(),
orderItemLocal.getUnitPrice()
.doubleValue(),
orderItemLocal.getStatus()));
}
}
// Add order information to a list
ordersList.add(new Order(
orderLocal.getId(), orderLocal.getOrderDate(),
orderLocal.getUserName(),
orderLocal.getShipToAddress(),
orderLocal.getCity(), orderLocal.getState(),
orderLocal.getCountry(), orderLocal.getZip(),
orderLocal.getPhone(), orderItems));
}
} catch(Exception ex) {
throw new OrderException(
"Unable to retrieve pending orders for shop because " +
ex.getMessage(), "error.order.retrieval");
}
return (Order[]) ordersList.toArray(new Order[ ordersList.size() ]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -