From b2f56dae55d1de8f7378f22b2466e314b1e30cc7 Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Tue, 25 Mar 2008 11:33:25 +0800
Subject: [PATCH] update for EOFM-15

---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java |  324 ++++-------------------------------------------------
 1 files changed, 26 insertions(+), 298 deletions(-)

diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java
index 0a78e96..47e48bf 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java
@@ -1,8 +1,8 @@
 package com.ximple.eofms.jobs;
 
 import java.io.File;
-import java.io.IOException;
 import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.MalformedURLException;
 import java.net.URL;
@@ -14,13 +14,13 @@
 import java.util.Iterator;
 import java.util.Properties;
 
+import org.apache.commons.digester.Digester;
+import org.apache.commons.digester.xmlrules.DigesterLoader;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.commons.transaction.memory.PessimisticMapWrapper;
 import org.apache.commons.transaction.util.CommonsLoggingLogger;
 import org.apache.commons.transaction.util.LoggerFacade;
-import org.apache.commons.digester.Digester;
-import org.apache.commons.digester.xmlrules.DigesterLoader;
 import org.geotools.data.FeatureWriter;
 import org.geotools.data.Transaction;
 import org.geotools.data.shapefile.ShapefileDataStore;
@@ -28,218 +28,19 @@
 import org.geotools.feature.FeatureType;
 import org.geotools.feature.IllegalAttributeException;
 import org.geotools.feature.SimpleFeature;
-import org.geotools.TestData;
 import org.xml.sax.SAXException;
 
 import com.vividsolutions.jts.util.Assert;
 
-import oracle.jdbc.OracleConnection;
-
-import com.ximple.eofms.filter.CreateLineStringStrategy;
-import com.ximple.eofms.filter.ElementDispatcher;
-import com.ximple.eofms.filter.TypeCompIdDispatchableFilter;
 import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter;
+import com.ximple.eofms.filter.ElementDispatcher;
 import com.ximple.io.dgn7.Element;
 import com.ximple.io.dgn7.FrammeAttributeData;
 
