Package com.commander4j.messages

Source Code of com.commander4j.messages.OutgoingPalletStatusChange

package com.commander4j.messages;

import java.sql.ResultSet;
import java.sql.SQLException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;

import com.commander4j.db.JDBControl;
import com.commander4j.db.JDBInterface;
import com.commander4j.db.JDBInterfaceLog;
import com.commander4j.db.JDBInterfaceRequest;
import com.commander4j.db.JDBMHN;
import com.commander4j.db.JDBMHNReasons;
import com.commander4j.db.JDBPalletHistory;
import com.commander4j.email.JeMailOutGoingMessage;
import com.commander4j.sys.Common;
import com.commander4j.util.JFileIO;
import com.commander4j.util.JUtility;
import com.commander4j.xml.JXMLDocument;

public class OutgoingPalletStatusChange
{
  private String hostID;
  private String sessionID;
  final Logger logger = Logger.getLogger(OutgoingPalletStatusChange.class);
  private JeMailOutGoingMessage ogm;

  private String errorMessage;
  private JFileIO fio = new JFileIO();

  public OutgoingPalletStatusChange(String host, String session) {
    setHostID(host);
    setSessionID(session);
  }

  public Element addElement(Document doc, String name, String value)
  {
    Element temp = (Element) doc.createElement(name);
    Text temp_value = doc.createTextNode(value);
    temp.appendChild(temp_value);
    return temp;
  }

  public String getErrorMessage()
  {
    return errorMessage;
  }

  public String getHostID()
  {
    return hostID;
  }

  public String getSessionID()
  {
    return sessionID;
  }

  public Boolean processMessage(Long transactionRef)

