Package com.commander4j.thread

Source Code of com.commander4j.thread.OutboundMessageThread

package com.commander4j.thread;

import java.util.LinkedList;

import javax.mail.MessagingException;

import org.apache.commons.beanutils.converters.ArrayConverter;
import org.apache.commons.beanutils.converters.StringConverter;
import org.apache.log4j.Logger;

import com.commander4j.db.JDBInterface;
import com.commander4j.db.JDBInterfaceRequest;
import com.commander4j.db.JDBUser;
import com.commander4j.email.JeMail;
import com.commander4j.messages.GenericMessageHeader;
import com.commander4j.messages.OutgoingDespatchConfirmation;
import com.commander4j.messages.OutgoingDespatchPreAdvice;
import com.commander4j.messages.OutgoingEquipmentTracking;
import com.commander4j.messages.OutgoingLabelData;
import com.commander4j.messages.OutgoingPalletDelete;
import com.commander4j.messages.OutgoingPalletSplit;
import com.commander4j.messages.OutgoingPalletStatusChange;
import com.commander4j.messages.OutgoingProductionDeclarationConfirmation;
import com.commander4j.sys.Common;
import com.commander4j.util.JFileIO;
import com.commander4j.util.JUnique;
import com.commander4j.util.JUtility;
import com.commander4j.util.JWait;

public class OutboundMessageThread extends Thread
{

  public boolean allDone = false;
  private String sessionID;
  private String hostID;
  private String errorMessage = "";
  private Boolean messageProcessedOK = false;
  private JFileIO mover = new JFileIO();
  private String destinationFile = "";
  private String renamedDestinationFile = "";
  private final Logger logger = Logger.getLogger(OutboundMessageThread.class);

  public String getHostID() {
    return hostID;
  }

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

  public OutboundMessageThread(String host)
  {
    super();
    setHostID(host);
  }

  public String getSessionID() {
    return sessionID;
  }

  public void setSessionID(String sessionID) {
    this.sessionID = sessionID;
  }

