/*
* This file or a portion of this file is licensed under the terms of
* the Globus Toolkit Public License, found in file GTPL, or at
* http://www.globus.org/toolkit/download/license.html. This notice must
* appear in redistributions of this file, with or without modification.
*
* Redistributions of this Software, with or without modification, must
* reproduce the GTPL in: (1) the Software, or (2) the Documentation or
* some other similar material which is provided with the Software (if
* any).
*
* Copyright 1999-2004 University of Chicago and The University of
* Southern California. All rights reserved.
*/
package org.griphyn.vdl.diagnozer;
import java.util.*;
import java.io.*;
/**
* Description of a job.
*/
class JobInfo
{
/**
* ID of the job.
*/
private String m_id;
/**
* Job has finished (successfully?)
*/
private boolean m_done;
/**
* Messages from error files
*/
private ArrayList m_errorFileMessage;
/**
* lists of prescript exit code, with retries
*/
private String m_prescriptExitCode;
/**
* lists of postscript exit code, with retries
*/
private String m_postscriptExitCode;
/**
* the pools they ran.
*/
private String m_pool;
/**
* Fatal error messages from the remote host
*/
private ArrayList m_fatalErrorMessages;
/**
* Error messages found in the JobID.out file
*/
private ArrayList m_outFileMessages;
/**
* The last stage it was performing before failur
*/
private String m_lastStage;
/**
* The Outfile Exitcodes
*/
private List m_outExitCodes;
private String m_retry;
/**
* c'tor
*/
public JobInfo()
{
m_id=null;
m_done=false;
m_outFileMessages=new ArrayList();
m_errorFileMessage=new ArrayList();
m_prescriptExitCode=null;
m_postscriptExitCode=null;
m_pool=null;
m_fatalErrorMessages=new ArrayList();
m_lastStage=null;
m_outExitCodes=new ArrayList();
m_retry=null;
}
public void setRetry(String
retry){
m_retry=retry;
}
public void addFatalErrorMessage(String message){
m_fatalErrorMessages.add(message);
}
public void setId(String id){
m_id=id;
}
public void setDone(boolean done){
m_done=done;
}
public void addErroFileMessage(String message){
m_errorFileMessage.add(message);
}
public void setOutfileExit(List exitcodes){
m_outExitCodes=exitcodes;
}
public void setPrescriptErrorCode(String exit){
m_prescriptExitCode=exit;
}
public void setPostcriptErrorCode(String exit){
m_postscriptExitCode=exit;
}
public void setPool(String pool){
m_pool=pool;
}
public void updateLastStage(String stage){
m_lastStage=null;
m_lastStage=stage;
}
public String getLastStage(){
return m_lastStage;
}
/**
* Dumps the contents of this record into the given writer.
*
* @param pw is a writable print writer.
*/
public void dump( PrintWriter pw )
throws IOException
{
pw.println("*retry: "+m_retry);
if(this.m_lastStage==null){
pw.println("The "+this.m_id+" wasn't submitted");
}
else{
pw.println(this.m_id+ " Last Know Stage "+ this.m_lastStage.toUpperCase());
}
if(m_prescriptExitCode!=null){
pw.println("Prescript Exit Codes: " + m_prescriptExitCode);
}
else{
pw.println("Prescript Exit Codes: N/A " );
}
if(m_postscriptExitCode!=null){
pw.println("Postscript Exit Codes: " + m_postscriptExitCode);
}
else{
pw.println("Postscript Exit Codes: N/A " );
}
if(this.m_outExitCodes.size()!=0){
pw.println("kickstart Exit Codes ");
for ( Iterator i=this.m_outExitCodes.iterator(); i.hasNext(); ) {
int exitcode=((Integer) i.next()).intValue();
switch(exitcode){
case 0:
pw.println("\t0 regular exit with exit code 0");
break;
case 1:
pw.println("\t1 regular exit with exit code > 0");
break;
case 2:
pw.println("\t2 failure to run program from kickstart");
break;
case 3:
pw.println("\t3 application had died on signal");
break;
case 4:
pw.println("\t4 application was suspended (should not happen)");
break;
case 5:
pw.println("\t5 failure in exit code parsing");
break;
case 6:
pw.println("\t6 impossible case");
}
}
pw.println("");
}
if (this.m_pool!=null ) {
pw.println("Ran At "+m_pool);
}
else{
pw.println("No available pool");
}
if ( this.m_fatalErrorMessages.size()>0 ) {
pw.println("Fatal Error Message: ");
for ( Iterator i=this.m_fatalErrorMessages.iterator(); i.hasNext(); ) {
pw.println( (String) i.next() );
}
pw.println();
}
if ( this.m_errorFileMessage.size()>0 ) {
pw.println("Errors File: ");
for ( Iterator i=this.m_errorFileMessage.iterator(); i.hasNext(); ) {
pw.println((String) i.next() );
}
}
pw.println();
if ( this.m_outFileMessages.size()>0 ) {
pw.println("Job ID :" + this.m_id + " out File: ");
for ( Iterator i=this.m_outFileMessages.iterator(); i.hasNext(); ) {
pw.println( (String) i.next() );
}
pw.println();
}
pw.println("---------------------------------------------------");
pw.flush();
}
}