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