-public class OracleConvertJobContext
+public class OracleConvertJobContext extends AbstractOracleJobContext
 {
     static Log logger = LogFactory.getLog(OracleConvertJobContext.class);
     static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
-
-    private static final String ORACLE_URL = "jdbc:oracle:thin:@";
-    private static final String PROPUsrKey = "user";
-    private static final String PROPPassKey = "password";
-
-    /**
-     * Table Prefiex
-     */
-    protected static final String TABLE_PREFIX = "GEO$";
-    protected static final String UDT_SCHEMA = "SPATIALDB";
-
-    /**
-     * User Types
-     */
-    protected static final String UDT_RAWS = "CREATE OR REPLACE TYPE \"" + UDT_SCHEMA + "\".\"RAWS\" AS VARRAY (1048576) OF NUMBER(38)";
-    protected static final String UDT_OFMID = "CREATE OR REPLACE TYPE  \"" + UDT_SCHEMA + "\".\"OFMID\" AS OBJECT ("
-            + "\"CLSID\" NUMBER(5), \"OID\" NUMBER(10), \"STATUS\" NUMBER(5), \"COMPID\" NUMBER(3), "
-            + "\"RULEID\" NUMBER(3), \"OCCID\" NUMBER(3))";
-
-    protected static final String UDT_RAWSNAME = "RAWS";
-    protected static final String UDT_OFMIDNAME = "OFMID";
-
-    /**
-     * Utility SQL
-     */
-    protected static final String TAB_DROP = "DROP TABLE %s.%s CASCADE CONSTRAINTS";
-
-    protected static final String TAB_DELETE = "DELETE FROM %s.%s";
-
-    /**
-     * Table Schema
-     */
-    protected static final String TAB_RANGENODEINDEX_1 = "CREATE TABLE \"%s\".\"%s\"\n"
-            + "   (    \"RNID\" INTEGER NOT NULL ENABLE,\n"
-            + "    \"RPID\" INTEGER NOT NULL ENABLE,\n"
-            + "    \"RNG_LOWX\" BINARY_DOUBLE NOT NULL ENABLE,\n"
-            + "    \"RNG_LOWY\" BINARY_DOUBLE NOT NULL ENABLE,\n"
-            + "    \"RNG_HIGHX\" BINARY_DOUBLE NOT NULL ENABLE,\n"
-            + "    \"RNG_HIGHY\" BINARY_DOUBLE NOT NULL ENABLE,\n"
-            + "    \"EXTENTS\" MDSYS.SDO_GEOMETRY,\n"
-            + "    \"RNDESCR\" VARCHAR2(255), \n"
-            + "    PRIMARY KEY ( \"RNID\" ) ENABLE )";
-
-    protected static final String TAB_RANGENODEINDEX = "CREATE TABLE \"%s\".\"%s\"\n"
-            + "   (    \"RNID\" INTEGER NOT NULL ENABLE,\n"
-            + "    \"RPID\" INTEGER NOT NULL ENABLE,\n"
-            + "    \"RNG_LOWX\" FLOAT NOT NULL ENABLE,\n"
-            + "    \"RNG_LOWY\" FLOAT NOT NULL ENABLE,\n"
-            + "    \"RNG_HIGHX\" FLOAT NOT NULL ENABLE,\n"
-            + "    \"RNG_HIGHY\" FLOAT NOT NULL ENABLE,\n"
-            + "    \"RNDESCR\" VARCHAR2(255), \n"
-            + "    PRIMARY KEY ( \"RNID\" ) ENABLE )";
-
-    protected static final String TAB_RANGENODESTORAGE = "CREATE TABLE \"%s\".\"%s\"\n"
-            + "   (    \"RNID\" INTEGER NOT NULL ENABLE,\n"
-            + "    \"LAYERID\" NUMBER(5,0) NOT NULL ENABLE,\n"
-            + "    \"LASTUPDATE\" DATE NOT NULL ENABLE,\n"
-            + "    \"SPACETABLE\" VARCHAR2(255)\n" + "   )";
-
-    protected static final String TAB_ELEMENTINDEX_1 = "CREATE TABLE %s.%s (\n"
-            + "    \"ELMNO\" INTEGER NOT NULL ENABLE,\n"
-            + "    \"TYPE\" NUMBER(5) NOT NULL ENABLE,\n"
-            + "    \"XLOW\" BINARY_DOUBLE NOT NULL ENABLE,\n"
-            + "    \"YLOW\" BINARY_DOUBLE NOT NULL ENABLE,\n"
-            + "    \"ZLOW\" BINARY_DOUBLE NOT NULL ENABLE,\n"
-            + "    \"XHIGH\" BINARY_DOUBLE NOT NULL ENABLE,\n"
-            + "    \"YHIGH\" BINARY_DOUBLE NOT NULL ENABLE,\n"
-            + "    \"ZHIGH\" BINARY_DOUBLE NOT NULL ENABLE,\n"
-            + "    \"TAG_LUFID\" NUMBER(10) NOT NULL ENABLE,\n"
-            + "    \"TAG_SFSC\" NUMBER(5) NOT NULL ENABLE,\n"
-            + "    \"TAG_SSTAT\" NUMBER(5) NOT NULL ENABLE,\n"
-            + "    \"TAG_BCOMPID\" NUMBER(3) NOT NULL ENABLE,\n"
-            + "    \"TAG_BRULENO\" NUMBER(3) NOT NULL ENABLE,\n"
-            + "    \"TAG_SOCCID\" NUMBER(5) NOT NULL ENABLE,\n"
-            + "    \"SPACENAME\" VARCHAR2(255) NOT NULL ENABLE,\n"
-            + "     PRIMARY KEY (\"ELMNO\") ENABLE\n"
-            + "   )";
-
-    protected static final String TAB_ELEMENTINDEX = "CREATE TABLE %s.%s (\n"
-            + "    \"ELMNO\" INTEGER NOT NULL ENABLE,\n"
-            + "    \"TYPE\" NUMBER(5) NOT NULL ENABLE,\n"
-            + "    \"XLOW\" FLOAT NOT NULL ENABLE,\n"
-            + "    \"YLOW\" FLOAT NOT NULL ENABLE,\n"
-            + "    \"ZLOW\" FLOAT NOT NULL ENABLE,\n"
-            + "    \"XHIGH\" FLOAT NOT NULL ENABLE,\n"
-            + "    \"YHIGH\" FLOAT NOT NULL ENABLE,\n"
-            + "    \"ZHIGH\" FLOAT NOT NULL ENABLE,\n"
-            + "    \"TAG_LUFID\" NUMBER(10) NOT NULL ENABLE,\n"
-            + "    \"TAG_SFSC\" NUMBER(5) NOT NULL ENABLE,\n"
-            + "    \"TAG_SSTAT\" NUMBER(5) NOT NULL ENABLE,\n"
-            + "    \"TAG_BCOMPID\" NUMBER(3) NOT NULL ENABLE,\n"
-            + "    \"TAG_BRULENO\" NUMBER(3) NOT NULL ENABLE,\n"
-            + "    \"TAG_SOCCID\" NUMBER(5) NOT NULL ENABLE,\n"
-            + "    \"SPACENAME\" VARCHAR2(255) NOT NULL ENABLE,\n"
-            + "     PRIMARY KEY (\"ELMNO\") ENABLE\n"
-            + "   )";
-
-    protected static final String TAB_IGDSSEED = "CREATE TABLE  %s.%s (\n"
-            + "   \"ELMNO\" INTEGER NOT NULL ENABLE,\n"
-            + "   \"SEEDELM\" \"" + UDT_SCHEMA
-            + "\".\"RAWS\" NOT NULL ENABLE\n" + "   )";
-
-    protected static final String TAB_STORAGE_1 = "CREATE TABLE %s.%s (\n" +
-            "    \"ELMNO\" INTEGER NOT NULL ENABLE,\n" +
-            "    \"XLOW\" BINARY_DOUBLE NOT NULL ENABLE,\n" +
-            "    \"YLOW\" BINARY_DOUBLE NOT NULL ENABLE,\n" +
-            "    \"XHIGH\" BINARY_DOUBLE NOT NULL ENABLE,\n" +
-            "    \"YHIGH\" BINARY_DOUBLE NOT NULL ENABLE,\n" +
-            "    \"EXTENTS\" MDSYS.SDO_GEOMETRY, \n" +
-            "    \"PROPS\" INTEGER NOT NULL ENABLE,\n" +
-            "    \"TAG_LUFID\" NUMBER(10) NOT NULL ENABLE,\n" +
-            "    \"TAG_SFSC\" NUMBER(5) NOT NULL ENABLE,\n" +
-            "    \"TAG_SSTAT\" NUMBER(5) NOT NULL ENABLE,\n" +
-            "    \"TAG_BCOMPID\" NUMBER(3) NOT NULL ENABLE,\n" +
-            "    \"TAG_BRULENO\" NUMBER(3) NOT NULL ENABLE,\n" +
-            "    \"TAG_SOCCID\" NUMBER(5) NOT NULL ENABLE,\n" +
-            "    \"LAYERID\" NUMBER(5) NOT NULL ENABLE,\n" +
-            "    \"ELEMENT\" \"" + UDT_SCHEMA + "\".\"RAWS\" NOT NULL ENABLE, \n" +
-            "    \"GEOM\" MDSYS.SDO_GEOMETRY \n" +
-            "   )";
-
-    protected static final String TAB_STORAGE = "CREATE TABLE %s.%s (\n" +
-            "    \"ELMNO\" INTEGER NOT NULL ENABLE,\n" +
-            "    \"XLOW\" FLOAT NOT NULL ENABLE,\n" +
-            "    \"YLOW\" FLOAT NOT NULL ENABLE,\n" +
-            "    \"XHIGH\" FLOAT NOT NULL ENABLE,\n" +
-            "    \"YHIGH\" FLOAT NOT NULL ENABLE,\n" +
-            "    \"PROPS\" INTEGER NOT NULL ENABLE,\n" +
-            "    \"TAG_LUFID\" NUMBER(10) NOT NULL ENABLE,\n" +
-            "    \"TAG_SFSC\" NUMBER(5) NOT NULL ENABLE,\n" +
-            "    \"TAG_SSTAT\" NUMBER(5) NOT NULL ENABLE,\n" +
-            "    \"TAG_BCOMPID\" NUMBER(3) NOT NULL ENABLE,\n" +
-            "    \"TAG_BRULENO\" NUMBER(3) NOT NULL ENABLE,\n" +
-            "    \"TAG_SOCCID\" NUMBER(5) NOT NULL ENABLE,\n" +
-            "    \"LAYERID\" NUMBER(5) NOT NULL ENABLE,\n" +
-            "    \"ELEMENT\" \"" + UDT_SCHEMA + "\".\"RAWS\" NOT NULL ENABLE \n" +
-            "   )";
-
-    protected static final String TAB_STORAGE2 = "CREATE TABLE %s.%s (\n" +
-            "    \"ELMNO\" INTEGER NOT NULL ENABLE,\n" +
-            "    \"XLOW\" BINARY_DOUBLE NOT NULL ENABLE,\n" +
-            "    \"YLOW\" BINARY_DOUBLE NOT NULL ENABLE,\n" +
-            "    \"XHIGH\" BINARY_DOUBLE NOT NULL ENABLE,\n" +
-            "    \"YHIGH\" BINARY_DOUBLE NOT NULL ENABLE,\n" +
-            "    \"EXTENTS\" MDSYS.SDO_GEOMETRY, \n" +
-            "    \"PROPS\" INTEGER NOT NULL ENABLE,\n" +
-            "    \"ID\" " + UDT_SCHEMA + ".OFMID NOT NULL ENABLE,\n" +
-            "    \"LAYERID\" NUMBER(5) NOT NULL ENABLE,\n" +
-            "    \"ELEMENT\" \"" + UDT_SCHEMA + "\".\"RAWS\" NOT NULL ENABLE \n" +
-            "   )";
-    /**
-     * Trigger
-     */
-    protected static final String TRG_SPACENODE = "CREATE OR REPLACE TRIGGER \"%s\".\"%s\"\n"
-            + "    AFTER DELETE OR INSERT OR UPDATE ON \"%s\".\"%s\"\n" + "    BEGIN\n"
-            + "        UPDATE SPACENODES SET LASTUPDATE = SYSDATE\n" + "        WHERE SNID = \"%d\";\n"
-            + "    END;";
-
-    protected static final String TRG_ELMINDEX =
-            "CREATE OR REPLACE TRIGGER \"%s\".\"%s\"\n"
-                    + "    AFTER INSERT OR UPDATE OR DELETE ON \"%s\".\"%s\"\n"
-                    + "    REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW\n"
-                    + "    BEGIN\n"
-                    + "        IF INSERTING THEN\n"
-                    + "            INSERT INTO \"%s\".\"%s\" (ELMNO, TYPE, XLOW, YLOW, XHIGH, YHIGH,\n"
-                    + "                UFID, FSC, COMPID, OCCID, SPACENAME)\n"
-                    + "            VALUES (SD$ELEMENTNUMBER_SEQ.NEXTVAL, :new.ELMTYPE, :new.XLOW, :new.YLOW, :new.XHIGH, :new.YHIGH,\n"
-                    + "                :new.UFID, :new.FSC, :new.COMPID, :new.OCCID, '%s');\n"
-                    + "        ELSIF DELETING THEN\n"
-                    + "            DELETE FROM \"%s\".\"%s\"\n"
-                    + "            WHERE \"%s\".UFID = :old.UFID AND\n"
-                    + "                \"%s\".FSC = :old.FSC AND\n"
-                    + "                \"%s\".COMPID = :old.COMPID AND\n"
-                    + "                \"%s\".OCCID = :old.OCCID;\n"
-                    + "        ELSE\n" + "            UPDATE \"%s\"\n"
-                    + "            SET XLOW = :new.XLOW, YLOW = :new.YLOW, XHIGH = :new.XHIGH, YHIGH = :new.YHIGH\n"
-                    + "            WHERE FSC = :new.FSC AND UFID = :new.UFID AND COMPID = :new.COMPID AND OCCID = :new.OCCID;\n"
-                    + "        END IF;\n" + "    END;";
-
-    /**
-     *
-     */
-    protected static final String TAB_ELEMENTSET_PREFIX = "ELMSET_";
-
-    protected static final String STMT_CLEARCYCLEBIN = "PURGE RECYCLEBIN";
-
-    protected static final String SMTM_GRANTOBJECTTYPE = "GRANT EXECUTE ANY TYPE TO \"" + UDT_SCHEMA + "\"";
-
-    protected static final long TIMEOUT = Long.MAX_VALUE;
-
-    /**
-     * Encoding of URL path.
-     */
-    private static final String ENCODING = "UTF-8";
 
     static
     {
@@ -252,28 +53,7 @@
         }
     }
 
