javaswingjtextareaibm-midrangejt400

Read AS400 Spooled File with All pages - JAVA (JT400)


I'm Trying to read AS400 Spooled file in JAVA. I read it using this code. but problem is it's retrieve only one page details of that Spooled file. But i want to read and get all pages details. Any one know how to do it ?

Thanks in Advance!

CODE :

try {
    jTextArea1.setText(null);
    DefaultTableModel DTM =(DefaultTableModel) jTable1.getModel();
    int SR = jTable1.getSelectedRow();

    String SPLFNAME =  (String) DTM.getValueAt(SR, 0);
    String SPLFNUMBERT =  (String) DTM.getValueAt(SR, 1);
    String JOBNAME =  (String) DTM.getValueAt(SR, 3);
    String JOBUSER =  (String) DTM.getValueAt(SR, 4);
    String JOBFNUMBER =  (String) DTM.getValueAt(SR, 5);

    int SPLNO = Integer.parseInt(SPLFNUMBERT);

    AS400 sys = new AS400();
    SpooledFile sf = new SpooledFile( sys,          // AS400
                                      SPLFNAME,     // splf name
                                      SPLNO,        // splf number
                                      JOBNAME,      // job name
                                      JOBUSER,      // job user
                                      JOBFNUMBER ); // job number

    PrintParameterList printParms = new PrintParameterList();
    printParms.setParameter(PrintObject.ATTR_WORKSTATION_CUST_OBJECT, "/QSYS.LIB/QWPDEFAULT.WSCST");
    printParms.setParameter(PrintObject.ATTR_MFGTYPE, "*WSCST");

    // Create a page input stream from the spooled file
    PrintObjectPageInputStream is = sf.getPageInputStream(printParms);

    BufferedReader d = new BufferedReader(new InputStreamReader(is));
    String data ="";
    while((data = d.readLine() )!=null)
    {
        System.out.println (data);

        jTextArea1.setText(jTextArea1.getText()+"\n"+data);
    }
} catch (Exception e) {
    System.out.println(e);
}

Solution

  • The PrintObjectPageInputStream class has a nextPage() method to move to the next page.

    BufferedReader d = new BufferedReader(new InputStreamReader(is));
    String data = "";
    do {
        while((data = d.readLine()) != null)
        {
            System.out.println (data);
            jTextArea1.setText(jTextArea1.getText()+"\n"+data);
        }
    } while (d.nextPage());
    

    Use PrintObjectTransformedInputStream to read an entire spooled file without paging.