From 1c3b0bcfb1df3558d72f2dc4d190a4952d3d3119 Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Fri, 27 Aug 2010 13:22:03 +0800
Subject: [PATCH] fix index and landbase

---
 xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml                                                          |    6 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/IndexDgnConvertEdbGeoJobContext.java     |   69 +++++++---------
 xdgnjobs/pom.xml                                                                                                       |    6 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/GeneralDgnConvertEdbGeoJobContext.java   |    3 
 xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties                                                        |    3 
 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java                                                |   24 ++---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java |   29 ++++---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java   |   76 +++++++++----------
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java     |    8 +
 9 files changed, 107 insertions(+), 117 deletions(-)

diff --git a/xdgnjobs/pom.xml b/xdgnjobs/pom.xml
index ed9b584..7cfa6af 100644
--- a/xdgnjobs/pom.xml
+++ b/xdgnjobs/pom.xml
@@ -19,7 +19,7 @@
     <src.output>${basedir}/target</src.output>
     <java5>1.5</java5>
     <xdgnio.version>1.2.0</xdgnio.version>
-    <gt2.version>2.6.4</gt2.version>
+    <gt2.version>2.6.5</gt2.version>
     <failIfNoTests>false</failIfNoTests>
     <stress.skip.pattern></stress.skip.pattern>
     <online.skip.pattern></online.skip.pattern>
@@ -305,7 +305,7 @@
       <dependency>
         <groupId>com.h2database</groupId>
         <artifactId>h2</artifactId>
-        <version>1.2.134</version>
+        <version>1.2.141</version>
       </dependency>
 
       <!-- EnterpriseDB -->
@@ -319,7 +319,7 @@
       <dependency>
         <groupId>org.quartz-scheduler</groupId>
         <artifactId>quartz</artifactId>
-        <version>1.8.0</version>
+        <version>1.8.3</version>
       </dependency>
       <dependency>
         <groupId>org.awl</groupId>
diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java
index a86b701..5a42da0 100644
--- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java
+++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java
@@ -1,20 +1,18 @@
 package com.ximple.io.dgn7;
 
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.CoordinateList;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.ximple.util.DgnUtility;
+import org.apache.log4j.Logger;
+
 import java.awt.geom.AffineTransform;
 import java.nio.ByteBuffer;
 import java.nio.CharBuffer;
 import java.nio.charset.CharacterCodingException;
 import java.nio.charset.Charset;
 import java.nio.charset.CharsetDecoder;
