import java.io.*;
import java.util.*;

/***************************************************************************

    <p><i>JSortJob</i>

    <p>This object holds all information related to a particular sort job.

    <p><i>Development Environment</i>

    <p>Compiled under JDK 1.2.0, Jini 1.0.0 <p>

 ***************************************************************************/

    public class JSortJob
      {
      String sJobName;                 /* Name of job (key in JSort).      */
      long num_items;                  /* Number of records to be sorted.  */
      int items_pr_page;               /* Number of records per page.      */
      int num_rpages;                  /* Number of real pages in memory.  */
      int sect_pr_page;                /* Sectors per page.                */
      int num_vpages;                  /* Num of full virtual pages from 0 */
                                       /*   num_items / items_pr_page.     */
      int num_leftovr_items;           /* Num of items in the last partial */
                                       /*   page: num_items % items_pr_page*/
      byte rpage_ptr[][];              /* Addresses of page buffers in mem */
      int vpage_num[];                 /* Virt page nums currently in mem. */
      boolean rpage_modified[];        /* Has specific page been modified? */
      long curr_item;                  /* Num of next item to be returned. */
      RandomAccessFile sortwkfile;     /* File used for external sorting.  */
      String sortwkfilename = "sortwork"; /* Name of sort work file.       */
      String debugfilename  = "debug"; /* Name of the debug file.          */
      boolean filecreated;             /* Has an external file been created*/
      int error;                       /* Stores the error code to return. */
      int itemlgth;                    /* Length of the record to sort.    */
      int[] aiFieldStart;              /* Sort field begin positn (0 based)*/
      int[] aiFieldLength;             /* Length of each field.            */
      int[] aiFieldOrder;              /* ASCENDING or DESCENDING.         */
      byte[] swoppost;                 /* A save area durg a sort exchange.*/
      byte[] savez;                    /* Save 1 of the 3 vars in quiksort.*/
      int curr_rpage;                  /* The current real page.           */
      long msTimeOpened;               /* Date/Time (ms) when job opened   */
      int iDebug = 0;                  /* Debug level, 0=off               */
      RandomAccessFile rafDebug;       /* Debug file (if level > 0)        */


/*=========================================================================
              The following methods are in alphabetical order
  =========================================================================*/



/*    T O   S T R I N G
 */
/**
 */
public String toString ()
      {
      int i, j;
      String s;

      s = "name=" + sJobName + "\n"
        + "error=" + error + "\n"
        + "num_items=" + num_items + "\n"
        + "items_pr_page=" + items_pr_page + "\n"
        + "num_rpages=" + num_rpages + "\n"
        + "sect_pr_page=" + sect_pr_page + "\n"
        + "num_vpages=" + num_vpages + "\n"
        + "num_leftovr_items=" + num_leftovr_items + "\n"
        + "itemlgth=" + itemlgth + "\n"
        + "filecreated=" + filecreated + "\n"
        + "curr_rpage=" + curr_rpage + "\n"
        + "msTimeOpened=" + msTimeOpened + "\n";

      if (vpage_num == null)
        {
        return (s);
        }
      for (i = 0; i < vpage_num.length; i++)
        {
        s += "rpage[" + i + "] has vpage " + vpage_num[i];
        if (iDebug > 99)
          {
          s += "-->";
          for (j = 0; j < rpage_ptr[i].length; j++)
            {
            s += (char) rpage_ptr[i][j];
            }
          s += "<--\n";
          }
        else
          {
          s += "\n";
          }
        }
      return (s);
      }

      }


/*==========================(  End of Source  )============================*/
