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