[Quartz] Utilisation du Cron Schedule pour CSV Reader
Bonjour,
J'ai un soucis et peut-être que vous pourrez m'aider !
Pour un projet, on m'a demandé de lire et récupérer les données de fichiers CSV. On m'a demandé que le programme récupère toutes les heures ces données. J'ai donc pour cela décidé d'utiliser Quartz et plus particulièrement Cron Schedule.
Je vous montre mon code pour que vous puissiez voir
GkaJob.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
package com.auscult.gka;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.auscult.gka.OpenGka;
public class GkaJob implements Job {
public void execute(JobExecutionContext context2) throws JobExecutionException {
JobDataMap data = context2.getJobDetail().getJobDataMap();
String dir = data.getString("dir");
System.out.println(dir);
try (OpenGka gka = new OpenGka (dir))
{
System.out.println("test0");
} catch (Exception e) {
throw new JobExecutionException(e);
}
}
} |
OpenGka.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| package com.auscult.gka;
import java.io.FileReader;
import java.io.IOException;
import au.com.bytecode.opencsv.CSVReader;
import java.lang.AutoCloseable;
public class OpenGka implements AutoCloseable {
public OpenGka(String dir) throws IOException {
System.out.println("test");
File[] filesInDirectory = new File(dir).listFiles();
for(File f : filesInDirectory){
String filePath = f.getAbsolutePath();
String fileExtenstion = filePath.substring(filePath.lastIndexOf(".") + 1,filePath.length());
if("csv".equals(fileExtenstion)){
System.out.println("CSV file found -> " + filePath);
}
}
System.out.println("test1.2");
try (CSVReader reader = new CSVReader(new FileReader(dir)))
{
System.out.println("test2");
String[] line;
while ((line = reader.readNext()) != null) {
for(String token : line)
{
System.out.println(token);
}
}
}
}
@Override
public void close() throws Exception {
}
} |
QuartzGka.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| package com.auscult.gka;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzGka implements ServletContextListener {
Scheduler scheduler = null;
@Override
public void contextInitialized(ServletContextEvent servletContext) {
System.out.println("Context Initialized2");
try {
final JobDetail job2 = JobBuilder
.newJob(GkaJob.class)
.withIdentity("monJob2" , "groupe_2" )
.usingJobData("dir", "//192.168.7.192/TEST/")
.build();
// Create a Trigger that fires every 30 minutes.
final Trigger trigger2 = (Trigger) TriggerBuilder
.newTrigger()
.withIdentity("TriggerName2", "Group2")
.withSchedule(CronScheduleBuilder.cronSchedule("0 0/1 * * * ?")) //test 1mn
.build();
// Setup the Job and Trigger with Scheduler & schedule jobs
scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job2, trigger2);
}
catch (SchedulerException e) {
e.printStackTrace();
}
}
@Override
public void contextDestroyed(ServletContextEvent servletContext) {
System.out.println("Context Destroyed");
try
{
scheduler.shutdown();
}
catch (SchedulerException e)
{
e.printStackTrace();
}
}
} |
Le soucis est dans mon "OpenGka.java" je pense car comme vous pouvez le voir j'ai mis des System.out.println un peu partout et seulement "Test" s'affiche en console
Du fait, mes données ne s'affiche pas en console
Si vous avez une idée, peut être un truc tout bête, je ne suis pas très à l'aise avec la librairie OpenCsv