  {
    Boolean result = false;
    String path = "";
    JDBInterfaceLog il = new JDBInterfaceLog(getHostID(), getSessionID());
    GenericMessageHeader gmh = new GenericMessageHeader();
    JDBInterface inter = new JDBInterface(getHostID(), getSessionID());

    inter.getInterfaceProperties("Pallet Status Change", "Output");
    String device = inter.getDevice();

    JDBPalletHistory palhistfrom = new JDBPalletHistory(getHostID(), getSessionID());
    JDBPalletHistory palhistto = new JDBPalletHistory(getHostID(), getSessionID());
    JDBControl ctrl = new JDBControl(getHostID(), getSessionID());
   
    String origin = ctrl.getKeyValue("DEFAULT_LOCATION");
    JDBMHN mhn = new JDBMHN(getHostID(), getSessionID());
    JDBMHNReasons mhnReasons = new JDBMHNReasons(getHostID(), getSessionID());

    ResultSet rsFrom = palhistfrom.getInterfacingData(transactionRef, "STATUS CHANGE", "FROM", Long.valueOf(1), "SSCC", "asc");

    ResultSet rsTo = palhistfrom.getInterfacingData(transactionRef, "STATUS CHANGE", "TO", Long.valueOf(1), "SSCC", "asc");

    try
    {
      if (rsFrom.next())
      {
        if (rsTo.next())
        {
          palhistfrom.getPropertiesfromResultSet(rsFrom);
          palhistto.getPropertiesfromResultSet(rsTo);

          String mhnNumber = palhistto.getPallet().getMHNNumber();
          String initiator = "";
          String recorder = "";
          String authorisor = "";
          String decision = "";
          String reason1 = "";
          String reason2 = "";
          String reason3 = "";
          String dateCreated = "";
          String dateExpected = "";
          String dateResolved = "";
          String comment = "";
          String status = "";
          String locn = "";
          if (palhistto.getPallet().getMHNNumber().equals("") == false)
          {
            if (mhn.getMHNProperties(palhistto.getPallet().getMHNNumber()))
            {
              initiator = mhn.getInitiator();
              recorder = mhn.getRecorder();
              authorisor = mhn.getAuthorisor();
              reason1 = mhn.getReason1();
              reason2 = mhn.getReason2();
              reason3 = mhn.getReason3();
              dateCreated = JUtility.getISOTimeStampStringFormat(mhn.getDateCreated());
              if (dateCreated.equals("Error"))
                dateCreated = "";
              dateExpected = JUtility.getISOTimeStampStringFormat(mhn.getDateExpected());
              if (dateExpected.equals("Error"))
                dateExpected = "";
              dateResolved = JUtility.getISOTimeStampStringFormat(mhn.getDateResolved());
              if (dateResolved.equals("Error"))
                dateResolved = "";
              comment = mhn.getComments();
              status = mhn.getStatus();
            }
          }

          try
          {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();

            Document document = builder.newDocument();

            Element message = (Element) document.createElement("message");

            Element hostUniqueID = addElement(document, "hostRef", Common.hostList.getHost(getHostID()).getUniqueID());
            message.appendChild(hostUniqueID);

            Element messageRef = addElement(document, "messageRef", String.valueOf(transactionRef));
            message.appendChild(messageRef);

            Element messageType = addElement(document, "interfaceType", "Pallet Status Change");
            message.appendChild(messageType);

            Element messageInformation = addElement(document, "messageInformation", "SSCC=" + palhistto.getPallet().getSSCC());
            message.appendChild(messageInformation);

            Element messageDirection = addElement(document, "interfaceDirection", "Output");
            message.appendChild(messageDirection);

            Element messageDate = addElement(document, "messageDate", JUtility.getISOTimeStampStringFormat(JUtility.getSQLDateTime()));
            message.appendChild(messageDate);

            Element palletStatusChange = (Element) document.createElement("palletStatusChange");

            Element sscc = addElement(document, "SSCC", palhistto.getPallet().getSSCC());
            palletStatusChange.appendChild(sscc);
           
            Element material = addElement(document, "material", palhistto.getPallet().getMaterial());
            palletStatusChange.appendChild(material);

            Element batch = addElement(document, "batch", palhistto.getPallet().getBatchNumber());
            palletStatusChange.appendChild(batch);

            Element source = addElement(document,"origin",origin);
            palletStatusChange.appendChild(source);
           
            locn = palhistfrom.getPallet().getLocationID();
            Element location = addElement(document, "location", palhistto.getPallet().getLocationID());
            palletStatusChange.appendChild(location);
           
            Element quantity = addElement(document, "quantity", palhistto.getPallet().getQuantity().toString());
            palletStatusChange.appendChild(quantity);
           
            Element uom = addElement(document, "uom", palhistto.getPallet().getUom().toString());
            palletStatusChange.appendChild(uom);           
           
            Element despNo = addElement(document, "despatchNumber", palhistto.getPallet().getDespatchNo());
            palletStatusChange.appendChild(despNo)

            Element statusFrom = addElement(document, "statusFrom", palhistfrom.getPallet().getStatus());
            palletStatusChange.appendChild(statusFrom);

            Element statusTo = addElement(document, "statusTo", palhistto.getPallet().getStatus());
            palletStatusChange.appendChild(statusTo);
           
            decision =  palhistto.getPallet().getDecision();

            Element masterHoldNoticeData = (Element) document.createElement("masterHoldNoticeData");

            Element mhnNo = addElement(document, "MHN", mhnNumber);
            masterHoldNoticeData.appendChild(mhnNo);

            Element mhnRecorder = addElement(document, "recorder", recorder);
            masterHoldNoticeData.appendChild(mhnRecorder);

            Element mhnInitiator = addElement(document, "initiator", initiator);
            masterHoldNoticeData.appendChild(mhnInitiator);

            Element mhnAuthorisor = addElement(document, "authorisor", authorisor);
            masterHoldNoticeData.appendChild(mhnAuthorisor);
           
            Element mhnDecision = addElement(document, "decision", decision);
            masterHoldNoticeData.appendChild(mhnDecision);

            Element masterHoldReasons = (Element) document.createElement("reasons");

            if (reason1.equals("") == false)
            {
              Element masterHoldReason = (Element) document.createElement("reason");
              Element mhnReason1 = addElement(document, "code", reason1);
              masterHoldReason.appendChild(mhnReason1);
             
              mhnReasons.getReasonProperties(reason1);
              String reason1desc = mhnReasons.getDescription();
              Element mhnReason1desc = addElement(document, "description", reason1desc);
              masterHoldReason.appendChild(mhnReason1desc);
              masterHoldReasons.appendChild(masterHoldReason);
            }

            if (reason2.equals("") == false)
            {
              Element masterHoldReason = (Element) document.createElement("reason");
              Element mhnReason2 = addElement(document, "code", reason2);
              masterHoldReason.appendChild(mhnReason2);
             
              mhnReasons.getReasonProperties(reason2);
              String reason2desc = mhnReasons.getDescription();
              Element mhnReason2desc = addElement(document, "description", reason2desc);
              masterHoldReason.appendChild(mhnReason2desc);
              masterHoldReasons.appendChild(masterHoldReason);
            }

            if (reason3.equals("") == false)
            {
              Element masterHoldReason = (Element) document.createElement("reason");
              Element mhnReason3 = addElement(document, "code", reason3);
              masterHoldReason.appendChild(mhnReason3);
             
              mhnReasons.getReasonProperties(reason3);
              String reason3desc = mhnReasons.getDescription();
              Element mhnReason3desc = addElement(document, "description", reason3desc);
              masterHoldReason.appendChild(mhnReason3desc);
              masterHoldReasons.appendChild(masterHoldReason);
            }

            masterHoldNoticeData.appendChild(masterHoldReasons);

            Element mhnCreated = addElement(document, "created", dateCreated);
            masterHoldNoticeData.appendChild(mhnCreated);

            Element mhnExpected = addElement(document, "expected", dateExpected);
            masterHoldNoticeData.appendChild(mhnExpected);

            Element mhnResolved = addElement(document, "resolved", dateResolved);
            masterHoldNoticeData.appendChild(mhnResolved);

            Element mhnComments = addElement(document, "comments", comment);
            masterHoldNoticeData.appendChild(mhnComments);

            Element mhnStatus = addElement(document, "status", status);
            masterHoldNoticeData.appendChild(mhnStatus);

            palletStatusChange.appendChild(masterHoldNoticeData);

            Element messageData = (Element) document.createElement("messageData");
            messageData.appendChild(palletStatusChange);

            message.appendChild(messageData);

            document.appendChild(message);

            JXMLDocument xmld = new JXMLDocument();
            xmld.setDocument(document);
            gmh.decodeHeader(xmld);

            if (device.equals("Disk") | device.equals("Email"))
            {

              path = inter.getRealPath();
              if (fio.writeToDisk(path, document, transactionRef, "_"+locn.replace(" ", "_")+"_PalletStatusChange.xml") == true)
              {
                result = true;
                il.write(gmh, GenericMessageHeader.msgStatusSuccess, "Processed OK", "File Write", fio.getFilename());
                setErrorMessage("");

                if (device.equals("Email"))
                {
                  ogm = new JeMailOutGoingMessage(inter, transactionRef, fio);
                  ogm.sendEmail();
                }
              }
              else
              {
                result = false;
                il.write(gmh, GenericMessageHeader.msgStatusError, fio.getErrorMessage(), "File Write", fio.getFilename());
                setErrorMessage(fio.getErrorMessage());
              }
            }

          }

          catch (Exception ex)
          {
            logger.error("Error sending message. " + ex.getMessage());
            ex.printStackTrace();

          }
        }
        else
        {
          logger.debug("Could not find TO Pallet History Interfacing Data for Transaction Ref  " + String.valueOf(transactionRef));
        }
        rsTo.close();
      }
      else
      {
        logger.debug("Could not find FROM Pallet History Interfacing Data for Transaction Ref  " + String.valueOf(transactionRef));
      }
      rsFrom.close();
    }
    catch (SQLException e)
    {
      logger.debug("Error finding Pallet History Interfacing Data for Transaction Ref  " + String.valueOf(transactionRef) + " " + e.getMessage());
    }

    return result;
  }

  private void setErrorMessage(String errorMessage)
  {
    this.errorMessage = errorMessage;
  }

  public void setHostID(String host)
  {
    hostID = host;
  }

  public void setSessionID(String session)
  {
    sessionID = session;
  }

  public void submit(long dbTransactionRef)
  {
    JDBInterface inter = new JDBInterface(getHostID(), getSessionID());
    inter.getInterfaceProperties("Pallet Status Change", "Output");
    if (inter.isEnabled() == true)
    {
      JDBInterfaceRequest ir = new JDBInterfaceRequest(getHostID(), getSessionID());
      ir.write(dbTransactionRef, "Pallet Status Change");
    }
    else
    {
      logger.debug("Interface Pallet Status Change - Output is DISABLED");
    }

  }

}
TOP

Related Classes of com.commander4j.messages.OutgoingPalletStatusChange

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.