  public void run() {
    logger.debug("OutboundMessageThread running");
    setSessionID(JUnique.getUniqueID());
    JDBUser user = new JDBUser(getHostID(), getSessionID());
    user.setUserId("INTERFACE");
    user.setPassword("INTERFACE");
    Common.userList.addUser(getSessionID(), user);
    Common.sd.setData(getSessionID(), "silentExceptions", "Yes", true);

    Boolean dbconnected = false;

    if (Common.hostList.getHost(hostID).isConnected(sessionID) == false)
    {

      dbconnected = Common.hostList.getHost(hostID).connect(sessionID, hostID);

    }
    else
    {
      dbconnected = true;
    }

    if (dbconnected)
    {

      JeMail mail = new JeMail(getHostID(), getSessionID());
      JDBInterfaceRequest ir = new JDBInterfaceRequest(getHostID(), getSessionID());
      JDBInterface inter = new JDBInterface(getHostID(), getSessionID());
      OutgoingProductionDeclarationConfirmation opdc = new OutgoingProductionDeclarationConfirmation(getHostID(), getSessionID());
      OutgoingDespatchConfirmation odc = new OutgoingDespatchConfirmation(getHostID(), getSessionID());
      OutgoingDespatchPreAdvice opa = new OutgoingDespatchPreAdvice(getHostID(), getSessionID());
      OutgoingEquipmentTracking oet = new OutgoingEquipmentTracking(getHostID(), getSessionID());
      OutgoingPalletStatusChange psc = new OutgoingPalletStatusChange(getHostID(), getSessionID());
      OutgoingPalletSplit ops = new OutgoingPalletSplit(getHostID(), getSessionID());
      OutgoingPalletDelete opd = new OutgoingPalletDelete(getHostID(), getSessionID());
      OutgoingLabelData old = new OutgoingLabelData(getHostID(), getSessionID());
      LinkedList<Long> irqList = new LinkedList<Long>();
      int noOfMessages = 0;

      while (true)
      {

        JWait.milliSec(500);

        if (allDone)
        {
          if (dbconnected)
          {
            Common.hostList.getHost(hostID).disconnect(getSessionID());
          }
          return;
        }

        irqList.clear();
        irqList = ir.getInterfaceRequestIDs();
        noOfMessages = irqList.size();

        if (noOfMessages > 0)
        {
          for (int x = 0; x < noOfMessages; x++)
          {
            JWait.milliSec(100);
            ir.setInterfaceRequestID(irqList.get(x));
            ir.getInterfaceRequestProperties();

            if (ir.getMode().equals("Inbound File Re-Submit"))
            {
              if (inter.getInterfaceProperties(ir.getInterfaceType(), "Input") == true)
              {
                String sourceFile = Common.base_dir + java.io.File.separator + "xml" + java.io.File.separator + "interface" + java.io.File.separator + "error" + java.io.File.separator + ir.getInterfaceType() + java.io.File.separator
                    + ir.getFilename();

                destinationFile = inter.getRealPath() + java.io.File.separator + ir.getFilename();
                renamedDestinationFile = inter.getRealPath() + java.io.File.separator + ir.getFilename().replaceAll(".xml", ".lmx");

                mover.move_File(sourceFile, renamedDestinationFile);
                mover.move_File(renamedDestinationFile, destinationFile);
                ir.delete();

              }
            }

            if (ir.getMode().equals("Normal"))
            {

              errorMessage = "Unknown Outbound Interface Type :" + ir.getInterfaceType();
              messageProcessedOK = false;

              if (ir.getInterfaceType().equals("Production Declaration"))
              {
                messageProcessedOK = opdc.processMessage(ir.getTransactionRef());
                errorMessage = opdc.getErrorMessage();
                GenericMessageHeader.updateStats("Output","Production Declaration", messageProcessedOK.toString());
              }

              if (ir.getInterfaceType().equals("Pallet Status Change"))
              {
                messageProcessedOK = psc.processMessage(ir.getTransactionRef());
                errorMessage = psc.getErrorMessage();
                GenericMessageHeader.updateStats("Output","Pallet Status Change", messageProcessedOK.toString());
              }             

              if (ir.getInterfaceType().equals("Pallet Split"))
              {
                messageProcessedOK = ops.processMessage(ir.getTransactionRef());
                errorMessage = ops.getErrorMessage();
                GenericMessageHeader.updateStats("Output","Pallet Split", messageProcessedOK.toString());
             
             
              if (ir.getInterfaceType().equals("Pallet Delete"))
              {
                messageProcessedOK = opd.processMessage(ir.getTransactionRef());
                errorMessage = opd.getErrorMessage();
                GenericMessageHeader.updateStats("Output","Pallet Delete", messageProcessedOK.toString());
             
             
              if (ir.getInterfaceType().equals("Despatch Confirmation"))
              {
                messageProcessedOK = odc.processMessage(ir.getTransactionRef());
                errorMessage = odc.getErrorMessage();
                GenericMessageHeader.updateStats("Output","Despatch Confirmation", messageProcessedOK.toString());
              }

              if (ir.getInterfaceType().equals("Despatch Pre Advice"))
              {
                messageProcessedOK = opa.processMessage(ir.getTransactionRef());
                errorMessage = opa.getErrorMessage();
                GenericMessageHeader.updateStats("Output","Despatch Pre Advice", messageProcessedOK.toString());
              }

              if (ir.getInterfaceType().equals("Equipment Tracking"))
              {
                messageProcessedOK = oet.processMessage(ir.getTransactionRef());
                errorMessage = oet.getErrorMessage();
                GenericMessageHeader.updateStats("Output","Equipment Tracking", messageProcessedOK.toString());
              }
             
              if (ir.getInterfaceType().equals("Label Data"))
              {
                messageProcessedOK = old.processMessage(ir.getUniqueID());
                errorMessage = oet.getErrorMessage();
                GenericMessageHeader.updateStats("Output","Label Data", messageProcessedOK.toString());
              }

              if (messageProcessedOK == true)
              {
                ir.delete();
              }
              else
              {
                ir.update(irqList.get(x), "Error");
                if (inter.getInterfaceProperties(ir.getInterfaceType(), "Output") == true)
                {
                  if (inter.getEmailError() == true)
                  {
                    String emailaddresses = inter.getEmailAddresses();

                    StringConverter stringConverter = new StringConverter();
                    ArrayConverter arrayConverter = new ArrayConverter(String[].class, stringConverter);
                    arrayConverter.setDelimiter(';');
                    arrayConverter.setAllowedChars(new char[] { '@' });

                    String[] emailList = (String[]) arrayConverter.convert(String[].class, emailaddresses);

                    if (emailList.length > 0)
                    {
                      try
                      {
                        String siteName = Common.hostList.getHost(getHostID()).getSiteDescription();
                        mail.postMail(emailList, "Error Processing Outgoing " + ir.getInterfaceType()+" for ["+siteName+"] on "+JUtility.getClientName(), errorMessage, "", "");
                      }
                      catch (MessagingException e)
                      {

                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
TOP

Related Classes of com.commander4j.thread.OutboundMessageThread

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.