-    public static String getCurrentURL(String oracleHost, String oraclePort, String oracleInstance)
-    {
-        StringBuilder builder = new StringBuilder();
-
-        builder.append(ORACLE_URL);
-        builder.append(oracleHost);
-        builder.append(":");
-        builder.append(oraclePort);
-        builder.append(":");
-        builder.append(oracleInstance);
-
-        return builder.toString();
-    }
-
-    private String _oracleHost;
     private String _filterConfig;
-    private String _oracleInstance;
-    private String _oraclePort;
-    private String _dataPath;
-
-    private OracleConnection oracleConnection = null;
-    private Properties properties;
 
     private ElementDispatcher elementDispatcher;
 
@@ -286,28 +66,31 @@
         _filterConfig = filterConfig;
         elementDispatcher = createElementDispatcher();
         txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
-
     }
 
     private ElementDispatcher createElementDispatcher()
     {
-        URL rulesURL = getClass().getResource("ElementDispatcherRules.xml");
-
-        File rulesFile = null;
         try
         {
-            rulesFile = new File(URLDecoder.decode(rulesURL.getPath(), ENCODING));
-            if (!rulesFile.exists()) {
-                throw new FileNotFoundException("Could not locate test-data: " + rulesFile);
-            }
-            Digester digester = DigesterLoader.createDigester(rulesFile.toURI().toURL());
-            File config = new File(_filterConfig);
-            if (!config.exists())
+            URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml");
+            assert rulesURL != null;
+            Digester digester = DigesterLoader.createDigester(rulesURL);
+            URL filterURL = null;
+            if (_filterConfig != null)
             {
-                config = new File("conf\\DefaultConvertShpFilter.xml");
+                File config = new File(_filterConfig);
+                if (config.exists())
+                {
+                    filterURL = config.toURI().toURL();
+                }
             }
-            ElementDispatcher dispatcher = (ElementDispatcher) digester.parse(config);
-            return dispatcher;
+            if (filterURL == null)
+            {
+                // config = new File("conf/DefaultConvertShpFilter.xml");
+                filterURL = this.getClass().getResource("/conf/DefaultConvertShpFilter.xml");
+            }
+            assert filterURL != null;
+            return (ElementDispatcher) digester.parse(filterURL);
         } catch (UnsupportedEncodingException e)
         {
             logger.info(e.getMessage(), e);
@@ -327,61 +110,6 @@
         }
     }
 
