package com.ximple.eofms;
|
|
import javax.swing.JFrame;
|
import javax.swing.SwingUtilities;
|
import java.util.Date;
|
|
import org.apache.commons.cli.CommandLine;
|
import org.apache.commons.cli.CommandLineParser;
|
import org.apache.commons.cli.HelpFormatter;
|
import org.apache.commons.cli.Option;
|
import org.apache.commons.cli.OptionBuilder;
|
import org.apache.commons.cli.Options;
|
import org.apache.commons.cli.ParseException;
|
import org.apache.commons.cli.PosixParser;
|
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.LogFactory;
|
import org.awl.Wizard;
|
import org.quartz.JobDetail;
|
import org.quartz.Scheduler;
|
import org.quartz.SchedulerException;
|
import org.quartz.Trigger;
|
import org.quartz.TriggerUtils;
|
import org.quartz.impl.StdSchedulerFactory;
|
|
import com.ximple.eofms.jobs.OracleConvertDgn2ShpJob;
|
|
/**
|
* Hello world!
|
*/
|
public class XQuartzJobCarrier {
|
static Log logger = LogFactory.getLog(XQuartzJobCarrier.class);
|
static Options options = new Options();
|
|
private static final String VERSION = "0.9.0";
|
|
public static void main(String[] args) {
|
XQuartzJobCarrier instance = new XQuartzJobCarrier();
|
instance.initializeOption();
|
instance.execute(args);
|
}
|
|
private void initializeOption() {
|
Option option;
|
option = OptionBuilder.create("help");
|
option.setDescription("print this message");
|
options.addOption(option);
|
|
option = OptionBuilder.create("version");
|
option.setDescription("print the version information and exit");
|
options.addOption(option);
|
|
option = OptionBuilder.create("wizard");
|
option.setDescription("start wizard mode");
|
options.addOption(option);
|
|
option = OptionBuilder.create("verbose");
|
option.setDescription("be extra verbose");
|
options.addOption(option);
|
|
option = OptionBuilder.create("debug");
|
option.setDescription("print debugging information");
|
options.addOption(option);
|
|
option = OptionBuilder.create("jobfile");
|
option.setDescription("use given jobfile");
|
option.setArgName("file");
|
options.addOption(option);
|
|
}
|
|
private void execute(String[] args) {
|
// CommandLineParser parser = new GnuParser();
|
CommandLineParser parser = new PosixParser();
|
CommandLine commandLine = null;
|
try {
|
// parse the command commandLine arguments
|
commandLine = parser.parse(options, args);
|
}
|
catch (ParseException exp) {
|
// oops, something went wrong
|
System.err.println("Parsing failed. Reason: " + exp.getMessage());
|
}
|
|
if ((commandLine != null) && (commandLine.getOptions().length > 0)) {
|
if (commandLine.hasOption("help")) {
|
printHelpMessage();
|
} else if (commandLine.hasOption("version")) {
|
printVersionMessage();
|
} else if (commandLine.hasOption("wizard")) {
|
startWizardMode();
|
}
|
return;
|
}
|
startScheduler();
|
}
|
|
private void printHelpMessage() {
|
HelpFormatter formatter = new HelpFormatter();
|
formatter.printHelp("XQuartzJobCarrier", options);
|
}
|
|
private void printVersionMessage() {
|
System.out.println("XQuartzJobCarrier - " + VERSION);
|
}
|
|
public void startWizardMode() {
|
Runnable runnable = new Runnable() {
|
public void run() {
|
Wizard wizard = new XQuartzJobWizard((JFrame) null);
|
|
wizard.pack();
|
wizard.setVisibleOnCenterOfScreen();
|
}
|
};
|
try {
|
SwingUtilities.invokeLater(runnable);
|
}
|
catch (Exception ex) {
|
ex.printStackTrace();
|
}
|
}
|
|
public void startScheduler() {
|
Scheduler scheduler = null;
|
boolean shutdown = false;
|
|
try {
|
// Get a Scheduler instance from the Factory
|
scheduler = StdSchedulerFactory.getDefaultScheduler();
|
|
// Start the scheduler
|
scheduler.start();
|
logger.info("Scheduler started at " + new Date());
|
|
} catch (SchedulerException ex) {
|
// deal with any exceptions
|
logger.error(ex);
|
shutdown = true;
|
} catch (Throwable throwable) {
|
logger.error(throwable.getMessage(), throwable);
|
shutdown = true;
|
}
|
if (shutdown) {
|
try {
|
scheduler.shutdown();
|
} catch (SchedulerException e) {
|
logger.error(e.getMessage(), e);
|
}
|
}
|
}
|
|
/*
|
* return an instance of the Scheduler from the factory
|
*/
|
public Scheduler createScheduler() throws SchedulerException {
|
return StdSchedulerFactory.getDefaultScheduler();
|
}
|
|
// Create and Schedule a ScanDirectoryJob with the Scheduler
|
private void scheduleJob(Scheduler scheduler) throws SchedulerException {
|
|
// Create a JobDetail for the Job
|
JobDetail jobDetail = new JobDetail("ScanDirectory", Scheduler.DEFAULT_GROUP,
|
OracleConvertDgn2ShpJob.class);
|
|
// Configure the directory to scan
|
jobDetail.getJobDataMap().put("SCAN_DIR", "c:\\quartz-book\\input");
|
|
// Create a trigger that fires every 10 seconds, forever
|
Trigger trigger = TriggerUtils.makeSecondlyTrigger(10);
|
trigger.setName("scanTrigger");
|
// Start the trigger firing from now
|
trigger.setStartTime(new Date());
|
|
// Associate the trigger with the job in the scheduler
|
scheduler.scheduleJob(jobDetail, trigger);
|
}
|
|
}
|