forked from geodmms/xdgnjobs

?? ?
2008-03-25 b2f56dae55d1de8f7378f22b2466e314b1e30cc7
update for EOFM-15
8 files modified
2 files added
755 ■■■■ changed files
.gitattributes 2 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractDispatchableFilter.java 2 ●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java 23 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java 38 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java 11 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleJobContext.java 265 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java 52 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java 324 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java 22 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeJobContext.java 16 ●●●●● patch | view | raw | blame | history
.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
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);
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;
    }
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;
    }
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)
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleJobContext.java
New file
@@ -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();
}
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;
    }
}
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);
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();
    }
}
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeJobContext.java
New file
@@ -0,0 +1,16 @@
package com.ximple.eofms.jobs;
public class OracleUpgradeJobContext extends AbstractOracleJobContext
{
    public void startTransaction()
    {
    }
    public void commitTransaction()
    {
    }
    public void rollbackTransaction()
    {
    }
}