-    public void setLogin(String userName, String password)
-    {
-        properties.put(PROPUsrKey, userName);
-        properties.put(PROPPassKey, password);
-    }
-
-    public void setShapeData(String dataPath)
-    {
-        _dataPath = dataPath;
-    }
-
-    public OracleConnection getOracleConnection()
-    {
-        try
-        {
-            if (oracleConnection == null)
-            {
-                oracleConnection = (OracleConnection) DriverManager.getConnection(
-                        getCurrentURL(_oracleHost, _oraclePort, _oracleInstance),
-                        properties);
-            }
-
-            return oracleConnection;
-        } catch (SQLException e)
-        {
-            logger.warn(e.getMessage(), e);
-        }
-
-        oracleConnection = null;
-
-        return null;
-    }
-
-    public void closeConnection()
-    {
-        try
-        {
-            if (oracleConnection != null)
-            {
-                oracleConnection.close();
-                oracleConnection = null;
-            }
-        } catch (SQLException e)
-        {
-            logger.warn(e.getMessage(), e);
-        }
-    }
-
-    public void setConnectionInfo(String oracleHost, String oraclePort, String oracleInstance)
-    {
-        _oracleHost = oracleHost;
-        _oracleInstance = oracleInstance;
-        _oraclePort = oraclePort;
-    }
-
     public void putFeatureCollection(Element element)
     {
         Feature feature = elementDispatcher.execute(element);
@@ -390,8 +118,8 @@
             FrammeAttributeData linkage =
                     AbstractFLinkageDispatchableFilter.getFeatureLinkage(element);
             logger.debug("Unknown Element:" + element.getElementType().toString() +
-                ":type=" + element.getType() + ":lv=" + element.getLevelIndex() + ":id=" +
-            (linkage == null ? "NULL" : (linkage.getFsc() + "|" +linkage.getComponentID())));
+                    ":type=" + element.getType() + ":lv=" + element.getLevelIndex() + ":id=" +
+                    (linkage == null ? "NULL" : (linkage.getFsc() + "|" + linkage.getComponentID())));
 
             return;
         }
@@ -417,7 +145,7 @@
             txFeaturesContext.commitTransaction();
         } else
             logger.debug("Transaction is empty.");
-        
+
         if (!featuresContext.isEmpty())
         {
             updateDataStore();
@@ -446,7 +174,7 @@
                 File sfile = new File(_dataPath + "\\" + featureType.getTypeName());
                 logger.debug("Begin Save shapefile:" + sfile.toURI());
 
-                ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURL());
+                ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL());
                 shapefileDataStore.createSchema(featureType);
                 FeatureWriter writer = shapefileDataStore.getFeatureWriter(featureType.getTypeName(), Transaction.AUTO_COMMIT);
                 ArrayList features = (ArrayList) featuresContext.get(featureType);

--
Gitblit v0.0.0-SNAPSHOT