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

---
 ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java   |   10 +++++
 ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java |   51 ++++++++++++++++++++++---
 2 files changed, 54 insertions(+), 7 deletions(-)

diff --git a/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java b/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java
index 1699047..cc6fd7a 100644
--- a/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java
+++ b/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java
@@ -1,11 +1,12 @@
 package com.ximple.eofms.jobs;
 
 import java.io.File;
-import java.io.InputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.nio.ByteBuffer;
 import java.sql.SQLException;
 
+import org.apache.commons.logging.Log;
 import org.quartz.Job;
 import org.quartz.JobDataMap;
 import org.quartz.JobDetail;
@@ -25,6 +26,7 @@
     private static final String ORAPORT = "ORAPORT";
     private static final String ORAUSER = "ORAUSER";
     private static final String ORAPASS = "ORAPASS";
+    private static final String TESTMODE = "TESTMODE";
 
     protected String _dataPath;
     protected String _oracleHost;
@@ -33,8 +35,11 @@
     protected String _username;
     protected String _password;
     protected String _orgSchema;
+    protected boolean _testMode = false;
 
     public abstract void execute(JobExecutionContext context) throws JobExecutionException;
+
+    public Log getLogger() { return null; }
 
     protected void extractJobConfiguration(JobDetail jobDetail) throws JobExecutionException
     {
@@ -47,10 +52,16 @@
         _username = dataMap.getString(ORAUSER);
         _password = dataMap.getString(ORAPASS);
         _orgSchema = dataMap.getString(SPATAILSCHEMA);
+        _testMode = dataMap.getBooleanFromString(TESTMODE);
 
         // Validate the required input
         if (_dataPath == null)
         {
+            Log logger = getLogger();
+            if (logger != null)
+            {
+                logger.warn("Cannot found data directory in configarion.");
+            }
             throw new JobExecutionException("Directory not configured");
         }
 
@@ -58,7 +69,33 @@
         File dir = new File(_dataPath);
         if (!dir.exists())
         {
+            Log logger = getLogger();
+            if (logger != null)
+            {
+                logger.warn("Cannot found data directory in file system.[" + _dataPath + "]");
+            }
             throw new JobExecutionException("Invalid Dir " + _dataPath);
+        }
+
+        if (_oracleHost == null)
+        {
+            throw new JobExecutionException("Unknown Oracle Host.");
+        }
+        if (_oracleInstance == null)
+        {
+            throw new JobExecutionException("Unknown Oracle Instance.");
+        }
+        if (_username == null)
+        {
+            throw new JobExecutionException("Unknown Oracle Username.");
+        }
+        if (_password == null)
+        {
+            throw new JobExecutionException("Unknown Oracle Password.");
+        }
+        if (_orgSchema == null)
+        {
+            throw new JobExecutionException("Unknown Spatial Database Schema.");
         }
     }
 
@@ -72,11 +109,11 @@
         byte[] raw = null;
 
         // BLOB        blob        = (BLOB) rs.getBlob(1);
-        int         optimalSize = blob.getChunkSize();
-        byte[]      chunk       = new byte[optimalSize];
-        InputStream is          = blob.getBinaryStream(0);
-        ByteBuffer buffer      = null;    // ByteBuffer.allocate(optimalSize);
-        int         len         = 0;
+        int optimalSize = blob.getChunkSize();
+        byte[] chunk = new byte[optimalSize];
+        InputStream is = blob.getBinaryStream(0);
+        ByteBuffer buffer = null;    // ByteBuffer.allocate(optimalSize);
+        int len = 0;
 
         try
         {
@@ -104,5 +141,5 @@
 
         return raw;
     }
-    
+
 }
diff --git a/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java b/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java
index 93a6f0f..5fee393 100644
--- a/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java
+++ b/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java
@@ -74,6 +74,11 @@
         }
     }
 
+    public Log getLogger()
+    {
+        return logger;
+    }
+
     public void execute(JobExecutionContext context) throws JobExecutionException
     {
         // Every job has its own job detail
@@ -95,6 +100,7 @@
             exetcuteConvert(jobContext, _orgSchema, _dataPath);
         } catch (SQLException e)
         {
+            logger.warn(e.getMessage(), e);
             throw new JobExecutionException("Database error.", e);
         }
 
@@ -115,9 +121,12 @@
 
             String tableSrc = (String) pair.first;
 
+            logger.info("begin convert:[" + order + "]-" + tableSrc);
             queryIgsetElement(jobContext, querySchema, tableSrc);
 
             order++;
+
+            if (_testMode) break;
 
             if ((order % COMMITSIZE) == 0)
             {
@@ -127,6 +136,7 @@
             }
         }
 
+        logger.info("end convert job:[" + order + "]");
         System.gc();
     }
 

--
Gitblit v0.0.0-SNAPSHOT