From be3f6f9762dd15177477a7bcf6e11a2e27c70e57 Mon Sep 17 00:00:00 2001
From: unknown <yuanhung@ximple.com.tw>
Date: Mon, 04 Aug 2014 18:16:17 +0800
Subject: [PATCH] bug fix a.error @ geometry column not exist b.error @ drop table

---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java |   34 +++--------
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DMMSNddUpdateJob.java                                  |    9 +++
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java    |    9 +++
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java                       |   81 ++++++++++++---------------
 4 files changed, 63 insertions(+), 70 deletions(-)

diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DMMSNddUpdateJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DMMSNddUpdateJob.java
index c35dcbb..fe42bf4 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DMMSNddUpdateJob.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DMMSNddUpdateJob.java
@@ -598,6 +598,15 @@
                             yy,mm,dd,t0,t1
                     )  ,
                     new String[]{});
+
+            String strSQLDeletePast="delete ndd.currdata where yy<>'%s' and mm<> '%s' and dd<> '%s' and tt<>'%s%s' where sr=2";
+
+            sqlExec(postsql,
+                    String.format(strSQLDeletePast,
+                            yy,mm,dd,t0,t1
+                    )  ,
+                    new String[]{});
+
             logger.info(String.format("next xml"));
         }
         logger.info(String.format("done"));
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java
index e8cd4c9..01b045e 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java
@@ -1,37 +1,21 @@
 package com.ximple.eofms.jobs;
 
-import java.io.File;
-import java.io.FileFilter;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.io.PushbackReader;
-import java.io.StringReader;
-import java.math.BigDecimal;
-import java.nio.BufferOverflowException;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.channels.FileChannel;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.sql.Types;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
+import com.ximple.eofms.jobs.context.AbstractOracleJobContext;
+import com.ximple.eofms.jobs.context.postgis.FeatureDgnConvertPostGISJobContext;
+import com.ximple.eofms.jobs.context.postgis.GeneralDgnConvertPostGISJobContext;
+import com.ximple.eofms.jobs.context.postgis.IndexDgnConvertPostGISJobContext;
+import com.ximple.eofms.jobs.context.postgis.OracleConvertPostGISJobContext;
 import com.ximple.eofms.util.*;
+import com.ximple.io.dgn7.*;
+import com.ximple.util.PrintfFormat;
+import oracle.jdbc.OracleConnection;
+import oracle.jdbc.OracleResultSet;
+import oracle.sql.ARRAY;
+import oracle.sql.BLOB;
 import org.apache.commons.collections.OrderedMap;
 import org.apache.commons.collections.OrderedMapIterator;
 import org.apache.commons.collections.map.LinkedMap;
 import org.apache.commons.dbcp.DelegatingConnection;
-import org.apache.commons.dbcp.PoolingConnection;
-import org.apache.commons.dbcp.PoolingDataSource;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.geotools.data.DataStore;
@@ -48,24 +32,15 @@
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
-import oracle.jdbc.OracleConnection;
-import oracle.jdbc.OracleResultSet;
-import oracle.sql.ARRAY;
-import oracle.sql.BLOB;
-
-import com.ximple.eofms.jobs.context.AbstractOracleJobContext;
-import com.ximple.eofms.jobs.context.postgis.FeatureDgnConvertPostGISJobContext;
-import com.ximple.eofms.jobs.context.postgis.GeneralDgnConvertPostGISJobContext;
-import com.ximple.eofms.jobs.context.postgis.IndexDgnConvertPostGISJobContext;
-import com.ximple.eofms.jobs.context.postgis.OracleConvertPostGISJobContext;
-import com.ximple.io.dgn7.ComplexElement;
-import com.ximple.io.dgn7.Dgn7fileException;
-import com.ximple.io.dgn7.Dgn7fileReader;
-import com.ximple.io.dgn7.Element;
-import com.ximple.io.dgn7.ElementType;
-import com.ximple.io.dgn7.IElementHandler;
-import com.ximple.io.dgn7.Lock;
-import com.ximple.util.PrintfFormat;
+import java.io.*;
+import java.math.BigDecimal;
+import java.nio.BufferOverflowException;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.channels.FileChannel;
+import java.sql.*;
+import java.util.*;
+import java.util.Date;
 
 public class OracleConvertDgn2PostGISJob extends AbstractOracleDatabaseJob {
     final static Log logger = LogFactory.getLog(OracleConvertDgn2PostGISJob.class);
@@ -379,7 +354,12 @@
             logger.warn(ex.getMessage(), ex);
             throw new JobExecutionException("IO error. " + ex.getMessage(), ex);
         } finally {
+            try{
             disconnect();
+            }catch(Exception doubleEx)
+            {
+
+            }
         }
         logger.warn(jobName + " end at " + new Date());
     }
