/** Gets all of the various failed data and puts it into the HttpServletRequest object. */
  public static ActionErrors getFailedData(HttpServletRequest request) {
    ActionErrors errors = new ActionErrors();
    SystemAgent systemAgentEJB;
    try {
      // Get a reference to the admin facade
      APIAccess factory = new APIAccess();
      systemAgentEJB = factory.getSystemAgentAPI();
    } catch (Exception e) {
      e.printStackTrace();
      errors.add("SystemManagerLogic", new ActionError("error.genericError", e.getMessage()));
      // without ejb access we can't proceed any farther
      return errors;
    }

    try {

      request.setAttribute("freeMemory", new Long(Runtime.getRuntime().freeMemory()));
      request.setAttribute("totalMemory", new Long(Runtime.getRuntime().totalMemory()));

      OrderDataVector odv = systemAgentEJB.getFailedOrders();
      request.setAttribute("failedOrders", odv);

      odv = systemAgentEJB.getPendingOrders();
      request.setAttribute("pendingOrders", odv);

      InvoiceCustDataVector icdv = systemAgentEJB.getFailedCustomerInvoices();
      request.setAttribute("failedCustInvoice", icdv);

      InvoiceCustDataVector icdvcit = systemAgentEJB.getFailedCITCustomerInvoices();
      request.setAttribute("failedCITCustInvoice", icdvcit);

      InvoiceDistDataVector iddv = systemAgentEJB.getFailedDistributorInvoices();
      request.setAttribute("failedDistInvoice", iddv);

      OrderBatchLogDataVector obldv = systemAgentEJB.getFailedOrderBatchEntries();
      request.setAttribute("failedOrderBatchEntries", obldv);

      PurchaseOrderDataVector podv = systemAgentEJB.getFailedPurchaseOrders();
      request.setAttribute("failedPurchaseOrders", podv);

      RemittanceDataVector rdv = systemAgentEJB.getFailedRemittanceData();
      request.setAttribute("failedRemittanceData", rdv);

      RemittanceDetailDataVector rddv = systemAgentEJB.getFailedRemittanceDetailData();
      request.setAttribute("failedRemittanceDetailData", rddv);

      RemittancePropertyDataVector rpdv = systemAgentEJB.getUnparsableRemittanceData();
      request.setAttribute("unparsableRemittanceData", rpdv);
    } catch (Exception e) {
      e.printStackTrace();
      errors.add("SystemManagerLogic", new ActionError("error.genericError", e.getMessage()));
    }
    return errors;
  }
 /**
  * Tries to free up any availiable memory by preforming a garabage collection and runing
  * finalizations. Note this assumes that the EJB container is running on the same VM as the
  * servlet engine, which is not necessarily true, but in the current situation this is the case.
  */
 public static void freeMemory() {
   Runtime.getRuntime().gc();
   Runtime.getRuntime().runFinalization();
 }