forked from geodmms/xdgnjobs

?? ?
2008-06-12 d2986858ad69383e3b06188b4cebe9c2f714f2dd
update for EOFM-117
20 files modified
473 ■■■■ changed files
xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml 8 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java 27 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java 27 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java 1 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java 4 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatcher.java 35 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java 20 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java 20 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java 20 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java 10 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java 11 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java 11 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java 55 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java 15 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java 3 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleJobContext.java 5 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java 3 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java 3 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java 2 ●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java 193 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml
@@ -76,7 +76,7 @@
        </entry>
        <entry>
          <key>CONVERTDB</key>
          <value>false</value>
          <value>true</value>
        </entry>
        <entry>
          <key>CONVERTFILE</key>
@@ -100,12 +100,16 @@
        </entry>
        <entry>
          <key>TESTMODE</key>
          <value>true</value>
          <value>false</value>
        </entry>
        <entry>
          <key>TESTCOUNT</key>
          <value>2</value>
        </entry>
        <entry>
          <key>COPYCONNECTIVITYMODE</key>
          <value>true</value>
        </entry>
      </job-data-map>
    </job-detail>
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java
@@ -3,6 +3,8 @@
import java.util.List;
import java.util.TreeMap;
import javax.swing.event.EventListenerList;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.geotools.feature.Feature;
@@ -27,6 +29,9 @@
    GeometryFactory geometryFactory = new GeometryFactory();
    TreeMap<String, FeatureTypeBuilder> typeBuilders = new TreeMap<String, FeatureTypeBuilder>();
    TWD97GeometryConverterDecorator convertDecorator = new TWD97GeometryConverterDecorator();
    // Create the listener list
    protected EventListenerList listenerList = new EventListenerList();
    public CreateArcLineStringStrategy()
    {
@@ -82,5 +87,27 @@
        }
        return feature;
    }
    public void addCreateFeatureTypeEventListener(CreateFeatureTypeEventListener listener)
    {
        listenerList.add(CreateFeatureTypeEventListener.class, listener);
    }
    public void removeCreateFeatureTypeEventListener(CreateFeatureTypeEventListener listener)
    {
        listenerList.remove(CreateFeatureTypeEventListener.class, listener);
    }
    protected void fireFeatureTypeEvent(FeatureTypeEvent evt)
    {
        Object[] listeners = listenerList.getListenerList();
        for (int i = 0; i < listeners.length; i += 2)
        {
            if (listeners[i] == CreateFeatureTypeEventListener.class)
            {
                ((CreateFeatureTypeEventListener) listeners[i + 1]).createFeatureTypeOccurred(evt);
            }
        }
    }
}
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java
@@ -3,6 +3,8 @@
import java.util.List;
import java.util.TreeMap;
import javax.swing.event.EventListenerList;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.geotools.feature.Feature;
@@ -27,6 +29,9 @@
    GeometryFactory geometryFactory = new GeometryFactory();
    TreeMap<String, FeatureTypeBuilder> typeBuilders = new TreeMap<String, FeatureTypeBuilder>();
    TWD97GeometryConverterDecorator convertDecorator = new TWD97GeometryConverterDecorator();
    // Create the listener list
    protected EventListenerList listenerList = new EventListenerList();
    public CreateEllipseShapeStrategy()
    {
@@ -82,6 +87,28 @@
        }
        return feature;
    }
    public void addCreateFeatureTypeEventListener(CreateFeatureTypeEventListener listener)
    {
        listenerList.add(CreateFeatureTypeEventListener.class, listener);
    }
    public void removeCreateFeatureTypeEventListener(CreateFeatureTypeEventListener listener)
    {
        listenerList.remove(CreateFeatureTypeEventListener.class, listener);
    }
    protected void fireFeatureTypeEvent(FeatureTypeEvent evt)
    {
        Object[] listeners = listenerList.getListenerList();
        for (int i = 0; i < listeners.length; i += 2)
        {
            if (listeners[i] == CreateFeatureTypeEventListener.class)
            {
                ((CreateFeatureTypeEventListener) listeners[i + 1]).createFeatureTypeOccurred(evt);
            }
        }
    }
}
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java
@@ -139,7 +139,6 @@
        return feature;
    }
    public void addCreateFeatureTypeEventListener(CreateFeatureTypeEventListener listener)
    {
        listenerList.add(CreateFeatureTypeEventListener.class, listener);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java
@@ -11,4 +11,8 @@
    public Feature execute(Element element);
    void setUseLongName(boolean useLongName);
    public void addCreateFeatureTypeEventListener(CreateFeatureTypeEventListener listener);
    public void removeCreateFeatureTypeEventListener(CreateFeatureTypeEventListener listener);
}
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatcher.java
@@ -2,14 +2,19 @@
import java.util.LinkedList;
import javax.swing.event.EventListenerList;
import org.geotools.feature.Feature;
import com.ximple.io.dgn7.Element;
public class ElementDispatcher
public class ElementDispatcher implements CreateFeatureTypeEventListener
{
    private LinkedList<ElementDispatchableFilter> rules;
    private boolean useLongName = false;
    // Create the listener list
    protected EventListenerList listenerList = new EventListenerList();
    public ElementDispatcher()
    {
@@ -24,6 +29,7 @@
    public void addRule(ElementDispatchableFilter rule)
    {
        rule.setUseLongName(useLongName);
        rule.addCreateFeatureTypeEventListener(this);
        rules.add(rule);
    }
@@ -55,4 +61,31 @@
        }
        return null;
    }
    public void addCreateFeatureTypeEventListener(CreateFeatureTypeEventListener listener)
    {
        listenerList.add(CreateFeatureTypeEventListener.class, listener);
    }
    public void removeCreateFeatureTypeEventListener(CreateFeatureTypeEventListener listener)
    {
        listenerList.remove(CreateFeatureTypeEventListener.class, listener);
    }
    protected void fireFeatureTypeEvent(FeatureTypeEvent evt)
    {
        Object[] listeners = listenerList.getListenerList();
        for (int i = 0; i < listeners.length; i += 2)
        {
            if (listeners[i] == CreateFeatureTypeEventListener.class)
            {
                ((CreateFeatureTypeEventListener) listeners[i + 1]).createFeatureTypeOccurred(evt);
            }
        }
    }
    public void createFeatureTypeOccurred(FeatureTypeEvent evt)
    {
        fireFeatureTypeEvent(evt);
    }
}
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java
@@ -7,6 +7,7 @@
import com.ximple.io.dgn7.Element;
import com.ximple.io.dgn7.FrammeAttributeData;
import com.ximple.eofms.util.StringUtils;
public class TypeCompIdDispatchableFilter extends AbstractFLinkageDispatchableFilter
        implements CreateFeatureTypeEventListener
