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);

        }

    }

}