private void extractField(String[] array, int line) {
        try {
            Integer obj = null;

            // get the job number
            int id = 0;
            if (JOB_NUM == IRRELEVANT) {
                id = jobs.size() + 1;
            }
            else {
                obj = new Integer( array[JOB_NUM].trim() );
                id = obj.intValue();
            }

            // get the submit time
            Long l = new Long( array[SUBMIT_TIME].trim() );
            long submitTime = l.intValue();

            // get the run time
            obj = new Integer( array[REQ_RUN_TIME].trim() );
            int runTime = obj.intValue();

            // if the required run time field is ignored, then use
            // the actual run time
            if (runTime == IRRELEVANT) {
                obj = new Integer( array[RUN_TIME].trim() );
                runTime = obj.intValue();
            }

            // according to the SWF manual, runtime of 0 is possible due
            // to rounding down. E.g. runtime is 0.4 seconds -> runtime = 0
            if (runTime == 0) {
                runTime = 1;    // change to 1 second
            }

            // get the number of allocated processors
            obj = new Integer( array[REQ_NUM_PROC].trim() );
            int numProc = obj.intValue();

            // if the required num of allocated processors field is ignored
            // or zero, then use the actual field
            if (numProc == IRRELEVANT || numProc == 0) {
                obj = new Integer( array[NUM_PROC].trim() );
                numProc = obj.intValue();
            }

            // finally, check if the num of PEs required is valid or not
            if (numProc <= 0) {
            	logger.info("Job #" + id + " at line " + line + " requires " + 
            			numProc + " CPU. Change to 1 CPU.");
                numProc = 1;
            }

            createGridlet(id, submitTime, runTime, numProc);
        }
        catch (Exception e) {
        	logger.log(Level.WARNING, "Exception reading file at line #" + line, e);
        }
    }