@@ -1238,10 +1218,15 @@
     }
 
     protected void disconnect() {
+        try{
         super.disconnect();
         if (targetDataStore != null) {
             targetDataStore.dispose();
             targetDataStore = null;
+        }
+        }catch (Exception ex)
+        {
+            logger.warn(ex.getMessage());
         }
     }
 
@@ -1308,7 +1293,13 @@
         } finally {
             JDBCUtils.close(rs);
             JDBCUtils.close(stmt);
+            try{
             JDBCUtils.close(connection, Transaction.AUTO_COMMIT, null);
+
+            }catch(Exception doubleException)
+            {
+
+            }
         }
         return targetSchema;
     }
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java
index 359e949..90750b0 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java
@@ -1,17 +1,9 @@
 package com.ximple.eofms.jobs.context.postgis;
 
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.*;
-
-import com.vividsolutions.jts.geom.LinearRing;
+import com.vividsolutions.jts.geom.*;
+import com.ximple.eofms.jobs.context.AbstractOracleJobContext;
 import com.ximple.eofms.util.FeatureTypeBuilderUtil;
+import com.ximple.eofms.util.postjts.JtsBinaryWriter;
 import org.geotools.data.DataSourceException;
 import org.geotools.data.DataStore;
 import org.geotools.data.SchemaNotFoundException;
@@ -32,19 +24,10 @@
 import org.opengis.filter.expression.Literal;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryCollection;
-import com.vividsolutions.jts.geom.LineString;
-import com.vividsolutions.jts.geom.MultiLineString;
-import com.vividsolutions.jts.geom.MultiPoint;
-import com.vividsolutions.jts.geom.MultiPolygon;
-import com.vividsolutions.jts.geom.Point;
-import com.vividsolutions.jts.geom.Polygon;
-import com.vividsolutions.jts.io.WKBWriter;
-import com.vividsolutions.jts.io.WKTWriter;
-
-import com.ximple.eofms.jobs.context.AbstractOracleJobContext;
-import com.ximple.eofms.util.postjts.JtsBinaryWriter;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.sql.*;
+import java.util.*;
 
 public abstract class AbstractOracleToPostGISJobContext extends AbstractOracleJobContext {
     private static Map<String, Class> GEOM_TYPE_MAP = new HashMap<String, Class>();
@@ -172,10 +155,11 @@
         } catch (SchemaNotFoundException e) {
             return false;
         } catch (IOException e) {
+            /*
             if (e.getMessage().indexOf("Schema") != -1)
                 getLogger().info(e.getMessage(), e);
             else
-                getLogger().info(e.getMessage());
+                getLogger().info(e.getMessage());       */
             return false;
         }
     }
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java
index ffa39c6..884d035 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java
@@ -339,13 +339,21 @@
     protected void createOrClearFeatureDataTable(SimpleFeatureType featureType) throws SchemaException {
         String featureName = featureType.getTypeName();
         Connection conn = null;
+        boolean bAutocommit=false;
         if (isExistFeature(featureType)) {
             try {
                 conn = getConnection();
                 if (dropTableMode) {
+                    bAutocommit=conn.getAutoCommit();
+                    conn.setAutoCommit(false);
+                    try{
                     dropGeometryColumn(conn, getTargetSchema(), featureName,
                                        (featureType).getGeometryDescriptor().getName().getLocalPart());
+                    }catch(Exception ex){}//no column
+                    try{// autocommit is enabled...@_@
                     dropTable(conn, getTargetSchema(), featureName);
+                    }catch (Exception ex)
+                    {}
 
                     ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType);
                     for (String stmtText : schemaTexts) {
@@ -353,6 +361,7 @@
                         stmt.execute(stmtText);
                         JDBCUtils.close(stmt);
                     }
+                    conn.setAutoCommit(bAutocommit);
                 } else {
                     deleteTable(conn, getTargetSchema(), featureName);
                 }

--
Gitblit v0.0.0-SNAPSHOT