-
-import org.apache.log4j.Logger;
-
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.CoordinateList;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.GeometryFactory;
-
-import com.ximple.util.DgnUtility;
 
 /**
  * TextElement
@@ -155,9 +153,8 @@
             return "";
         }
 
-        if(30+num/2 > raw.length)
-        {
-            logger.warn("getTextLength() too long." );
+        if (30 + num / 2 > raw.length) {
+            logger.warn("getTextLength() too long.");
             return "";
         }
 
@@ -175,8 +172,7 @@
             }
         } else {
             byte[] strRaw = new byte[num * 2];
-            for (int i = 0; i < num; i++)
-            {
+            for (int i = 0; i < num; i++) {
                 short charValue = raw[i + 31];
                 byte hi = (byte) (charValue >>> 8);
                 byte lo = (byte) charValue;
diff --git a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties
index f91a64f..ca08623 100644
--- a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties
+++ b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties
@@ -25,7 +25,8 @@
 #org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
 org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
 
-org.quartz.plugin.jobInitializer.fileNames = quartz_jobs_edb.xml
+#org.quartz.plugin.jobInitializer.fileNames = quartz_jobs_edb.xml
+org.quartz.plugin.jobInitializer.fileNames = quartz_jobs.xml
 
 #org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
 org.quartz.plugin.jobInitializer.failOnFileNotFound = true
diff --git a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml
index dc6fa7c..33dc2bb 100644
--- a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml
+++ b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml
@@ -32,7 +32,7 @@
       <job-data-map>
         <entry>
           <key>JOBDATA_DIR</key>
-          <value>C:\Usr\Projects\XDCAD\nstpcjobs</value>
+          <value>C:\Usr\Projects\XDCAD\nstpcjobs\jobdata</value>
         </entry>
         <entry>
           <key>PGHOST</key>
@@ -88,7 +88,7 @@
         </entry>
         <entry>
           <key>CONVERTFILE</key>
-          <value>false</value>
+          <value>true</value>
         </entry>
         <entry>
           <key>CONVERTELEMIN</key>
@@ -116,7 +116,7 @@
         </entry>
         <entry>
           <key>COPYCONNECTIVITYMODE</key>
-          <value>false</value>
+          <value>true</value>
         </entry>
         <entry>
           <key>PROFILEMODE</key>
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/GeneralDgnConvertEdbGeoJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/GeneralDgnConvertEdbGeoJobContext.java
index 3fa04e7..71c63e0 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/GeneralDgnConvertEdbGeoJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/GeneralDgnConvertEdbGeoJobContext.java
@@ -57,7 +57,6 @@
 
     private TreeMap<String, SimpleFeatureType> featureTypes = new TreeMap<String, SimpleFeatureType>();
 
-    private GeometryConverterDecorator convertDecorator = null;
     private String featureBaseName = null;
     private boolean dropTableMode = true;
 
@@ -272,6 +271,8 @@
 
     public SimpleFeature createFeature(SimpleFeatureType featureType, Element element) throws IllegalAttributeException {
         DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
+        GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
+
         if (element instanceof TextElement) {
             TextElement textElement = (TextElement) element;
             convertDecorator.setConverter(textElement);
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/IndexDgnConvertEdbGeoJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/IndexDgnConvertEdbGeoJobContext.java
index 441b340..8b5b1da 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/IndexDgnConvertEdbGeoJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/IndexDgnConvertEdbGeoJobContext.java
@@ -55,11 +55,7 @@
     private HashMap<SimpleFeatureType, ArrayList<SimpleFeature>> txFeaturesContext =
             new HashMap<SimpleFeatureType, ArrayList<SimpleFeature>>();
 
-    private SimpleFeatureTypeBuilder typeBuilderPnt = null;
-    private SimpleFeatureTypeBuilder typeBuilderRect = null;
-    private SimpleFeatureTypeBuilder typeBuilderSmallRect = null;
-
-    private SimpleFeatureType featureType = null;
+    private SimpleFeatureType featureType1 = null;
     private SimpleFeatureType featureType2 = null;
     private SimpleFeatureType featureType3 = null;
 
@@ -303,17 +299,18 @@
         */
     }
 
-    public SimpleFeatureType createFeatureElement(String featureName) throws SchemaException {
-        if (typeBuilderRect == null) {
+    public void createFeatureElement(String featureName) throws SchemaException {
+        if (featureType1 == null) {
             Connection conn = null;
-            typeBuilderRect = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName);
-            if (isExistFeature(typeBuilderRect.buildFeatureType())) {
+            SimpleFeatureTypeBuilder typeBuilder1 = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName);
+            featureType1 = typeBuilder1.buildFeatureType();
+            if (isExistFeature(featureType1)) {
                 try {
                     conn = getConnection();
                     if (dropTableMode) {
                         try {
                             dropGeometryColumn(conn, featureName,
-                                               ((FeatureTypeImpl)typeBuilderRect.buildFeatureType()).getGeometryDescriptor().getLocalName());
+                                               (featureType1).getGeometryDescriptor().getLocalName());
                         } catch (PSQLException e) {
                             logger.debug(e.getMessage(), e);
                         }
@@ -322,8 +319,7 @@
                         } catch (PSQLException e) {
                             logger.debug(e.getMessage(), e);
                         }
-                        ArrayList<String> schemaTexts = createNewSchemaTexts(conn,
-                                                                             typeBuilderRect.buildFeatureType());
+                        ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType1);
                         for (String stmtText : schemaTexts) {
                             Statement stmt = conn.createStatement();
                             stmt.execute(stmtText);
@@ -343,8 +339,7 @@
             } else {
                 try {
                     conn = getConnection();
-                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn,
-                                                                         typeBuilderRect.buildFeatureType());
+                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType1);
                     for (String stmtText : schemaTexts) {
                         Statement stmt = conn.createStatement();
                         stmt.execute(stmtText);
@@ -360,23 +355,22 @@
                 }
             }
         }
-        return typeBuilderRect.buildFeatureType();
     }
 
