package com.ximple.eofms;
|
|
import java.util.Date;
|
import javax.swing.JFrame;
|
import javax.swing.SwingUtilities;
|
|
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);
|
}
|
|
}
|