@Override @Transactional public void writeItems(List<Object> items) throws Exception { try (PrintWriter archive = new PrintWriter( new BufferedWriter( new FileWriter( new File( jobContext.getProperties().getProperty(ARCHIVE_DIRECTORY) + "/archive_" + jobContext.getJobName() + "_" + jobContext.getInstanceId() + ".csv"), true)))) { for (Object item : items) { HandlingEventRegistrationAttempt attempt = (HandlingEventRegistrationAttempt) item; applicationEvents.receivedHandlingEventRegistrationAttempt(attempt); archive.println( attempt.getRegistrationTime() + "," + attempt.getCompletionTime() + "," + attempt.getTrackingId() + "," + attempt.getVoyageNumber() + "," + attempt.getUnLocode() + "," + attempt.getType()); } } }
@Override public String process() throws Exception { Properties properties = JobCtx.getProperties(); String foo = properties.getProperty("foo"); JobCtx.setExitStatus(foo); return GOOD_EXIT_STATUS; }
private void appendToJobContext(String exitStatus) { String es = jobCtx.getExitStatus(); if (es == null) { logger.fine("First addition to Job ExitStatus = " + es); jobCtx.setExitStatus(exitStatus); } else { String newExitStatus = es.concat(",").concat(exitStatus); logger.fine("Existing Job ExitStatus = " + es + " ; Updating to : " + newExitStatus); jobCtx.setExitStatus(newExitStatus); } }
@Override public void open(Serializable checkpoint) throws Exception { File archiveDirectory = new File(jobContext.getProperties().getProperty(ARCHIVE_DIRECTORY)); if (!archiveDirectory.exists()) { archiveDirectory.mkdirs(); } }
public void open(Serializable e) throws Exception { Properties jobParameters = BatchRuntime.getJobOperator().getParameters(jobContext.getExecutionId()); ConcurrentSkipListMap<Integer, PayrollInputRecord> records = dataBean.getPayrollInputRecords((String) jobParameters.get("monthYear")); Integer fromKey = (Integer) jobParameters.get("startEmpID"); Integer toKey = (Integer) jobParameters.get("endEmpID"); payrollInputRecords = records.subMap(fromKey, true, toKey, false).values().iterator(); }
@Override public String process() throws Exception { logger.fine(sourceClass + ".process()"); // Do something a bit "compute-intensive". Random r = new Random(); int x = r.nextInt(); int y = r.nextInt(); for (int i = 0; i < 10; i++) { x = (y * x) % 3469; y = (x * y) % 3491; } // This is the ongoing appending to the JOB exit status String exitStatus = null; try { exitStatus = contributeToExitStatus(); appendToJobContext(exitStatus); } catch (FailViaException e) { logger.fine(sourceClass + ".process(); Exiting with exitStatus = " + exitStatus); String errorAppend = (String) jobCtx.getTransientUserData(); appendToJobContext(errorAppend); throw new RuntimeException("Throwing exception on purpose"); } logger.fine(sourceClass + ".process(); exitStatus = " + exitStatus); // Now we're going to switch gears and consider the step exit Status if (exitStatus.startsWith("s")) { logger.fine( "For step exitStatus for step: " + stepCtx.getStepName() + " , return: " + JSL_STOP_TRANSITION); return JSL_STOP_TRANSITION; } else if (exitStatus.startsWith("f")) { logger.fine( "For step exitStatus for step: " + stepCtx.getStepName() + " , return: " + JSL_FAIL_TRANSITION); return JSL_FAIL_TRANSITION; } else { logger.fine( "For step exitStatus for step: " + stepCtx.getStepName() + " , don't return value"); return null; } }
// Write a custom Exit status @Override public void onWriteError(List<Object> items, Exception ex) throws Exception { log.info("Exception detected. Setting exit status"); jobContext.setExitStatus("Error : " + ex.getMessage()); }