-    public SimpleFeatureType createFeatureElement2(String featureName) throws SchemaException {
-        if (typeBuilderPnt == null) {
+    public void createFeatureElement2(String featureName) throws SchemaException {
+        if (featureType2 == null) {
             Connection conn = null;
-            typeBuilderPnt = FeatureTypeBuilderUtil.createNormalIndexTextFeatureTypeBuilder(featureName);
-            if (isExistFeature(typeBuilderPnt.buildFeatureType())) {
+            SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalIndexTextFeatureTypeBuilder(featureName);
+            featureType2 = typeBuilder.buildFeatureType();
+            if (isExistFeature(featureType2)) {
                 try {
                     conn = getConnection();
                     if (dropTableMode) {
                         dropGeometryColumn(conn, featureName,
-                                           ((FeatureTypeImpl)typeBuilderPnt.buildFeatureType()).getGeometryDescriptor().getLocalName());
+                                           (featureType2).getGeometryDescriptor().getLocalName());
                         dropTable(conn, featureName);
 
-                        ArrayList<String> schemaTexts = createNewSchemaTexts(conn,
-                                                                             typeBuilderPnt.buildFeatureType());
+                        ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType2);
                         for (String stmtText : schemaTexts) {
                             Statement stmt = conn.createStatement();
                             stmt.execute(stmtText);
@@ -396,8 +390,7 @@
             } else {
                 try {
                     conn = getConnection();
-                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn,
-                                                                         typeBuilderPnt.buildFeatureType());
+                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType2);
                     for (String stmtText : schemaTexts) {
                         Statement stmt = conn.createStatement();
                         stmt.execute(stmtText);
@@ -413,20 +406,20 @@
                 }
             }
         }
-        return typeBuilderPnt.buildFeatureType();
     }
 
-    public SimpleFeatureType createFeatureElement3(String featureName) throws SchemaException {
-        if (typeBuilderSmallRect == null) {
+    public void createFeatureElement3(String featureName) throws SchemaException {
+        if (featureType3 == null) {
             Connection conn = null;
-            typeBuilderSmallRect = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName);
-            if (isExistFeature(typeBuilderSmallRect.buildFeatureType())) {
+            SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName);
+            featureType3 = typeBuilder.buildFeatureType();
+            if (isExistFeature(featureType3)) {
                 try {
                     conn = getConnection();
                     if (dropTableMode) {
                         try {
                             dropGeometryColumn(conn, featureName,
-                                               ((FeatureTypeImpl)typeBuilderSmallRect.buildFeatureType()).getGeometryDescriptor().getLocalName());
+                                               (featureType3).getGeometryDescriptor().getLocalName());
                         } catch (PSQLException e) {
                             logger.debug(e.getMessage(), e);
                         }
@@ -435,7 +428,7 @@
                         } catch (PSQLException e) {
                             logger.debug(e.getMessage(), e);
                         }
-                        ArrayList<String> schemaTexts = createNewSchemaTexts(conn, typeBuilderSmallRect.buildFeatureType());
+                        ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType3);
                         for (String stmtText : schemaTexts) {
                             Statement stmt = conn.createStatement();
                             stmt.execute(stmtText);
@@ -455,8 +448,7 @@
             } else {
                 try {
                     conn = getConnection();
-                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn,
-                                                                         typeBuilderSmallRect.buildFeatureType());
+                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType3);
                     for (String stmtText : schemaTexts) {
                         Statement stmt = conn.createStatement();
                         stmt.execute(stmtText);
@@ -472,7 +464,6 @@
                 }
             }
         }
-        return typeBuilderSmallRect.buildFeatureType();
     }
 
     public SimpleFeature createFeature(SimpleFeatureType featureType, Element element) throws IllegalAttributeException {
@@ -771,15 +762,15 @@
     }
 
     private SimpleFeature createFeature(Element element) throws SchemaException, IllegalAttributeException {
-        if (featureType == null) {
+        if (featureType1 == null) {
             String dgnname = getFilename().toLowerCase();
             int i = dgnname.lastIndexOf(".");
             if (i != -1) {
                 dgnname = dgnname.substring(0, i);
             }
-            featureType = createFeatureElement(dgnname.toLowerCase());
+            createFeatureElement(dgnname.toLowerCase());
         }
-        return createFeature(featureType, element);
+        return createFeature(featureType1, element);
     }
 
     private SimpleFeature createFeature2(Element element) throws SchemaException, IllegalAttributeException {
@@ -790,7 +781,7 @@
                 dgnname = dgnname.substring(0, i);
             }
             dgnname = dgnname + "_p";
-            featureType2 = createFeatureElement2(dgnname.toLowerCase());
+            createFeatureElement2(dgnname.toLowerCase());
         }
         return createFeature2(featureType2, element);
     }
@@ -803,7 +794,7 @@
                 dgnname = dgnname.substring(0, i);
             }
             dgnname = dgnname + "_s";
-            featureType3 = createFeatureElement3(dgnname.toLowerCase());
+            createFeatureElement3(dgnname.toLowerCase());
         }
         return createFeature3(featureType3, element);
     }
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java
index 17aa358..2827b59 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java
@@ -399,9 +399,9 @@
 
         for (AttributeDescriptor descriptor : descriptors) {
             String typeName;
-            typeName = CLASS_MAPPINGS.get(((AttributeType) descriptor.getType()).getBinding());
+            typeName = CLASS_MAPPINGS.get(descriptor.getType().getBinding());
             if (typeName == null) {
-                typeName = GEOM_CLASS_MAPPINGS.get(((AttributeType) descriptor.getType()).getBinding());
+                typeName = GEOM_CLASS_MAPPINGS.get(descriptor.getType().getBinding());
                 if (typeName != null) continue;
             }
 
@@ -630,9 +630,11 @@
 
         for (int i = 0; i < descriptors.size(); i++) {
             if (descriptors.get(i) instanceof GeometryDescriptor) {
+                Geometry geom = (Geometry) attributes.get(i);
+                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                 pstmt.setBytes(i + 1, binaryWriter.writeBinary((Geometry) attributes.get(i)));
             } else {
-                Class<?> bindingType = ((AttributeType) descriptors.get(i).getType()).getBinding();
+                Class<?> bindingType = descriptors.get(i).getType().getBinding();
                 if (bindingType.equals(Short.class)) {
                     pstmt.setShort(i + 1, (Short) attributes.get(i));
                 } else if (bindingType.equals(Integer.class)) {
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 0ad49bb..a2f3aae 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
@@ -60,7 +60,6 @@
 
     private TreeMap<String, SimpleFeatureType> featureTypes = new TreeMap<String, SimpleFeatureType>();
 
-    private GeometryConverterDecorator convertDecorator = null;
     private String featureBaseName = null;
     private boolean dropTableMode = true;
 
@@ -218,7 +217,7 @@
             SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalPointFeatureTypeBuilder(featureName);
             SimpleFeatureType featureType = typeBuilder.buildFeatureType();
             featureTypes.put(featureName, featureType);
-            clearFeatureData(typeBuilder);
+            clearFeatureData(featureName);
         }
         return featureTypes.get(featureName);
     }
@@ -228,7 +227,7 @@
             SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalPolygonFeatureTypeBuilder(featureName);
             SimpleFeatureType featureType = typeBuilder.buildFeatureType();
             featureTypes.put(featureName, featureType);
-            clearFeatureData(typeBuilder);
+            clearFeatureData(featureName);
         }
         return featureTypes.get(featureName);
     }
