?? ?
2010-08-27 1c3b0bcfb1df3558d72f2dc4d190a4952d3d3119
fix index and landbase
9 files modified
224 ■■■■ changed files
xdgnjobs/pom.xml 6 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java 24 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties 3 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml 6 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/GeneralDgnConvertEdbGeoJobContext.java 3 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/edbgeo/IndexDgnConvertEdbGeoJobContext.java 69 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java 8 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java 29 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java 76 ●●●● patch | view | raw | blame | history
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>
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;
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
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>
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);
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);
    }
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)) {
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);
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);
    }