@@ -58,7 +59,16 @@
    public void setCreateStrategy(CreateFeatureTypeStrategy createStrategy)
    {
        if (this.createStrategy != null)
        {
            this.createStrategy.removeCreateFeatureTypeEventListener(this);
        }
        this.createStrategy = createStrategy;
        if (this.createStrategy != null)
        {
            this.createStrategy.addCreateFeatureTypeEventListener(this);
        }
    }
    public boolean isUseLongName()
@@ -103,7 +113,15 @@
    public String getFeatureTypeName(Element element)
    {
        StringBuilder sb = new StringBuilder();
        sb.append(getName());
        String name = getName().toLowerCase();
        String[] pices = StringUtils.splitToArray(name, ".");
        boolean bfirst = true;
        for (String temp : pices)
        {
            if (bfirst) bfirst = false;
            else sb.append('-');
            sb.append(temp);
        }
        if (useLongName)
        {
            sb.append("_");
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java
@@ -7,6 +7,7 @@
import com.ximple.io.dgn7.Element;
import com.ximple.io.dgn7.FrammeAttributeData;
import com.ximple.eofms.util.StringUtils;
public class TypeCompLevelIdDispatchableFilter extends AbstractFLinkageDispatchableFilter
        implements CreateFeatureTypeEventListener
@@ -70,7 +71,16 @@
    public void setCreateStrategy(CreateFeatureTypeStrategy createStrategy)
    {
        if (this.createStrategy != null)
        {
            this.createStrategy.removeCreateFeatureTypeEventListener(this);
        }
        this.createStrategy = createStrategy;
        if (this.createStrategy != null)
        {
            this.createStrategy.addCreateFeatureTypeEventListener(this);
        }
    }
@@ -112,7 +122,15 @@
    public String getFeatureTypeName(Element element)
    {
        StringBuilder sb = new StringBuilder();
        sb.append(getName());
        String name = getName().toLowerCase();
        String[] pices = StringUtils.splitToArray(name, ".");
        boolean bfirst = true;
        for (String temp : pices)
        {
            if (bfirst) bfirst = false;
            else sb.append('-');
            sb.append(temp);
        }
        if (useLongName)
        {
            sb.append("_");
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java
@@ -7,6 +7,7 @@
import com.ximple.io.dgn7.Element;
import com.ximple.io.dgn7.FrammeAttributeData;
import com.ximple.eofms.util.StringUtils;
public class TypeIdDispatchableFilter extends AbstractFLinkageDispatchableFilter implements CreateFeatureTypeEventListener
{
@@ -44,7 +45,16 @@
    public void setCreateStrategy(CreateFeatureTypeStrategy createStrategy)
    {
        if (this.createStrategy != null)
        {
            this.createStrategy.removeCreateFeatureTypeEventListener(this);
        }
        this.createStrategy = createStrategy;
        if (this.createStrategy != null)
        {
            this.createStrategy.addCreateFeatureTypeEventListener(this);
        }
    }
    public boolean isDispatchable(Element element)
@@ -84,7 +94,15 @@
    public String getFeatureTypeName(Element element)
    {
        StringBuilder sb = new StringBuilder();
        sb.append(getName());
        String name = getName().toLowerCase();
        String[] pices = StringUtils.splitToArray(name, ".");
        boolean bfirst = true;
        for (String temp : pices)
        {
            if (bfirst) bfirst = false;
            else sb.append('-');
            sb.append(temp);
        }
        if (useLongName)
        {
            sb.append("_");
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java
@@ -53,6 +53,7 @@
    private static final String ORAPASS = "ORAPASS";
    private static final String TESTMODE = "TESTMODE";
    private static final String TESTCOUNT = "TESTCOUNT";
    private static final String COPYCONNECTIVITYMODE = "COPYCONNECTIVITYMODE";
    protected static OracleDataStoreFactory dataStoreFactory = new OracleDataStoreFactory();
@@ -70,6 +71,7 @@
    protected String _createDummy;
    protected ArrayList<String> _orgSchema = new ArrayList<String>();
    protected boolean _testMode = false;
    protected boolean _copyConnectivityMode = false;
    protected int _testCount = -1;
    protected OracleDataStore sourceDataStore;
    private boolean driverFound = true;
@@ -131,6 +133,7 @@
        }
        _testMode = dataMap.getBooleanFromString(TESTMODE);
        _testCount = dataMap.getIntFromString(TESTCOUNT);
        _copyConnectivityMode = dataMap.getBooleanFromString(COPYCONNECTIVITYMODE);
        // Validate the required input
        if (_dataPath == null)
@@ -348,6 +351,11 @@
                !_createDummy.equalsIgnoreCase("no") && !_createDummy.equalsIgnoreCase("0");
    }
    public boolean isCopyConnectivityMode()
    {
        return _copyConnectivityMode;
    }
    public DataStore getSourceDataStore()
    {
        return sourceDataStore;
@@ -376,7 +384,7 @@
        map.put("namespace", null);
        if (!map.containsKey(OracleDataStoreFactory.MAXCONN.key))
        {
            map.put(OracleDataStoreFactory.MAXCONN.key, "2");
            map.put(OracleDataStoreFactory.MAXCONN.key, "10");
        }
        if (!map.containsKey(OracleDataStoreFactory.MINCONN.key))
        {
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java
@@ -13,6 +13,7 @@
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.sql.Connection;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
@@ -206,7 +207,7 @@
        {
            logger.info("-- step:clearOutputDatabase --");
            clearOutputDatabase();
            boolean bFirst = true;
            boolean bFirst = isCopyConnectivityMode();
            if (checkConvertDB())
            {
                logger.info("-- step:convertOracleDB --");
@@ -278,7 +279,7 @@
     */
    private void copyConnectivity(OracleConvertMySQLJobContext jobContext) throws SQLException
    {
        OracleConnection connection = jobContext.getOracleConnection();
        Connection connection = jobContext.getOracleConnection();
        Statement stmt = connection.createStatement();
        stmt.execute(AbstractOracleJobContext.TRUNCATE_CONNECTIVITY_WEBCHECK);
        stmt.execute(AbstractOracleJobContext.COPY_CONNECTIVITY_TO_WEBCHECK);
@@ -343,7 +344,7 @@
        System.gc();
    }
    protected OrderedMap getBlobStorageList(OracleConnection connection, String schemaSrc, String tableSrc,
    protected OrderedMap getBlobStorageList(Connection connection, String schemaSrc, String tableSrc,
                                            OrderedMap orderedMap) throws SQLException
    {
        if (orderedMap == null)
@@ -436,7 +437,7 @@
    protected void queryIgsetElement(OracleConvertMySQLJobContext jobContext,
                                     String srcschema, String srctable) throws SQLException
    {
        OracleConnection connection = jobContext.getOracleConnection();
        Connection connection = jobContext.getOracleConnection();
        String fetchSrcStmtFmt = "SELECT IGDSELM FROM \"%s\".\"%s\" ORDER BY ROWID";
        PrintfFormat spf = new PrintfFormat(fetchSrcStmtFmt);
        String fetchSrcStmt = spf.sprintf(new Object[]{srcschema, srctable});
@@ -478,7 +479,7 @@
    protected void queryRawElement(OracleConvertMySQLJobContext jobContext,
                                   String srcschema, String srctable) throws SQLException
    {
        OracleConnection connection = jobContext.getOracleConnection();
        Connection connection = jobContext.getOracleConnection();
        String fetchDestStmtFmt = "SELECT ELEMENT FROM \"%s\".\"%s\" ORDER BY ROWID";
        PrintfFormat spf = new PrintfFormat(fetchDestStmtFmt);
        String fetchDestStmt = spf.sprintf(new Object[]{srcschema, srctable});
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java
@@ -13,6 +13,7 @@
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.sql.Connection;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
@@ -206,7 +207,7 @@
        {
            logger.info("-- step:clearOutputDatabase --");
            clearOutputDatabase();
            boolean bFirst = true;
            boolean bFirst = isCopyConnectivityMode();
            if (checkConvertDB())
            {
                logger.info("-- step:convertOracleDB --");
@@ -278,7 +279,7 @@
     */
    private void copyConnectivity(OracleConvertOraSDOJobContext jobContext) throws SQLException
    {
        OracleConnection connection = jobContext.getOracleConnection();
        Connection connection = jobContext.getOracleConnection();
        Statement stmt = connection.createStatement();
        stmt.execute(AbstractOracleJobContext.TRUNCATE_CONNECTIVITY_WEBCHECK);
        stmt.execute(AbstractOracleJobContext.COPY_CONNECTIVITY_TO_WEBCHECK);
@@ -343,7 +344,7 @@
        System.gc();
    }
    protected OrderedMap getBlobStorageList(OracleConnection connection, String schemaSrc, String tableSrc,
    protected OrderedMap getBlobStorageList(Connection connection, String schemaSrc, String tableSrc,
                                            OrderedMap orderedMap) throws SQLException
    {
        if (orderedMap == null)
@@ -436,7 +437,7 @@
    protected void queryIgsetElement(OracleConvertOraSDOJobContext jobContext,
                                     String srcschema, String srctable) throws SQLException
    {
        OracleConnection connection = jobContext.getOracleConnection();
        Connection connection = jobContext.getOracleConnection();
        String fetchSrcStmtFmt = "SELECT IGDSELM FROM \"%s\".\"%s\" ORDER BY ROWID";
        PrintfFormat spf = new PrintfFormat(fetchSrcStmtFmt);
        String fetchSrcStmt = spf.sprintf(new Object[]{srcschema, srctable});
@@ -478,7 +479,7 @@
    protected void queryRawElement(OracleConvertOraSDOJobContext jobContext,
                                   String srcschema, String srctable) throws SQLException
    {
        OracleConnection connection = jobContext.getOracleConnection();
        Connection connection = jobContext.getOracleConnection();
        String fetchDestStmtFmt = "SELECT ELEMENT FROM \"%s\".\"%s\" ORDER BY ROWID";
        PrintfFormat spf = new PrintfFormat(fetchDestStmtFmt);
        String fetchDestStmt = spf.sprintf(new Object[]{srcschema, srctable});
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java
@@ -13,6 +13,7 @@
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.sql.Connection;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
@@ -98,36 +99,7 @@
    protected Map<String, String> pgProperties;
    protected PostgisDataStore targetDataStore;
    /*
       PostgisDataStore pg = new PostgisDataStore(pool, f.schema, getName(),
               PostgisDataStore.OPTIMIZE_SQL);
       pg.setWKBEnabled(WKB_ENABLED);
       pg.setEstimatedExtent(true);
       pg.setFIDMapper("road", new TypedFIDMapper(new BasicFIDMapper("fid", 255, false), "road"));
       pg.setFIDMapper("river", new TypedFIDMapper(new BasicFIDMapper("fid", 255, false), "river"));
       pg.setFIDMapper("testset",
           new TypedFIDMapper(new BasicFIDMapper("gid", 255, true), "testset"));
    */
    /*
        Transaction transaction = new DefaultTransaction("attemptWriteFW");
        FeatureWriter writer = ds.getFeatureWriter(table, transaction);
        Feature feature;
        while (writer.hasNext()) {
            feature = (Feature) writer.next();
        }
        feature = (Feature) writer.next();
        feature.setAttribute(0, "test");
        writer.write();
        String id = feature.getID();
        transaction.commit();
        transaction.close();
     */
    // protected OracleConvertPostGISJobContext oracleJobContext;
    public Log getLogger()
    {
@@ -136,6 +108,13 @@
    protected AbstractOracleJobContext prepareJobContext(String filterPath)
    {
        /*
        if (oracleJobContext == null)
        {
            oracleJobContext = new OracleConvertPostGISJobContext(getDataPath(), getTargetDataStore(), filterPath);
        }
        return oracleJobContext;
        */
        return new OracleConvertPostGISJobContext(getDataPath(), getTargetDataStore(), filterPath);
    }
@@ -235,7 +214,7 @@
        {
            logger.info("-- step:clearOutputDatabase --");
            clearOutputDatabase();
            boolean bFirst = true;
            boolean bFirst = isCopyConnectivityMode();
            if (checkConvertDB())
            {
                logger.info("-- step:convertOracleDB --");
@@ -308,7 +287,7 @@
     */
    private void copyConnectivity(OracleConvertPostGISJobContext jobContext) throws SQLException
    {
        OracleConnection connection = jobContext.getOracleConnection();
        Connection connection = jobContext.getOracleConnection();
        Statement stmt = connection.createStatement();
        stmt.execute(AbstractOracleJobContext.TRUNCATE_CONNECTIVITY_WEBCHECK);
        stmt.execute(AbstractOracleJobContext.COPY_CONNECTIVITY_TO_WEBCHECK);
@@ -318,8 +297,8 @@
                                 String querySchema, String dataPath) throws SQLException
    {
        int order = 0;
        OrderedMap map = getBlobStorageList(jobContext.getOracleConnection(), querySchema, "SD$SPACENODES"
                , null);
        OrderedMap map = getBlobStorageList(jobContext.getOracleConnection(),
                querySchema, "SD$SPACENODES" , null);
        logger.info("begin convert job:[" + map.size() + "]:testmode=" + _testMode);
@@ -368,12 +347,12 @@
        jobContext.getExecutionContext().put("ConvertDgn2PostGISJobProgress", 100);
        jobContext.commitTransaction();
        jobContext.resetFeatureContext();
        logger.info("end convert job:[" + order + "]");
        System.gc();
    }
    protected OrderedMap getBlobStorageList(OracleConnection connection, String schemaSrc, String tableSrc,
    protected OrderedMap getBlobStorageList(Connection connection, String schemaSrc, String tableSrc,
                                            OrderedMap orderedMap) throws SQLException
    {
        if (orderedMap == null)
@@ -466,7 +445,7 @@
    protected void queryIgsetElement(OracleConvertPostGISJobContext jobContext,
                                     String srcschema, String srctable) throws SQLException
    {
        OracleConnection connection = jobContext.getOracleConnection();
        Connection connection = jobContext.getOracleConnection();
        String fetchSrcStmtFmt = "SELECT IGDSELM FROM \"%s\".\"%s\" ORDER BY ROWID";
        PrintfFormat spf = new PrintfFormat(fetchSrcStmtFmt);
        String fetchSrcStmt = spf.sprintf(new Object[]{srcschema, srctable});
@@ -508,7 +487,7 @@
    protected void queryRawElement(OracleConvertPostGISJobContext jobContext,
                                   String srcschema, String srctable) throws SQLException
    {
        OracleConnection connection = jobContext.getOracleConnection();
        Connection connection = jobContext.getOracleConnection();
        String fetchDestStmtFmt = "SELECT ELEMENT FROM \"%s\".\"%s\" ORDER BY ROWID";
        PrintfFormat spf = new PrintfFormat(fetchDestStmtFmt);
        String fetchDestStmt = spf.sprintf(new Object[]{srcschema, srctable});
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java
@@ -13,6 +13,7 @@
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.sql.Connection;
import java.util.Date;
import org.apache.commons.collections.OrderedMap;
@@ -59,7 +60,6 @@
    final static Log logger = LogFactory.getLog(OracleConvertDgn2ShpJob.class);
    private static final int FETCHSIZE = 30;
    private static final int BATCHSIZE = 25;
    private static final int COMMITSIZE = 20;
    class Pair
@@ -112,7 +112,7 @@
        {
            logger.info("-- step:clearOutputDirectory --");
            clearOutputDirectory();
            boolean bFirst = true;
            boolean bFirst = isCopyConnectivityMode();
            if (checkConvertDB())
            {
                logger.info("-- step:convertOracleDB --");
@@ -127,9 +127,10 @@
                    jobContext.setExecutionContext(context);
                    if (bFirst)
                    {
                        copyConnectivity(jobContext);
                    else
                        bFirst = false;
                    }
                    logger.info("----- start schema:" + orgSchema + " -----");
                    exetcuteConvert(jobContext, orgSchema, _dataPath);
@@ -180,7 +181,7 @@
     */
    private void copyConnectivity(OracleConvertShapefilesJobContext jobContext) throws SQLException
    {
        OracleConnection connection = jobContext.getOracleConnection();
        Connection connection = jobContext.getOracleConnection();
        Statement stmt = connection.createStatement();
        stmt.execute(OracleConvertShapefilesJobContext.TRUNCATE_CONNECTIVITY_WEBCHECK);
        stmt.execute(OracleConvertShapefilesJobContext.COPY_CONNECTIVITY_TO_WEBCHECK);
@@ -245,7 +246,7 @@
        System.gc();
    }
    protected OrderedMap getBlobStorageList(OracleConnection connection, String schemaSrc, String tableSrc,
    protected OrderedMap getBlobStorageList(Connection connection, String schemaSrc, String tableSrc,
                                            OrderedMap orderedMap) throws SQLException
    {
        if (orderedMap == null)
@@ -338,7 +339,7 @@
    protected void queryIgsetElement(OracleConvertShapefilesJobContext jobContext,
                                     String srcschema, String srctable) throws SQLException
    {
        OracleConnection connection = jobContext.getOracleConnection();
        Connection connection = jobContext.getOracleConnection();
        String fetchSrcStmtFmt = "SELECT IGDSELM FROM \"%s\".\"%s\" ORDER BY ROWID";
        PrintfFormat spf = new PrintfFormat(fetchSrcStmtFmt);
        String fetchSrcStmt = spf.sprintf(new Object[]{srcschema, srctable});
@@ -380,7 +381,7 @@
    protected void queryRawElement(OracleConvertShapefilesJobContext jobContext,
                                   String srcschema, String srctable) throws SQLException
    {
        OracleConnection connection = jobContext.getOracleConnection();
        Connection connection = jobContext.getOracleConnection();
        String fetchDestStmtFmt = "SELECT ELEMENT FROM \"%s\".\"%s\" ORDER BY ROWID";
        PrintfFormat spf = new PrintfFormat(fetchDestStmtFmt);
        String fetchDestStmt = spf.sprintf(new Object[]{srcschema, srctable});
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java
@@ -1,6 +1,7 @@
package com.ximple.eofms.jobs;
import java.sql.SQLException;
import java.sql.Connection;
import java.util.Date;
import org.apache.commons.logging.Log;
@@ -65,7 +66,7 @@
    private void exetcuteConvert(AbstractOracleJobContext jobContext,
                                 String orgSchema, String dataPath) throws SQLException
    {
        OracleConnection connection = jobContext.getOracleConnection();
        Connection connection = jobContext.getOracleConnection();
        OracleDatabaseMetaData metaData = (OracleDatabaseMetaData) connection.getMetaData();
        OracleStatement statement = (OracleStatement) connection.createStatement();
    }
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleJobContext.java
@@ -2,6 +2,7 @@
import java.io.IOException;
import java.util.Properties;
import java.sql.Connection;
import org.apache.commons.logging.Log;
import org.geotools.data.DataStore;
@@ -236,13 +237,13 @@
        }
    }
    public OracleConnection getOracleConnection()
    public Connection getOracleConnection()
    {
        try
        {
            if (sourceDataStore != null)
            {
                return (OracleConnection) sourceDataStore.getConnection(Transaction.AUTO_COMMIT);
                return sourceDataStore.getConnection(Transaction.AUTO_COMMIT);
            }
        } catch (IOException e)
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java
@@ -432,9 +432,10 @@
                    getLogger().warn("Error: " + geomAttribute.getLocalName() + " unknown type!!!");
                }
                String indexName = tableName.replace('-', '_');
                //also build a spatial index on each geometry column.
                sql = new StringBuffer("CREATE INDEX spatial_");
                sql.append(tableName);
                sql.append(indexName);
                sql.append("_");
                sql.append(anAttributeType.getLocalName().toLowerCase());
                sql.append(" ON ");
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java
@@ -438,9 +438,10 @@
                    getLogger().warn("Error: " + geomAttribute.getLocalName() + " unknown type!!!");
                }
                String indexName = tableName.replace('-', '_');
                //also build a spatial index on each geometry column.
                sql = new StringBuffer("CREATE INDEX spatial_");
                sql.append(tableName);
                sql.append(indexName);
                sql.append("_");
                sql.append(anAttributeType.getLocalName().toLowerCase());
                sql.append(" ON ");
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java
@@ -188,7 +188,7 @@
                    i++;
                    */
                }
                stmtTexts.clear();
                conn.setAutoCommit(autoCommit);
                logger.debug("End Save into PostGIS:" + featureType.getTypeName());
            }
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java
@@ -7,6 +7,8 @@
import java.net.URL;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -26,19 +28,25 @@
import org.geotools.feature.FeatureType;
import org.geotools.feature.IllegalAttributeException;
import org.geotools.feature.SimpleFeature;
import org.geotools.feature.FeatureTypeBuilder;
import org.geotools.feature.SchemaException;
import org.quartz.JobExecutionContext;
import org.xml.sax.SAXException;
import org.postgresql.util.PSQLException;
import com.vividsolutions.jts.util.Assert;
import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter;
import com.ximple.eofms.filter.ElementDispatcher;
import com.ximple.eofms.filter.CreateFeatureTypeEventListener;
import com.ximple.eofms.filter.FeatureTypeEvent;
import com.ximple.eofms.jobs.OracleElementLogger;
import com.ximple.io.dgn7.ComplexElement;
import com.ximple.io.dgn7.Element;
import com.ximple.io.dgn7.FrammeAttributeData;
public class OracleConvertPostGISJobContext extends AbstractOracleToPostGISJobContext
    implements CreateFeatureTypeEventListener
{
    static Log logger = LogFactory.getLog(OracleConvertPostGISJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
@@ -62,22 +70,25 @@
    private ElementDispatcher elementDispatcher;
    private HashMap featuresContext = new HashMap();
    private HashMap<String, FeatureWriter> featuresWriterContext = new HashMap<String, FeatureWriter>();
    private PessimisticMapWrapper txFeaturesContext;
    // private HashMap featuresContext = new HashMap();
    // private HashMap<String, FeatureWriter> featuresWriterContext = new HashMap<String, FeatureWriter>();
    // private PessimisticMapWrapper txFeaturesContext;
    private HashMap<FeatureType, ArrayList<String>> txFeaturesContext = new HashMap<FeatureType, ArrayList<String>>();
    private JobExecutionContext executionContext;
    private String currentSchema = null;
    private String pgCurrentSchema = null;
    private boolean schemaChanged = false;
    private boolean dropTableMode = true;
    public OracleConvertPostGISJobContext(String dataPath, DataStore pgDS, String filterConfig)
    {
        super(dataPath, pgDS);
        _filterConfig = filterConfig;
        elementDispatcher = createElementDispatcher();
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        elementDispatcher.addCreateFeatureTypeEventListener(this);
        // txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
    }
    private ElementDispatcher createElementDispatcher()
@@ -154,15 +165,14 @@
        if (!txFeaturesContext.containsKey(feature.getFeatureType()))
        {
            txFeaturesContext.put(feature.getFeatureType(), new ArrayList());
            txFeaturesContext.put(feature.getFeatureType(), new ArrayList<String>());
        }
        ArrayList arrayList = (ArrayList) txFeaturesContext.get(feature.getFeatureType());
        arrayList.add(feature);
        ArrayList<String> arrayList = txFeaturesContext.get(feature.getFeatureType());
        arrayList.add(makeInsertSql(feature, -1));
    }
    public void startTransaction()
    {
        //txFeaturesContext.startTransaction();
    }
    public void commitTransaction()
@@ -176,7 +186,7 @@
            logger.debug("Transaction is empty.");
        }
        if (!featuresContext.isEmpty())
        if (!txFeaturesContext.isEmpty())
        {
            updateDataStore();
        }
@@ -187,64 +197,68 @@
    public void rollbackTransaction()
    {
        //txFeaturesContext.rollbackTransaction();
        if (!featuresContext.isEmpty())
        if (!txFeaturesContext.isEmpty())
        {
            updateDataStore();
        }
    }
    public void resetFeatureContext()
    {
        txFeaturesContext.clear();
    }
    private void updateDataStore()
    {
        Iterator it = featuresContext.keySet().iterator();
        Iterator<FeatureType> it = txFeaturesContext.keySet().iterator();
        String currentStmt = null;
        try
        {
            while (it.hasNext())
            {
                FeatureType featureType = (FeatureType) it.next();
                FeatureWriter writer = null;
                if (featuresWriterContext.containsKey(featureType.getTypeName()))
                {
                    writer = featuresWriterContext.get(featureType.getTypeName());
                } else
                {
                    DataStore postGisDataStore = null;
                    postGisDataStore = dataStoreFactory.createDataStore(properties);
                FeatureType featureType = it.next();
                logger.debug("Begin Save into PostGIS:" + featureType.getTypeName());
                    boolean existTable = isExistFeature(featureType);
                ArrayList<String> stmtTexts = txFeaturesContext.get(featureType);
                Connection conn = getConnection();
                boolean autoCommit = conn.getAutoCommit();
                conn.setAutoCommit(true);
                    if (!existTable)
                for (String stmtText : stmtTexts)
                    {
                        postGisDataStore.createSchema(featureType);
                        writer = postGisDataStore.getFeatureWriter(featureType.getTypeName(),
                                Transaction.AUTO_COMMIT);
                    } else
                    currentStmt = stmtText;
                    Statement stmt = conn.createStatement();
                    try
                    {
                        writer = postGisDataStore.getFeatureWriterAppend(featureType.getTypeName(),
                                Transaction.AUTO_COMMIT);
                    }
                    featuresWriterContext.put(featureType.getTypeName(), writer);
                }
                ArrayList features = (ArrayList) featuresContext.get(featureType);
                Iterator itFeature = features.iterator();
                while (itFeature.hasNext())
                        stmt.execute(stmtText);
                    } catch (PSQLException e)
                {
                    Feature feature = (Feature) itFeature.next();
                    ((SimpleFeature) writer.next()).setAttributes(feature.getAttributes(null));
                }
                //writer.close();
                logger.debug("End Save PostGIS:" + featureType.getTypeName());
            }
            featuresContext.clear();
        } catch (MalformedURLException e)
                        if (currentStmt != null)
        {
                            logger.error("Execute:" + currentStmt);
                        }
                        logger.error(e.getServerErrorMessage());
            logger.error(e.getMessage(), e);
        } catch (IllegalAttributeException e)
                    } finally {
                        stmt.close();
                    }
                    /*
                    if ((i % BATCHSIZE) != 0)
        {
            logger.error(e.getMessage(), e);
        } catch (IOException e)
                        stmt.addBatch(stmtText);
                    } else {
                        stmt.addBatch(stmtText);
                        stmt.executeBatch();
                    }
                    i++;
                    */
                }
                stmtTexts.clear();
                conn.setAutoCommit(autoCommit);
                logger.debug("End Save into PostGIS:" + featureType.getTypeName());
            }
        } catch (SQLException e)
        {
            logger.error(e.getMessage(), e);
        }
@@ -268,13 +282,6 @@
     */
    public void closeFeatureWriter() throws IOException
    {
        for (FeatureWriter featureWriter : this.featuresWriterContext.values())
        {
            featureWriter.close();
        }
        this.featuresWriterContext.clear();
    }
    protected OracleElementLogger getElementLogger()
@@ -302,4 +309,80 @@
    {
        return logger;
    }
    public boolean isDropTableMode()
    {
        return dropTableMode;
    }
    public void setDropTableMode(boolean dropTableMode)
    {
        this.dropTableMode = dropTableMode;
    }
    public void createFeatureTypeOccurred(FeatureTypeEvent evt)
    {
        try
        {
            clearFeatureData(evt.getFeatureType());
        } catch (SchemaException e)
        {
            logger.warn(e.getMessage(), e);
        }
    }
    protected void clearFeatureData(FeatureType featureType) throws SchemaException
    {
        String featureName = featureType.getTypeName();
        if (isExistFeature(featureType))
        {
            try
            {
                Connection conn = targetDataStore.getConnection(Transaction.AUTO_COMMIT);
                if (dropTableMode)
                {
                    dropGeometryColumn(conn, featureName,
                            featureType.getDefaultGeometry().getLocalName());
                    dropTable(conn, featureName);
                    ArrayList<String> schemaTexts = createSchemaTexts(featureType);
                    for (String stmtText : schemaTexts)
                    {
                        Statement stmt = conn.createStatement();
                        stmt.execute(stmtText);
                        stmt.close();
                    }
                } else {
                    deleteTable(conn, featureName);
                }
                conn.close();
            } catch (IOException e)
            {
                logger.warn(e.getMessage(), e);
            } catch (SQLException e)
            {
                logger.warn(e.getMessage(), e);
            }
        } else
        {
            try
            {
                Connection conn = targetDataStore.getConnection(Transaction.AUTO_COMMIT);
                ArrayList<String> schemaTexts = createSchemaTexts(featureType);
                for (String stmtText : schemaTexts)
                {
                    Statement stmt = conn.createStatement();
                    stmt.execute(stmtText);
                    stmt.close();
                }
                conn.close();
            } catch (IOException e)
            {
                logger.warn(e.getMessage(), e);
            } catch (SQLException e)
            {
                logger.warn(e.getMessage(), e);
            }
        }
    }
}