From 8cb0084749c5334eec1ec7bae4abd91e2de5b4b1 Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Mon, 17 Mar 2008 12:50:05 +0800
Subject: [PATCH] update for EOFM-20

---
 ximple-jobcarrier/src/main/resources/quartz_jobs.xml                    |   73 ++++++++++++++++++
 .gitattributes                                                          |    2 
 ximple-jobcarrier/pom.xml                                               |   19 ++++
 ximple-jobcarrier/src/main/resources/quartz.properties                  |   28 +++++++
 ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java |   50 ++++++++++++
 ximple-jobcarrier/src/main/resources/log4j.properties                   |   15 +++
 6 files changed, 186 insertions(+), 1 deletions(-)

diff --git a/.gitattributes b/.gitattributes
index c604cc5..e290121 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -37,6 +37,8 @@
 ximple-jobcarrier/pom.xml svneol=native#text/xml
 ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java svneol=native#text/plain
 ximple-jobcarrier/src/main/resources/log4j.properties svneol=native#text/plain
+ximple-jobcarrier/src/main/resources/quartz.properties svneol=native#text/plain
+ximple-jobcarrier/src/main/resources/quartz_jobs.xml svneol=native#text/xml
 ximple-jobcarrier/src/test/java/com/ximple/eofms/XQuartzJobCarrierTest.java svneol=native#text/plain
 ximple-spatialjob/pom.xml svneol=native#text/xml
 ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java svneol=native#text/plain
diff --git a/ximple-jobcarrier/pom.xml b/ximple-jobcarrier/pom.xml
index 8ab5412..e6620d3 100644
--- a/ximple-jobcarrier/pom.xml
+++ b/ximple-jobcarrier/pom.xml
@@ -273,7 +273,18 @@
       <artifactId>commons-collections</artifactId>
       <groupId>commons-collections</groupId>
     </dependency>
-
+    <dependency>
+      <groupId>commons-digester</groupId>
+      <artifactId>commons-digester</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>commons-pool</groupId>
+      <artifactId>commons-pool</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+    </dependency>
     <dependency>
       <artifactId>log4j</artifactId>
       <groupId>log4j</groupId>
@@ -331,6 +342,12 @@
       <groupId>opensymphony</groupId>
     </dependency>
 
+    <dependency>
+      <groupId>javax.transaction</groupId>
+      <artifactId>jta</artifactId>
+      <version>1.0.1B</version>
+    </dependency>
+
     <!-- Ximple Library -->
     <dependency>
       <artifactId>ximple-dgnio</artifactId>
diff --git a/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java b/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java
index 7e71186..f2eef84 100644
--- a/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java
+++ b/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java
@@ -4,9 +4,14 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+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!
@@ -25,6 +30,7 @@
     public void startScheduler()
     {
         Scheduler scheduler = null;
+        boolean shutdown = false;
 
         try
         {
@@ -39,7 +45,51 @@
         {
             // 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);
     }
 
 }
diff --git a/ximple-jobcarrier/src/main/resources/log4j.properties b/ximple-jobcarrier/src/main/resources/log4j.properties
index e69de29..b844eb1 100644
--- a/ximple-jobcarrier/src/main/resources/log4j.properties
+++ b/ximple-jobcarrier/src/main/resources/log4j.properties
@@ -0,0 +1,15 @@
+# Create stdout appender
+log4j.rootLogger=error, stdout
+
+# Configure the stdout appender to go to the Console
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+
+# Configure stdout appender to use the PatternLayout
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+
+# Pattern output the caller's filename and line #
+log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
+
+# Print messages of level INFO or above for examples
+log4j.logger.org.cavaness.quartzbook=INFO
+log4j.logger.com.ximple.eofms=DEBUG
\ No newline at end of file
diff --git a/ximple-jobcarrier/src/main/resources/quartz.properties b/ximple-jobcarrier/src/main/resources/quartz.properties
new file mode 100644
index 0000000..be35e19
--- /dev/null
+++ b/ximple-jobcarrier/src/main/resources/quartz.properties
@@ -0,0 +1,28 @@
+#===============================================================
+#Configure Main Scheduler Properties
+#===============================================================
+org.quartz.scheduler.instanceName = QuartzScheduler
+org.quartz.scheduler.instanceId = AUTO
+
+#===============================================================
+#Configure ThreadPool
+#===============================================================
+org.quartz.threadPool.threadCount =  5
+org.quartz.threadPool.threadPriority = 5
+org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
+
+#===============================================================
+#Configure JobStore
+#===============================================================
+org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
+
+#===============================================================
+#Configure Plugins
+#===============================================================
+org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
+
+org.quartz.plugin.jobInitializer.fileName = quartz_jobs.xml
+
+org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
+org.quartz.plugin.jobInitializer.failOnFileNotFound = true
+org.quartz.plugin.jobInitializer.validating=false
diff --git a/ximple-jobcarrier/src/main/resources/quartz_jobs.xml b/ximple-jobcarrier/src/main/resources/quartz_jobs.xml
new file mode 100644
index 0000000..0e6d50e
--- /dev/null
+++ b/ximple-jobcarrier/src/main/resources/quartz_jobs.xml
@@ -0,0 +1,73 @@
+<?xml version='1.0' encoding='utf-8'?>
+
+<quartz xmlns="http://www.opensymphony.com/quartz/JobSchedulingData"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://www.opensymphony.com/quartz/JobSchedulingData
+        http://www.opensymphony.com/quartz/xml/job_scheduling_data_1_5.xsd"
+        version="1.5">
+
+  <job>
+    <job-detail>
+      <name>ConvertDgn2ShpIntoDirectory</name>
+      <group>DEFAULT</group>
+      <description>
+        A job that convert dgn to shapefiles
+      </description>
+      <job-class>
+        com.ximple.eofms.jobs.OracleConvertDgn2ShpJob
+      </job-class>
+      <volatility>false</volatility>
+      <durability>false</durability>
+      <recover>false</recover>
+      <job-data-map allows-transient-data="true">
+        <entry>
+          <key>SHPDATA_DIR</key>
+          <value>c:\temp\data</value>
+        </entry>
+        <entry>
+          <key>ORAHOST</key>
+          <value>192.168.11.119</value>
+        </entry>
+        <entry>
+          <key>ORAINST</key>
+          <value>ORCL</value>
+        </entry>
+        <entry>
+          <key>ORAPORT</key>
+          <value>1521</value>
+        </entry>
+        <entry>
+          <key>ORAUSER</key>
+          <value>spatialdb</value>
+        </entry>
+        <entry>
+          <key>ORAPASS</key>
+          <value>spatialdb000</value>
+        </entry>
+        <entry>
+          <key>ORGSCHEMA</key>
+          <value>SPATIALDB</value>
+        </entry>
+        <entry>
+          <key>TESTMODE</key>
+          <value>true</value>
+        </entry>
+      </job-data-map>
+    </job-detail>
+
+    <trigger>
+      <simple>
+        <name>convertTrigger</name>
+        <group>DEFAULT</group>
+        <job-name>ConvertDgn2ShpIntoDirectory</job-name>
+        <job-group>DEFAULT</job-group>
+        <start-time>2008-03-01T18:10:00</start-time>
+        <!-- repeat indefinitely every 10 seconds -->
+        <repeat-count>0</repeat-count>
+        <repeat-interval>1000</repeat-interval>
+        <!-- <repeat-interval>72000000</repeat-interval> -->
+      </simple>
+    </trigger>
+
+  </job>
+</quartz>

--
Gitblit v0.0.0-SNAPSHOT