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/filter/AbstractDispatchableFilter.java | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java | 11 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java | 22 + xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeJobContext.java | 16 + .gitattributes | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleJobContext.java | 265 ++++++++++++++++++++ xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java | 324 ++---------------------- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java | 52 +-- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java | 23 + xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java | 38 ++ 10 files changed, 400 insertions(+), 355 deletions(-) diff --git a/.gitattributes b/.gitattributes index 0de4810..a1e8922 100644 --- a/.gitattributes +++ b/.gitattributes @@ -53,10 +53,12 @@ xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java svneol=native#text/plain +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleJobContext.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeometryCoordinateDecorator.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java svneol=native#text/plain +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeJobContext.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/BinConverter.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/Bits.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ByteArrayCompressor.java svneol=native#text/plain diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractDispatchableFilter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractDispatchableFilter.java index 5a493f8..70c9922 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractDispatchableFilter.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractDispatchableFilter.java @@ -7,7 +7,7 @@ { private String name; private String description; - private int elmtype; + private int elmtype; protected Log logger = LogFactory.getLog(AbstractFLinkageDispatchableFilter.class); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java index 4427809..12ca65d 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java @@ -8,14 +8,15 @@ import org.geotools.feature.FeatureTypeBuilder; import org.geotools.feature.IllegalAttributeException; import org.geotools.feature.SchemaException; -import org.opengis.geometry.Geometry; import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.Geometry; import com.ximple.io.dgn7.Element; import com.ximple.io.dgn7.FrammeAttributeData; import com.ximple.io.dgn7.LineStringElement; import com.ximple.io.dgn7.UserAttributeData; +import com.ximple.io.dgn7.ComplexChainElement; public class CreateLineStringStrategy implements CreateFeatureTypeStrategy { @@ -36,8 +37,7 @@ { if (anUsrData instanceof FrammeAttributeData) { - FrammeAttributeData featureLinkage = (FrammeAttributeData) anUsrData; - return featureLinkage; + return (FrammeAttributeData) anUsrData; } } return null; @@ -69,7 +69,7 @@ { LineStringElement lineStringElement = (LineStringElement) element; Feature feature = featureType.create(new Object[]{ - geometryFactory.createLineString(lineStringElement.getVertices()), + lineStringElement.toGeometry(geometryFactory), (int) fLinkage.getFsc(), (long) fLinkage.getUfid(), (int) fLinkage.getComponentID(), @@ -80,6 +80,21 @@ lineStringElement.getLineStyle(), }); return feature; + } else if (element instanceof ComplexChainElement) + { + ComplexChainElement complexChain = (ComplexChainElement) element; + Feature feature = featureType.create(new Object[]{ + complexChain.toGeometry(geometryFactory), + (int) fLinkage.getFsc(), + (long) fLinkage.getUfid(), + (int) fLinkage.getComponentID(), + 0, + complexChain.getLevelIndex(), + complexChain.getColorIndex(), + complexChain.getWeight(), + complexChain.getLineStyle(), + }); + return feature; } return null; } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java index 206214a..254d071 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java @@ -8,14 +8,15 @@ import org.geotools.feature.FeatureTypeBuilder; import org.geotools.feature.IllegalAttributeException; import org.geotools.feature.SchemaException; -import org.opengis.geometry.Geometry; import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.Geometry; import com.ximple.io.dgn7.Element; import com.ximple.io.dgn7.FrammeAttributeData; import com.ximple.io.dgn7.TextElement; import com.ximple.io.dgn7.UserAttributeData; +import com.ximple.io.dgn7.TextNodeElement; public class CreateTextStrategy implements CreateFeatureTypeStrategy { @@ -36,8 +37,7 @@ { if (anUsrData instanceof FrammeAttributeData) { - FrammeAttributeData featureLinkage = (FrammeAttributeData) anUsrData; - return featureLinkage; + return (FrammeAttributeData) anUsrData; } } return null; @@ -75,7 +75,7 @@ { TextElement txtElement = (TextElement) element; Feature feature = featureType.create(new Object[]{ - geometryFactory.createPoint(txtElement.getUserOrigin()), + txtElement.toGeometry(geometryFactory), (int) fLinkage.getFsc(), (long) fLinkage.getUfid(), (int) fLinkage.getComponentID(), @@ -92,6 +92,36 @@ txtElement.getText() }); return feature; + } else if (element instanceof TextNodeElement) + { + TextNodeElement nodeElement = (TextNodeElement) element; + String[] texts = nodeElement.getTextArray(); + StringBuffer sb = new StringBuffer(); + for (String text : texts) + { + if (sb.length() != 0) + sb.append("\n"); + sb.append(text); + } + + Feature feature = featureType.create(new Object[]{ + nodeElement.toGeometry(geometryFactory), + (int) fLinkage.getFsc(), + (long) fLinkage.getUfid(), + (int) fLinkage.getComponentID(), + 0, + nodeElement.getLevelIndex(), + nodeElement.getColorIndex(), + nodeElement.getWeight(), + nodeElement.getLineStyle(), + nodeElement.getFontIndex(), + nodeElement.getJustification(), + nodeElement.getTextNodeHeight(), + nodeElement.getTextNodeLength(), + nodeElement.getRotationAngle(), + sb.toString() + }); + return feature; } return null; } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java index 00e66d6..00057d2 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java @@ -39,7 +39,7 @@ protected String _password; protected String _orgSchema; protected boolean _testMode = false; - protected int _testCount = -1; + protected int _testCount = -1; public abstract void execute(JobExecutionContext context) throws JobExecutionException; @@ -105,10 +105,7 @@ } } - protected OracleConvertJobContext prepareJobContext() - { - return new OracleConvertJobContext(); - } + protected abstract AbstractOracleJobContext prepareJobContext(String filterPath); protected static byte[] getBytesFromBLOB(BLOB blob) throws SQLException { @@ -119,7 +116,7 @@ byte[] chunk = new byte[optimalSize]; InputStream is = blob.getBinaryStream(0); ByteBuffer buffer = null; // ByteBuffer.allocate(optimalSize); - int len = 0; + int len; try { @@ -137,6 +134,8 @@ } is.close(); + + assert buffer != null; buffer.position(0); raw = buffer.array(); } catch (IOException e) diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleJobContext.java new file mode 100644 index 0000000..1cf6f27 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleJobContext.java @@ -0,0 +1,265 @@ +package com.ximple.eofms.jobs; + +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Properties; + +import oracle.jdbc.OracleConnection; + +public abstract class AbstractOracleJobContext +{ + 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. + */ + protected static final String ENCODING = "UTF-8"; + private String _oracleHost; + private String _oracleInstance; + private String _oraclePort; + protected String _dataPath; + private OracleConnection oracleConnection = null; + protected Properties properties; + + 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(); + } + + 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) + { + OracleConvertJobContext.logger.warn(e.getMessage(), e); + } + + oracleConnection = null; + + return null; + } + + public void closeConnection() + { + try + { + if (oracleConnection != null) + { + oracleConnection.close(); + oracleConnection = null; + } + } catch (SQLException e) + { + OracleConvertJobContext.logger.warn(e.getMessage(), e); + } + } + + public void setConnectionInfo(String oracleHost, String oraclePort, String oracleInstance) + { + _oracleHost = oracleHost; + _oracleInstance = oracleInstance; + _oraclePort = oraclePort; + } + + public abstract void startTransaction(); + + public abstract void commitTransaction(); + + public abstract void rollbackTransaction(); +} diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java index b360e1d..213d056 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java @@ -64,6 +64,11 @@ return logger; } + protected OracleConvertJobContext prepareJobContext(String filterPath) + { + return new OracleConvertJobContext(filterPath); + } + public void execute(JobExecutionContext context) throws JobExecutionException { // Every job has its own job detail @@ -76,7 +81,7 @@ logger.info(jobName + " fired at " + new Date()); extractJobConfiguration(jobDetail); - OracleConvertJobContext jobContext = prepareJobContext(); + OracleConvertJobContext jobContext = prepareJobContext(_filterPath); jobContext.setConnectionInfo(_oracleHost, _oraclePort, _oracleInstance); jobContext.setLogin(_username, _password); jobContext.setShapeData(_dataPath); @@ -100,6 +105,7 @@ , null); logger.info("begin convert job:[" + map.size() + "]:testmode=" + _testMode); + jobContext.startTransaction(); for (OrderedMapIterator it = map.orderedMapIterator(); it.hasNext();) { it.next(); @@ -132,8 +138,8 @@ System.gc(); } - private OrderedMap getBlobStorageList(OracleConnection connection, String schemaSrc, String tableSrc, - OrderedMap orderedMap) throws SQLException + protected OrderedMap getBlobStorageList(OracleConnection connection, String schemaSrc, String tableSrc, + OrderedMap orderedMap) throws SQLException { if (orderedMap == null) orderedMap = new LinkedMap(99); @@ -156,7 +162,7 @@ values[i] = rs.getObject(i + 1); } - Integer key = new Integer(((BigDecimal) values[0]).intValue()); + Integer key = ((BigDecimal) values[0]).intValue(); String name = (String) values[1]; Pair pair = (Pair) orderedMap.get(key); @@ -172,8 +178,8 @@ return orderedMap; } - private OrderedMap getRawFormatStorageList(OracleConnection connection, String schemaSrc, String tableSrc, - OrderedMap orderedMap) throws SQLException + protected OrderedMap getRawFormatStorageList(OracleConnection connection, String schemaSrc, String tableSrc, + OrderedMap orderedMap) throws SQLException { if (orderedMap == null) orderedMap = new LinkedMap(99); @@ -196,7 +202,7 @@ values[i] = rs.getObject(i + 1); } - Integer key = new Integer(((BigDecimal) values[0]).intValue()); + Integer key = ((BigDecimal) values[0]).intValue(); String name = (String) values[1]; Pair pair = (Pair) orderedMap.get(key); @@ -212,8 +218,8 @@ return orderedMap; } - private void queryIgsetElement(OracleConvertJobContext jobContext, - String srcschema, String srctable) throws SQLException + protected void queryIgsetElement(OracleConvertJobContext jobContext, + String srcschema, String srctable) throws SQLException { OracleConnection connection = jobContext.getOracleConnection(); String fetchSrcStmtFmt = "SELECT IGDSELM FROM \"%s\".\"%s\" ORDER BY ROWID"; @@ -244,7 +250,6 @@ { Element element = fetchBinaryElement(raw); jobContext.putFeatureCollection(element); - } catch (Dgn7fileException e) { logger.warn("Dgn7Exception", e); @@ -252,8 +257,8 @@ } } - private void queryRawElement(OracleConvertJobContext jobContext, - String srcschema, String srctable) throws SQLException + protected void queryRawElement(OracleConvertJobContext jobContext, + String srcschema, String srctable) throws SQLException { OracleConnection connection = jobContext.getOracleConnection(); String fetchDestStmtFmt = "SELECT ELEMENT FROM \"%s\".\"%s\" ORDER BY ROWID"; @@ -288,7 +293,7 @@ try { Element element = fetchBinaryElement(rawDest); - // Feature feature = convertElementToFeature(element); + jobContext.putFeatureCollection(element); } catch (Dgn7fileException e) { logger.warn("Dgn7Exception:" + e.getMessage(), e); @@ -310,7 +315,7 @@ // track the record location int elementLength = (buffer.getShort() * 2) + 4; ElementType recordType = ElementType.forID(type); - IElementHandler handler = null; + IElementHandler handler; handler = recordType.getElementHandler(); @@ -355,23 +360,4 @@ return dgnElement; } - - private boolean equalRawData(byte[] rawSrc, byte[] rawDest) - { - if (rawSrc.length != rawDest.length) - { - return false; - } - - for (int i = 0; i < rawSrc.length; i++) - { - if (rawSrc[i] != rawDest[i]) - { - return false; - } - } - - return true; - } - } 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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java index eb653c0..96a64b4 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java @@ -1,14 +1,13 @@ package com.ximple.eofms.jobs; -import java.util.Date; import java.sql.SQLException; +import java.util.Date; -import org.quartz.Job; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.quartz.JobDetail; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.quartz.JobDetail; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; import oracle.jdbc.OracleConnection; import oracle.jdbc.OracleDatabaseMetaData; @@ -30,7 +29,7 @@ logger.info(jobName + " fired at " + new Date()); extractJobConfiguration(jobDetail); - OracleConvertJobContext jobContext = prepareJobContext(); + AbstractOracleJobContext jobContext = prepareJobContext(_filterPath); jobContext.setConnectionInfo(_oracleHost, _oraclePort, _oracleInstance); jobContext.setLogin(_username, _password); @@ -43,11 +42,16 @@ } } - private void exetcuteConvert(OracleConvertJobContext jobContext, + protected AbstractOracleJobContext prepareJobContext(String filterPath) + { + return new OracleUpgradeJobContext(); + } + + private void exetcuteConvert(AbstractOracleJobContext jobContext, String orgSchema, String dataPath) throws SQLException { OracleConnection connection = jobContext.getOracleConnection(); - OracleDatabaseMetaData metaData = (OracleDatabaseMetaData) connection.getMetaData(); - OracleStatement statement = (OracleStatement) connection.createStatement(); + OracleDatabaseMetaData metaData = (OracleDatabaseMetaData) connection.getMetaData(); + OracleStatement statement = (OracleStatement) connection.createStatement(); } } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeJobContext.java new file mode 100644 index 0000000..54cf900 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeJobContext.java @@ -0,0 +1,16 @@ +package com.ximple.eofms.jobs; + +public class OracleUpgradeJobContext extends AbstractOracleJobContext +{ + public void startTransaction() + { + } + + public void commitTransaction() + { + } + + public void rollbackTransaction() + { + } +} -- Gitblit v0.0.0-SNAPSHOT