@@ -238,7 +237,7 @@
             SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalLineFeatureTypeBuilder(featureName);
             SimpleFeatureType featureType = typeBuilder.buildFeatureType();
             featureTypes.put(featureName, featureType);
-            clearFeatureData(typeBuilder);
+            clearFeatureData(featureName);
         }
         return featureTypes.get(featureName);
     }
@@ -248,7 +247,7 @@
             SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalMultiLineFeatureTypeBuilder(featureName);
             SimpleFeatureType featureType = typeBuilder.buildFeatureType();
             featureTypes.put(featureName, featureType);
-            clearFeatureData(typeBuilder);
+            clearFeatureData(featureName);
         }
         return featureTypes.get(featureName);
     }
@@ -258,7 +257,7 @@
             SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalArcFeatureTypeBuilder(featureName);
             SimpleFeatureType featureType = typeBuilder.buildFeatureType();
             featureTypes.put(featureName, featureType);
-            clearFeatureData(typeBuilder);
+            clearFeatureData(featureName);
         }
         return featureTypes.get(featureName);
     }
@@ -268,13 +267,15 @@
             SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalEllipseFeatureTypeBuilder(featureName);
             SimpleFeatureType featureType = typeBuilder.buildFeatureType();
             featureTypes.put(featureName, featureType);
