package ordering.ejb;
import javax.ejb.*;
import javax.jms.*;
import javax.naming.*;
import ordering.common.model.OrderingModelFactory;
import ordering.common.model.OrderingModel;
import java.net.URL;
import ordering.custom.Constants;
import ordering.common.vo.PurchaseOrderVO;
import ordering.common.vo.PurchaseOrderXML;
import java.util.Iterator;
import ordering.common.vo.POLineItemVO;
public class ReceivePOMDBBean implements
MessageDrivenBean, MessageListener {
MessageDrivenContext
messageDrivenContext;
Context
jndiContext;
PurchaseOrderXML poConverter;
OrderingModel service;
public
void ejbCreate() throws CreateException {
}
public
void ejbRemove() {
try
{
jndiContext.close ();
jndiContext = null;
} catch(NamingException ignored) { }
}
public
void onMessage(Message msg) {
TextMessage message = (TextMessage) msg;
try
{
String poXML = message.getText();
PurchaseOrderVO po = poConverter.XMLToPurchaseOrder(poXML);
int poID =
service.newId("PurchaseOrder");
System.out.println("Po
ID: "+poID);
po.setStatus(Constants.STATUS_PENDING);
po.setPoId(poID);
Iterator i = po.getLineItems().iterator();
while (i.hasNext()) {
POLineItemVO item = (POLineItemVO)i.next();
int itemID =
service.newId("POLineItem");
item.setId(itemID);
}
service.addPurchaseOrder(po);
}
catch (JMSException je)
{
throw new EJBException(je);
}
catch (Exception me)
{
throw new EJBException(me);
}
}
public
void setMessageDrivenContext(MessageDrivenContext messageDrivenContext) {
this.messageDrivenContext = messageDrivenContext;
poConverter = new PurchaseOrderXML();
URL
mapping = getClass().getClassLoader().getResource(Constants.MAPPINGPROPERTIESFILE);
System.out.println("Mapping URL: " + mapping);
try
{
jndiContext = new InitialContext();
service = OrderingModelFactory.create();
poConverter.setMapping(mapping);
}
catch (Exception e)
{
throw new EJBException(e);
}
}
}