From 78792a3cca250c5d4f91f782c1697d4d9d180936 Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Fri, 13 Jun 2008 19:18:46 +0800
Subject: [PATCH] update for EOFM-117

---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java                                |   49 +++++----
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java   |    4 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java                               |    5 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java       |   12 ++
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java                           |   13 ++
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java                          |   18 ++-
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java     |   20 +--
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java |   18 ---
 xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml                         |   15 +++
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java                         |    5 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java                         |   32 +++---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java                        |    5 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java   |   16 --
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java                                 |   11 +
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java                             |   25 ++++
 15 files changed, 146 insertions(+), 102 deletions(-)

diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java
index 5d0f184..54bc021 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java
@@ -14,6 +14,7 @@
 import org.geotools.feature.SchemaException;
 
 import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.Geometry;
 
 import com.ximple.eofms.util.DefaultColorTable;
 import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -73,8 +74,10 @@
         {
             ArcElement lineStringElement = (ArcElement) element;
             convertDecorator.setConverter(lineStringElement);
+            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            if (gobj != null)
             feature = featureType.create(new Object[]{
-                    convertDecorator.toGeometry(geometryFactory),
+                    gobj,
                     fLinkage.getFsc(),
                     (long) fLinkage.getUfid(),
                     (short) fLinkage.getComponentID(),
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java
index 87ecfec..a372f9b 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java
@@ -1,33 +1,31 @@
 package com.ximple.eofms.filter;
 
-import java.util.TreeMap;
 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.FeatureTypeBuilder;
-import org.geotools.feature.FeatureType;
-import org.geotools.feature.SchemaException;
 import org.geotools.feature.Feature;
+import org.geotools.feature.FeatureType;
+import org.geotools.feature.FeatureTypeBuilder;
 import org.geotools.feature.IllegalAttributeException;
+import org.geotools.feature.SchemaException;
 
-import com.vividsolutions.jts.geom.GeometryFactory;
 import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.MultiLineString;
-import com.vividsolutions.jts.geom.CoordinateList;
+import com.vividsolutions.jts.geom.GeometryFactory;
 import com.vividsolutions.jts.geom.LineString;
 
-import com.ximple.eofms.util.TWD97GeometryConverterDecorator;
-import com.ximple.eofms.util.FeatureTypeBuilderUtil;
 import com.ximple.eofms.util.DefaultColorTable;
-import com.ximple.io.dgn7.FrammeAttributeData;
-import com.ximple.io.dgn7.Element;
-import com.ximple.io.dgn7.UserAttributeData;
-import com.ximple.io.dgn7.LineStringElement;
-import com.ximple.io.dgn7.ComplexChainElement;
-import com.ximple.io.dgn7.LineElement;
+import com.ximple.eofms.util.FeatureTypeBuilderUtil;
+import com.ximple.eofms.util.TWD97GeometryConverterDecorator;
 import com.ximple.io.dgn7.ArcElement;
+import com.ximple.io.dgn7.ComplexChainElement;
+import com.ximple.io.dgn7.Element;
+import com.ximple.io.dgn7.FrammeAttributeData;
+import com.ximple.io.dgn7.LineElement;
+import com.ximple.io.dgn7.LineStringElement;
+import com.ximple.io.dgn7.UserAttributeData;
 
 public class CreateComplexChainStrategy implements CreateFeatureTypeStrategy
 {
@@ -85,6 +83,7 @@
             {
                 gobj = geometryFactory.createMultiLineString(new LineString[] {(LineString) gobj});
             }
+            if (gobj != null)
             feature = featureType.create(new Object[]{
                     gobj,
                     fLinkage.getFsc(),
@@ -105,6 +104,7 @@
             {
                 gobj = geometryFactory.createMultiLineString(new LineString[] {(LineString) gobj});
             }
+            if (gobj != null)
             feature = featureType.create(new Object[]{
                     gobj,
                     fLinkage.getFsc(),
@@ -125,6 +125,7 @@
             {
                 gobj = geometryFactory.createMultiLineString(new LineString[] {(LineString) gobj});
             }
+            if (gobj != null)
             feature = featureType.create(new Object[]{
                     gobj,
                     fLinkage.getFsc(),
@@ -146,6 +147,7 @@
             {
                 gobj = geometryFactory.createMultiLineString(new LineString[] {(LineString) gobj});
             }
+            if (gobj != null)
             feature = featureType.create(new Object[]{
                     gobj,
                     fLinkage.getFsc(),
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java
index 058674f..9d0c215 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java
@@ -14,6 +14,7 @@
 import org.geotools.feature.SchemaException;
 
 import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.Geometry;
 
 import com.ximple.eofms.util.DefaultColorTable;
 import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -73,8 +74,10 @@
         {
             EllipseElement shapeElement = (EllipseElement) element;
             convertDecorator.setConverter(shapeElement);
+            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            if (gobj != null)
             feature = featureType.create(new Object[]{
-                    convertDecorator.toGeometry(geometryFactory),
+                    gobj,
                     fLinkage.getFsc(),
                     (long) fLinkage.getUfid(),
                     (short) fLinkage.getComponentID(),
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java
index de94757..41ab334 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java
@@ -81,6 +81,8 @@
         {
             LineStringElement lineStringElement = (LineStringElement) element;
             convertDecorator.setConverter(lineStringElement);
+            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            if (gobj != null)
             feature = featureType.create(new Object[]{
                     convertDecorator.toGeometry(geometryFactory),
                     fLinkage.getFsc(),
@@ -97,7 +99,7 @@
             ComplexChainElement complexChain = (ComplexChainElement) element;
             convertDecorator.setConverter(complexChain);
             Geometry gobj = convertDecorator.toGeometry(geometryFactory);
-            if (gobj instanceof MultiLineString)
+            if ((gobj != null) && (gobj instanceof MultiLineString))
             {
                 MultiLineString mline = (MultiLineString) gobj;
                 CoordinateList coordinateList = new CoordinateList();
@@ -111,6 +113,7 @@
 
                 gobj = geometryFactory.createLineString(coordinateList.toCoordinateArray());
             }
+            if (gobj != null)
             feature = featureType.create(new Object[]{
                     gobj,
                     fLinkage.getFsc(),
@@ -126,8 +129,10 @@
         {
             LineElement lineElement = (LineElement) element;
             convertDecorator.setConverter(lineElement);
+            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            if (gobj != null)
             feature = featureType.create(new Object[]{
-                    convertDecorator.toGeometry(geometryFactory),
+                    gobj,
                     fLinkage.getFsc(),
                     (long) fLinkage.getUfid(),
                     (short) fLinkage.getComponentID(),
@@ -142,8 +147,10 @@
         {
             ArcElement lineStringElement = (ArcElement) element;
             convertDecorator.setConverter(lineStringElement);
+            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            if (gobj != null)
             feature = featureType.create(new Object[]{
-                    convertDecorator.toGeometry(geometryFactory),
+                    gobj,
                     fLinkage.getFsc(),
                     (long) fLinkage.getUfid(),
                     (short) fLinkage.getComponentID(),
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java
index d4fae84..e6a2761 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java
@@ -16,6 +16,9 @@
 import com.vividsolutions.jts.geom.Coordinate;
 import com.vividsolutions.jts.geom.GeometryFactory;
 import com.vividsolutions.jts.geom.LineString;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.MultiLineString;
+import com.vividsolutions.jts.geom.CoordinateList;
 
 import com.ximple.eofms.util.DefaultColorTable;
 import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -80,8 +83,10 @@
         {
             LineStringElement lineStringElement = (LineStringElement) element;
             convertDecorator.setConverter(lineStringElement);
+            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            if (gobj != null)
             feature = featureType.create(new Object[]{
-                    convertDecorator.toGeometry(geometryFactory),
+                    gobj,
                     fLinkage.getFsc(),
                     (long) fLinkage.getUfid(),
                     (short) fLinkage.getComponentID(),
@@ -123,8 +128,24 @@
         {
             ComplexChainElement complexChain = (ComplexChainElement) element;
             convertDecorator.setConverter(complexChain);
+            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            if ((gobj != null) && (gobj instanceof MultiLineString))
+            {
+                MultiLineString mline = (MultiLineString) gobj;
+                CoordinateList coordinateList = new CoordinateList();
+                if (mline.getNumGeometries() == 1)
+                {
+                    for (int i = 0; i < mline.getNumGeometries(); i++)
+                    {
+                        coordinateList.add(mline.getGeometryN(i).getCoordinates(), true);
+                    }
+                }
+
+                gobj = geometryFactory.createLineString(coordinateList.toCoordinateArray());
+            }
+            if (gobj != null)
             feature = featureType.create(new Object[]{
-                    convertDecorator.toGeometry(geometryFactory),
+                    gobj,
                     fLinkage.getFsc(),
                     (long) fLinkage.getUfid(),
                     (short) fLinkage.getComponentID(),
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java
index b51b9af..d42c1c8 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java
@@ -14,6 +14,7 @@
 import org.geotools.feature.SchemaException;
 
 import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.Geometry;
 
 import com.ximple.eofms.util.DefaultColorTable;
 import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -75,32 +76,36 @@
         {
             ShapeElement shapeElement = (ShapeElement) element;
             convertDecorator.setConverter(shapeElement);
-            feature = featureType.create(new Object[]{
-                    convertDecorator.toGeometry(geometryFactory),
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    (short) 0,
-                    (short) shapeElement.getLevelIndex(),
-                    colorTable.getColorCode(shapeElement.getColorIndex()),
-                    (short) shapeElement.getWeight(),
-                    (short) shapeElement.getLineStyle()
-            });
+            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            if (gobj != null)
+                feature = featureType.create(new Object[]{
+                        gobj,
+                        fLinkage.getFsc(),
+                        (long) fLinkage.getUfid(),
+                        (short) fLinkage.getComponentID(),
+                        (short) 0,
+                        (short) shapeElement.getLevelIndex(),
+                        colorTable.getColorCode(shapeElement.getColorIndex()),
+                        (short) shapeElement.getWeight(),
+                        (short) shapeElement.getLineStyle()
+                });
         } else if (element instanceof ComplexShapeElement)
         {
             ComplexShapeElement complexShape = (ComplexShapeElement) element;
             convertDecorator.setConverter(complexShape);
-            feature = featureType.create(new Object[]{
-                    convertDecorator.toGeometry(geometryFactory),
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    (short) 0,
-                    (short) complexShape.getLevelIndex(),
-                    colorTable.getColorCode(complexShape.getColorIndex()),
-                    (short) complexShape.getWeight(),
-                    (short) complexShape.getLineStyle()
-            });
+            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            if (gobj != null)
+                feature = featureType.create(new Object[]{
+                        gobj,
+                        fLinkage.getFsc(),
+                        (long) fLinkage.getUfid(),
+                        (short) fLinkage.getComponentID(),
+                        (short) 0,
+                        (short) complexShape.getLevelIndex(),
+                        colorTable.getColorCode(complexShape.getColorIndex()),
+                        (short) complexShape.getWeight(),
+                        (short) complexShape.getLineStyle()
+                });
         }
         return feature;
     }
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java
index 78604d0..2b3fd93 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java
@@ -16,6 +16,7 @@
 import org.geotools.feature.SchemaException;
 
 import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.Geometry;
 
 import com.ximple.eofms.util.DefaultColorTable;
 import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -91,8 +92,10 @@
             sb.append(txtElement.getFontIndex());
 
             convertDecorator.setConverter(txtElement);
+            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            if (gobj != null)
             feature = featureType.create(new Object[]{
-                    convertDecorator.toGeometry(geometryFactory),
+                    gobj,
                     fLinkage.getFsc(),
                     (long) fLinkage.getUfid(),
                     (short) fLinkage.getComponentID(),
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java
index 238eeda..cca31c2 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java
@@ -15,6 +15,7 @@
 import org.geotools.feature.SchemaException;
 
 import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.Geometry;
 
 import com.ximple.eofms.util.DefaultColorTable;
 import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -77,11 +78,13 @@
             TextElement txtElement = (TextElement) element;
             double angle = txtElement.getRotationAngle();
             angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
-            convertDecorator.setConverter(txtElement);
             String content = txtElement.getText();
             content = content.replace('\u0000', ' ');
+            convertDecorator.setConverter(txtElement);
+            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            if (gobj != null)
             feature = featureType.create(new Object[]{
-                    convertDecorator.toGeometry(geometryFactory),
+                    gobj,
                     fLinkage.getFsc(),
                     (long) fLinkage.getUfid(),
                     (short) fLinkage.getComponentID(),
@@ -112,8 +115,10 @@
             double angle = nodeElement.getRotationAngle();
             angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
             convertDecorator.setConverter(nodeElement);
+            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            if (gobj != null)
             feature = featureType.create(new Object[]{
-                    convertDecorator.toGeometry(geometryFactory),
+                    gobj,
                     fLinkage.getFsc(),
                     (long) fLinkage.getUfid(),
                     (short) fLinkage.getComponentID(),
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 49ae703..0128a4a 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
@@ -287,6 +287,7 @@
         Statement stmt = connection.createStatement();
         stmt.execute(AbstractOracleJobContext.TRUNCATE_CONNECTIVITY_WEBCHECK);
         stmt.execute(AbstractOracleJobContext.COPY_CONNECTIVITY_TO_WEBCHECK);
+        stmt.close();
     }
 
     private void exetcuteConvert(OracleConvertPostGISJobContext jobContext,
@@ -411,9 +412,9 @@
         Statement stmt = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
 
         stmt.setFetchSize(FETCHSIZE);
-
         ResultSet rs = stmt.executeQuery(fetchStmt);
-
+        try
+        {
         while (rs.next())
         {
             int size = rs.getMetaData().getColumnCount();
@@ -433,10 +434,11 @@
             else
                 pair.second = name;
         }
-
+        } finally
+        {
         rs.close();
         stmt.close();
-
+        }
         return orderedMap;
     }
 
@@ -450,7 +452,6 @@
         Statement stmtSrc = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
 
         stmtSrc.setFetchSize(FETCHSIZE);
-
         ResultSet rsSrc = stmtSrc.executeQuery(fetchSrcStmt);
 
         while (rsSrc.next())
@@ -492,9 +493,10 @@
         Statement stmtDest = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
 
         stmtDest.setFetchSize(FETCHSIZE);
-
         ResultSet rsDest = stmtDest.executeQuery(fetchDestStmt);
 
+        try
+        {
         while (rsDest.next())
         {
             ARRAY rawsValue = ((OracleResultSet) rsDest).getARRAY(1);
@@ -524,9 +526,11 @@
                 logger.warn("Dgn7Exception:" + e.getMessage(), e);
             }
         }
-
+        } finally
+        {
         rsDest.close();
         stmtDest.close();
+        }
     }
 
     // Binary to Element
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java
index fc9d981..7c48de5 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java
@@ -45,7 +45,6 @@
     static final Log logger = LogFactory.getLog(DummyFeatureConvertPostGISJobContext.class);
     static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
     static final GeometryFactory geometryFactory = new GeometryFactory();
-    static final String SHPOUTPATH = "shpout";
 
     private String dataOut = null;
 
@@ -238,23 +237,6 @@
         {
             logger.error(e.getMessage(), e);
         }
-    }
-
-    public String getDataOutPath()
-    {
-        if (dataOut == null)
-        {
-            File outPath = new File(getDataPath(), SHPOUTPATH);
-            if (!outPath.exists())
-            {
-                outPath.mkdir();
-            } else if (!outPath.isDirectory())
-            {
-                outPath.mkdir();
-            }
-            dataOut = outPath.toString();
-        }
-        return dataOut;
     }
 
     public void closeFeatureWriter() throws IOException
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java
index e7c4d07..2ac1836 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java
@@ -42,8 +42,6 @@
     static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
     static final GeometryFactory geometryFactory = new GeometryFactory();
 
-    private String dataOut = null;
-
     private HashMap<String, ArrayList<Feature>> featuresContext = new HashMap<String, ArrayList<Feature>>();
     private HashMap<String, FeatureWriter> featuresWriterContext = new HashMap<String, FeatureWriter>();
 
@@ -136,7 +134,7 @@
         {
             txFeaturesContext.put(feature.getFeatureType(), new ArrayList());
         }
-        ArrayList arrayList = (ArrayList) txFeaturesContext.get(feature.getFeatureType());
+        ArrayList<Feature> arrayList = (ArrayList<Feature>) txFeaturesContext.get(feature.getFeatureType());
         arrayList.add(feature);
     }
 
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java
index 9ae4316..9e0e019 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java
@@ -145,7 +145,6 @@
     private void updateDataStore()
     {
         Iterator<FeatureType> it = txFeaturesContext.keySet().iterator();
-        String currentStmt = null;
         try
         {
             while (it.hasNext())
@@ -171,24 +170,13 @@
                         pstmt.execute();
                     } catch (PSQLException e)
                     {
-                        if (currentStmt != null)
+                        if (bindingStmt != null)
                         {
-                            logger.error("Execute:" + currentStmt);
+                            logger.error("Execute:" + bindingStmt);
                         }
                         logger.error(e.getServerErrorMessage());
                         logger.error(e.getMessage(), e);
                     }
-
-                    /*
-                    if ((i % BATCHSIZE) != 0)
-                    {
-                        stmt.addBatch(feature);
-                    } else {
-                        stmt.addBatch(feature);
-                        stmt.executeBatch();
-                    }
-                    i++;
-                    */
                 }
 
                 pstmt.close();
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java
index 8ac2226..523d151 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java
@@ -124,19 +124,15 @@
         {
             updateDataStore();
         }
-
-        txFeaturesContext.clear();
     }
 
     public void rollbackTransaction()
     {
-        txFeaturesContext.clear();
     }
 
     private void updateDataStore()
     {
         Iterator<FeatureType> it = txFeaturesContext.keySet().iterator();
-        String currentStmt = null;
         try
         {
             while (it.hasNext())
@@ -162,9 +158,9 @@
                         pstmt.execute();
                     } catch (PSQLException e)
                     {
-                        if (currentStmt != null)
+                        if (bindingStmt != null)
                         {
-                            logger.error("Execute:" + currentStmt);
+                            logger.error("Execute:" + bindingStmt);
                         }
                         logger.error(e.getServerErrorMessage());
                         logger.error(e.getMessage(), e);
@@ -191,10 +187,6 @@
             accumulate = 0;
         } catch (PSQLException e)
         {
-            if (currentStmt != null)
-            {
-                logger.error("Execute:" + currentStmt);
-            }
             logger.error(e.getServerErrorMessage());
             logger.error(e.getMessage(), e);
         } catch (SQLException e)
@@ -205,6 +197,7 @@
 
     public void closeFeatureWriter() throws IOException
     {
+        txFeaturesContext.clear();
         /*
         for (FeatureWriter featureWriter : this.featuresWriterContext.values())
         {
@@ -384,12 +377,15 @@
         DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
         if (element instanceof TextElement)
         {
+            Feature feature = null;
             TextElement txtElement = (TextElement) element;
             double angle = txtElement.getRotationAngle();
             angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
             convertDecorator.setConverter(txtElement);
-            Feature feature = featureType.create(new Object[]{
-                    convertDecorator.toGeometry(geometryFactory),
+            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            if (gobj != null)
+            feature = featureType.create(new Object[]{
+                    gobj,
                     colorTable.getColorCode(txtElement.getColorIndex()),
                     txtElement.getWeight(),
                     txtElement.getLineStyle(),
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 c9a676e..a56d065 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
@@ -240,6 +240,18 @@
                         }
                         logger.error(e.getServerErrorMessage());
                         logger.error(e.getMessage(), e);
+                    } catch (ClassCastException e)
+                    {
+                        if (bindingStmt != null)
+                        {
+                            logger.error("Execute:" + bindingStmt);
+                        }
+                        for (int i = 0; i < feature.getNumberOfAttributes(); i++)
+                        {
+                            logger.info("attr[" + i + "]-" + ((feature.getAttribute(i) == null) ? " NULL" :
+                            feature.getAttribute(i).toString()));
+                        }
+                        logger.error(e.getMessage(), e);
                     }
                 }
 
diff --git a/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml
index 37c3706..9686501 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml
+++ b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml
@@ -47,6 +47,11 @@
         <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
         <set-properties-rule/>
       </pattern>
+      <pattern value="ComplexChainCreateStrategy">
+        <object-create-rule classname="com.ximple.eofms.filter.CreateComplexChainStrategy"/>
+        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
+        <set-properties-rule/>
+      </pattern>
     </pattern>
     <pattern value="TypeCompFilter">
       <object-create-rule classname="com.ximple.eofms.filter.TypeCompIdDispatchableFilter"/>
@@ -95,6 +100,11 @@
       </pattern>
       <pattern value="EllipseShapeCreateStrategy">
         <object-create-rule classname="com.ximple.eofms.filter.CreateEllipseShapeStrategy"/>
+        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
+        <set-properties-rule/>
+      </pattern>
+      <pattern value="ComplexChainCreateStrategy">
+        <object-create-rule classname="com.ximple.eofms.filter.CreateComplexChainStrategy"/>
         <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
         <set-properties-rule/>
       </pattern>
@@ -156,6 +166,11 @@
         <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
         <set-properties-rule/>
       </pattern>
+      <pattern value="ComplexChainCreateStrategy">
+        <object-create-rule classname="com.ximple.eofms.filter.CreateComplexChainStrategy"/>
+        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
+        <set-properties-rule/>
+      </pattern>
     </pattern>
   </pattern>
 </digester-rules>
\ No newline at end of file

--
Gitblit v0.0.0-SNAPSHOT