-            clearFeatureData(typeBuilder);
+            clearFeatureData(featureName);
         }
         return featureTypes.get(featureName);
     }
 
     public SimpleFeature createFeature(SimpleFeatureType featureType, Element element) throws IllegalAttributeException {
         DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
+        GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
+        
         if (element instanceof TextElement) {
             TextElement textElement = (TextElement) element;
             convertDecorator.setConverter(textElement);
@@ -521,20 +522,22 @@
         this.dropTableMode = dropTableMode;
     }
 
-    protected void clearFeatureData(SimpleFeatureTypeBuilder typeBuilder) throws SchemaException {
+    protected void clearFeatureData(String featureTypeName) throws SchemaException {
         if (isProfileMode()) markUpdateTime();
 
-        String featureName = typeBuilder.getName();
         Connection conn = null;
-        if (isExistFeature(typeBuilder.buildFeatureType())) {
+
+        SimpleFeatureType featureType = featureTypes.get(featureTypeName);
+        String featureName = featureType.getName().getLocalPart();
+        if (isExistFeature(featureType)) {
             try {
                 conn = getConnection();
                 if (dropTableMode) {
                     dropGeometryColumn(conn, featureName,
-                                       ((FeatureTypeImpl)typeBuilder.buildFeatureType()).getGeometryDescriptor().getLocalName());
+                                       (featureType).getGeometryDescriptor().getLocalName());
                     dropTable(conn, featureName);
 
-                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn, typeBuilder.buildFeatureType());
+                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType);
                     for (String stmtText : schemaTexts) {
                         Statement stmt = conn.createStatement();
                         stmt.execute(stmtText);
@@ -556,7 +559,7 @@
         } else {
             try {
                 conn = getConnection();
-                ArrayList<String> schemaTexts = createNewSchemaTexts(conn, typeBuilder.buildFeatureType());
+                ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType);
                 for (String stmtText : schemaTexts) {
                     Statement stmt = conn.createStatement();
                     stmt.execute(stmtText);
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 774ba91..bb27d52 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
@@ -37,8 +37,6 @@
 import com.vividsolutions.jts.geom.Polygon;
 
 import com.ximple.eofms.util.DefaultColorTable;
-import com.ximple.eofms.util.EPSG3825GeometryConverterDecorator;
-import com.ximple.eofms.util.EPSG3826GeometryConverterDecorator;
 import com.ximple.eofms.util.FeatureTypeBuilderUtil;
 import com.ximple.eofms.util.GeometryConverterDecorator;
 import com.ximple.eofms.util.TPCLIDConverter;
@@ -57,11 +55,9 @@
     private HashMap<SimpleFeatureType, ArrayList<SimpleFeature>> txFeaturesContext =
             new HashMap<SimpleFeatureType, ArrayList<SimpleFeature>>();
 
-    private SimpleFeatureTypeBuilder typeBuilderPnt = null;
-    private SimpleFeatureTypeBuilder typeBuilderRect = null;
-    private SimpleFeatureTypeBuilder typeBuilderSmallRect = null;
+    private HashMap<String, SimpleFeatureType> typesMapping = new HashMap<String, SimpleFeatureType>();
 
-    private SimpleFeatureType featureType = null;
+    private SimpleFeatureType featureType1 = null;
     private SimpleFeatureType featureType2 = null;
     private SimpleFeatureType featureType3 = null;
 
@@ -288,6 +284,10 @@
         } catch (SQLException e) {
             JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e);
             logger.error(e.getMessage(), e);
+            Exception nextE =  e.getNextException();
+            if (nextE != null) {
+                logger.error(nextE.getMessage(), nextE);
+            }
         } finally {
             if (isProfileMode()) this.accumulateUpdateTime();
         }
@@ -305,17 +305,19 @@
         */
     }
 
-    public SimpleFeatureType createFeatureElement(String featureName) throws SchemaException {
-        if (typeBuilderRect == null) {
+    public void createFeatureElement(String featureName) throws SchemaException {
+        if (featureType1 == null) {
             Connection conn = null;
-            typeBuilderRect = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName);
-            if (isExistFeature(typeBuilderRect.buildFeatureType())) {
+            SimpleFeatureTypeBuilder typeBuilder1 = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName);
+            featureType1 = typeBuilder1.buildFeatureType();
+
+            if (isExistFeature(featureType1)) {
                 try {
                     conn = getConnection();
                     if (dropTableMode) {
                         try {
                             dropGeometryColumn(conn, featureName,
-                                               ((FeatureTypeImpl)typeBuilderRect.buildFeatureType()).getGeometryDescriptor().getLocalName());
+                                               (featureType1).getGeometryDescriptor().getLocalName());
                         } catch (PSQLException e) {
                             logger.debug(e.getMessage(), e);
                         }
@@ -324,8 +326,7 @@
                         } catch (PSQLException e) {
                             logger.debug(e.getMessage(), e);
                         }
-                        ArrayList<String> schemaTexts = createNewSchemaTexts(conn,
-                                                                             typeBuilderRect.buildFeatureType());
+                        ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType1);
                         for (String stmtText : schemaTexts) {
                             Statement stmt = conn.createStatement();
                             stmt.execute(stmtText);
@@ -345,8 +346,7 @@
             } else {
                 try {
                     conn = getConnection();
-                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn,
-                                                                         typeBuilderRect.buildFeatureType());
+                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType1);
                     for (String stmtText : schemaTexts) {
                         Statement stmt = conn.createStatement();
                         stmt.execute(stmtText);
@@ -362,23 +362,22 @@
                 }
             }
         }
-        return typeBuilderRect.buildFeatureType();
     }
 
-    public SimpleFeatureType createFeatureElement2(String featureName) throws SchemaException {
-        if (typeBuilderPnt == null) {
+    public void createFeatureElement2(String featureName) throws SchemaException {
+        if (featureType2 == null) {
             Connection conn = null;
-            typeBuilderPnt = FeatureTypeBuilderUtil.createNormalIndexTextFeatureTypeBuilder(featureName);
-            if (isExistFeature(typeBuilderPnt.buildFeatureType())) {
+            SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalIndexTextFeatureTypeBuilder(featureName);
+            featureType2 = typeBuilder.buildFeatureType();
+            if (isExistFeature(featureType2)) {
                 try {
                     conn = getConnection();
                     if (dropTableMode) {
                         dropGeometryColumn(conn, featureName,
-                                           ((FeatureTypeImpl)typeBuilderPnt.buildFeatureType()).getGeometryDescriptor().getLocalName());
+                                           (featureType2).getGeometryDescriptor().getLocalName());
                         dropTable(conn, featureName);
 
-                        ArrayList<String> schemaTexts = createNewSchemaTexts(conn,
-                                                                             typeBuilderPnt.buildFeatureType());
+                        ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType2);
                         for (String stmtText : schemaTexts) {
                             Statement stmt = conn.createStatement();
                             stmt.execute(stmtText);
@@ -398,8 +397,7 @@
             } else {
                 try {
                     conn = getConnection();
-                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn,
-                                                                         typeBuilderPnt.buildFeatureType());
+                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType2);
                     for (String stmtText : schemaTexts) {
                         Statement stmt = conn.createStatement();
                         stmt.execute(stmtText);
@@ -415,20 +413,20 @@
                 }
             }
         }
-        return typeBuilderPnt.buildFeatureType();
     }
 
-    public SimpleFeatureType createFeatureElement3(String featureName) throws SchemaException {
-        if (typeBuilderSmallRect == null) {
+    public void createFeatureElement3(String featureName) throws SchemaException {
+        if (featureType3 == null) {
             Connection conn = null;
-            typeBuilderSmallRect = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName);
-            if (isExistFeature(typeBuilderSmallRect.buildFeatureType())) {
+            SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName);
+            featureType3 = typeBuilder.buildFeatureType();
+            if (isExistFeature(featureType3)) {
                 try {
                     conn = getConnection();
                     if (dropTableMode) {
                         try {
                             dropGeometryColumn(conn, featureName,
-                                               ((FeatureTypeImpl)typeBuilderSmallRect.buildFeatureType()).getGeometryDescriptor().getLocalName());
+                                               (featureType3).getGeometryDescriptor().getLocalName());
                         } catch (PSQLException e) {
                             logger.debug(e.getMessage(), e);
                         }
@@ -437,7 +435,7 @@
                         } catch (PSQLException e) {
                             logger.debug(e.getMessage(), e);
                         }
-                        ArrayList<String> schemaTexts = createNewSchemaTexts(conn, typeBuilderSmallRect.buildFeatureType());
+                        ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType3);
                         for (String stmtText : schemaTexts) {
                             Statement stmt = conn.createStatement();
                             stmt.execute(stmtText);
@@ -457,8 +455,7 @@
             } else {
                 try {
                     conn = getConnection();
-                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn,
-                                                                         typeBuilderSmallRect.buildFeatureType());
+                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType3);
                     for (String stmtText : schemaTexts) {
                         Statement stmt = conn.createStatement();
                         stmt.execute(stmtText);
@@ -474,7 +471,6 @@
                 }
             }
         }
-        return typeBuilderSmallRect.buildFeatureType();
     }
 
     public SimpleFeature createFeature(SimpleFeatureType featureType, Element element) throws IllegalAttributeException {
@@ -773,15 +769,15 @@
     }
 
     private SimpleFeature createFeature(Element element) throws SchemaException, IllegalAttributeException {
-        if (featureType == null) {
+        if (featureType1 == null) {
             String dgnname = getFilename().toLowerCase();
             int i = dgnname.lastIndexOf(".");
             if (i != -1) {
                 dgnname = dgnname.substring(0, i);
             }
-            featureType = createFeatureElement(dgnname.toLowerCase());
+            createFeatureElement(dgnname.toLowerCase());
         }
-        return createFeature(featureType, element);
+        return createFeature(featureType1, element);
     }
 
     private SimpleFeature createFeature2(Element element) throws SchemaException, IllegalAttributeException {
@@ -792,7 +788,7 @@
                 dgnname = dgnname.substring(0, i);
             }
             dgnname = dgnname + "_p";
-            featureType2 = createFeatureElement2(dgnname.toLowerCase());
+            createFeatureElement2(dgnname.toLowerCase());
         }
         return createFeature2(featureType2, element);
     }
@@ -805,7 +801,7 @@
                 dgnname = dgnname.substring(0, i);
             }
             dgnname = dgnname + "_s";
-            featureType3 = createFeatureElement3(dgnname.toLowerCase());
+            createFeatureElement3(dgnname.toLowerCase());
         }
         return createFeature3(featureType3, element);
     }

--
Gitblit v0.0.0-SNAPSHOT