use of com.ibm.as400.access.SpooledFileList in project IBMiProgTool by vzupka.
the class WrkSplF method selectSpooledFiles.
/**
* Select spooled files according to path string from the node selected from the right tree and to criteria given in
* parameters;
* The path string is a file of type .OUTQ or library QSYS.LIB; Information from the spooled files is written to array lists.
*
* @param namePar
* @param numberPar
* @param pagesPar
* @param jobPar
* @param userPar
* @param jobNumberPar
* @param datePar
* @param timePar
* @return
*/
protected SpooledFile selectSpooledFiles(String namePar, String numberPar, String pagesPar, String jobPar, String userPar, String jobNumberPar, String datePar, String timePar) {
this.namePar = namePar;
this.numberPar = numberPar;
this.pagesPar = pagesPar;
this.jobPar = jobPar;
this.userPar = userPar;
this.jobNumberPar = jobNumberPar;
this.datePar = datePar;
this.timePar = timePar;
nbrOfRows = 0;
// Check connection to PRINT service before creating a spooled file list.
// ======================================================================
pingObject = new AS400JPing(properties.getProperty("HOST"));
// pingObject.setTimeout(1000);
ping_PRINT = pingObject.ping(AS400.PRINT);
boolean isPingOk = ping_PRINT;
while (!isPingOk) {
row = "Error: Ping to server " + properties.getProperty("HOST") + " failed. Reconnecting PRINT service.";
mainWindow.msgVector.add(row);
mainWindow.showMessages(noNodes);
try {
ping_PRINT = pingObject.ping(AS400.PRINT);
isPingOk = ping_PRINT;
System.out.println("pingOk: " + isPingOk);
Thread.sleep(2000);
} catch (Exception exc) {
row = "Error: Ping: " + exc.toString();
System.out.println("Error: Ping: " + exc.toString());
mainWindow.msgVector.add(row);
mainWindow.showMessages(noNodes);
exc.printStackTrace();
}
}
try {
remoteServer.connectService(AS400.PRINT);
} catch (Exception exc) {
row = "Error: Getting connection to PRINT service: " + exc.toString();
mainWindow.msgVector.add(row);
mainWindow.showMessages(noNodes);
exc.printStackTrace();
}
// Create object representing spooled files
SpooledFileList splfList = new SpooledFileList(remoteServer);
try {
// Parameter for selection all users for the first time or a specific user if not empty
if (rightPathString.equals("/QSYS.LIB")) {
row = "Wait: Retrieving list of all spooled files . . .";
mainWindow.msgVector.add(row);
mainWindow.showMessages(noNodes);
mainWindow.scrollMessagePane.getVerticalScrollBar().removeAdjustmentListener(mainWindow.messageScrollPaneAdjustmentListenerMax);
splfList.setUserFilter("*ALL");
splfList.setQueueFilter("/QSYS.LIB/%ALL%.LIB/%ALL%.OUTQ");
// Remove message scroll listener (cancel scrolling to the last message)
mainWindow.scrollMessagePane.getVerticalScrollBar().removeAdjustmentListener(mainWindow.messageScrollPaneAdjustmentListenerMax);
} else if (currentUser) {
// Spooled files for current user will be selected
splfList.setUserFilter("*CURRENT");
} else {
// Spooled files will be selected only from the output queue /QSYS.LIB/xxx.LIB/yyy.OUTQ
// (right path string from the right file tree)
splfList.setUserFilter("*ALL");
splfList.setQueueFilter(rightPathString);
}
// Selection of spooled files is asynchronous
splfList.openAsynchronously();
// Wait for completion
splfList.waitForListToComplete();
// Get list of all spooled files
Enumeration<SpooledFile> spooledFiles = splfList.getObjects();
// Clear array lists containing characteristics of spooled files
// that will be placed in table columns
nameArrList = new ArrayList<>();
numberArrList = new ArrayList<>();
pagesArrList = new ArrayList<>();
jobArrList = new ArrayList<>();
userArrList = new ArrayList<>();
spoolUsers = new ArrayList<>();
jobNumberArrList = new ArrayList<>();
dateArrList = new ArrayList<>();
timeArrList = new ArrayList<>();
queueArrList = new ArrayList<>();
splfArrList = new ArrayList<>();
// Select spooled files according to selection parameters
while (spooledFiles.hasMoreElements()) {
// Get next spooled file
splf = (SpooledFile) spooledFiles.nextElement();
if (splf != null) {
String splfFileNumberChar = String.valueOf(splf.getNumber());
String splfFilePagesChar = String.valueOf(splf.getIntegerAttribute(SpooledFile.ATTR_PAGES));
// to the array lists for the table
if (splf.getName().contains(namePar) && splfFileNumberChar.contains(numberPar) && splfFilePagesChar.contains(pagesPar) && splf.getJobName().contains(jobPar) && splf.getJobUser().contains(userPar) && splf.getJobNumber().contains(jobNumberPar) && splf.getCreateDate().contains(datePar) && splf.getCreateTime().contains(timePar)) {
// System.out.println("namePar 2: " + namePar);
// System.out.println("splf.getName() 2: " + splf.getName());
// System.out.print("File name selectSpoolFiles2: " + splf.getName());
// System.out.print(" \tFile number: " + splfFileNumberChar);
// System.out.print(" \tJob name: " + splf.getJobName());
// System.out.print(" \tUser name: " + splf.getJobUser());
// System.out.print(" \tJob number: " + splf.getJobNumber());
// System.out.print(" \tDate: " + splf.getCreateDate());
// System.out.print(" \tTime: " + splf.getCreateTime());
// System.out.println();
nameArrList.add(splf.getName());
numberArrList.add(splfFileNumberChar);
pagesArrList.add(splfFilePagesChar);
jobArrList.add(splf.getJobName());
userArrList.add(splf.getJobUser());
spoolUsers.add(splf.getJobUser());
jobNumberArrList.add(splf.getJobNumber());
dateArrList.add(splf.getCreateDate());
timeArrList.add(splf.getCreateTime());
// Qualified name of output queue, e.g. QGPL/QPRINT
queueArrList.add(getQualifiedQueueNameFromIfsPath(splf.getStringAttribute(SpooledFile.ATTR_OUTPUT_QUEUE)));
splfArrList.add(splf);
nameArrListWork.add(splf.getName());
numberArrListWork.add(splfFileNumberChar);
pagesArrListWork.add(splfFilePagesChar);
jobArrListWork.add(splf.getJobName());
userArrListWork.add(splf.getJobUser());
jobNumberArrListWork.add(splf.getJobNumber());
dateArrListWork.add(splf.getCreateDate());
timeArrListWork.add(splf.getCreateTime());
// Qualified name of output queue, e.g. QGPL/QPRINT
queueArrListWork.add(getQualifiedQueueNameFromIfsPath(splf.getStringAttribute(SpooledFile.ATTR_OUTPUT_QUEUE)));
splfArrListWork.add(splf);
nbrOfRows++;
}
}
}
// Ensure uniqueness of user names in array list (over linked hash set)
Set<String> linkedHashSet = new LinkedHashSet<>();
linkedHashSet.addAll(spoolUsers);
spoolUsers.clear();
spoolUsers.addAll(linkedHashSet);
// Last spooled file selected
return splf;
} catch (Exception exc) {
System.out.println("Error: " + exc.toString());
exc.printStackTrace();
return null;
}
}
Aggregations