I will write a code in beforeJob method of listener for downloading a file from a server into a local system D://.......After this the file which has been downloaded is a csv file , I need to pass the file name to the CustomItemReader so that I can read this file in ItemReader. Before writing the code for downloading a file, I need to know how to pass file name from beforeJob method to ItemReader? Is is possible?
public class AccountStatusChangeListener implements JobExecutionListener {
final static Logger log = Logger.getLogger(AccountStatusChangeListener.class);
@Autowired
AccountStatChangDBUtil accountStatChangDBUtil;
//Listeners will invoke before execution or after execution of Job
public void beforeJob(JobExecution jobExecution) {
log.debug("Invoke before starting of Job");
}
Reader
public class AccountStatChangReader implements ItemReader<AccountStatusChangeExtract> {
final static Logger log = Logger.getLogger(AccountStatChangReader.class);
FlatFileItemReader<AccountStatusChangeExtract> accountStatusChangeExtractReader=null;
String fileNameWithTimeStamp;
public String getFileNameWithTimeStamp() {
return fileNameWithTimeStamp;
}
public void setFileNameWithTimeStamp(String fileNameWithTimeStamp) {
this.fileNameWithTimeStamp = fileNameWithTimeStamp;
}
//Over ride ItemReader read method
public AccountStatusChangeExtract read() throws Exception,
UnexpectedInputException, ParseException,
NonTransientResourceException {
AccountStatusChangeExtract accountStatusChangeExtract = null;
log.debug("Inside AccountStatusChangeExtract--(read)");
try{
if(null==accountStatusChangeExtractReader ){
accountStatusChangeExtractReader =new CustomAccountStatChangReader().getAccountStatusChangeItemReader(fileNameWithTimeStamp);
}
accountStatusChangeExtract = (AccountStatusChangeExtract) accountStatusChangeExtractReader.read();
if(null==accountStatusChangeExtract){
accountStatusChangeExtractReader.close();
}
}catch(Exception e){
log.error("Inside AccountStatusChangeExtract--(read)--Exception--"+e);
}
return accountStatusChangeExtract;
}