?? ?
2010-04-30 6d2edcc80c543290a1695e1eb364ba4ac6c0df1f
62 files modified
1 files added
1180 ■■■■ changed files
.gitattributes 1 ●●●● patch | view | raw | blame | history
xdgnjobs/pom.xml 22 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java 9 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-elmparser/pom.xml 13 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-jobcarrier/pom.xml 21 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java 2 ●●● patch | view | raw | blame | history
xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties 17 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml 46 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java 20 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java 53 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java 20 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateFeatureTypeStrategy.java 2 ●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java 53 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java 48 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateMultiSymbolStrategy.java 45 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java 31 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java 20 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java 31 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java 2 ●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatcher.java 4 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java 4 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java 4 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java 4 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java 19 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java 7 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java 13 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java 14 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java 27 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java 16 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java 6 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnFileJobContext.java 8 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleJobContext.java 8 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleUpgradeJobContext.java 4 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractDgnToMySQLJobContext.java 4 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractOracleToMySQLJobContext.java 4 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java 7 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java 7 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/GeneralDgnConvertMySQLJobContext.java 36 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/IndexDgnConvertMySQLJobContext.java 25 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java 6 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractDgnToOraSDOJobContext.java 4 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractOracleToOraSDOJobContext.java 4 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java 8 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java 8 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/GeneralDgnConvertOraSDOJobContext.java 36 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/IndexDgnConvertOraSDOJobContext.java 25 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java 6 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java 39 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java 33 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java 7 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java 7 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java 38 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java 38 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java 14 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/AbstractDgnToShapefileJobContext.java 4 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java 7 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java 7 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/GeneralDgnConvertShpJobContext.java 36 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/IndexDgnConvertShpJobContext.java 25 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java 6 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java 122 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JTSShape.java 3 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/util/FeatureTypeBuilderUtilTest.java 20 ●●●●● patch | view | raw | blame | history
.gitattributes
@@ -155,6 +155,7 @@
xdgnjobs/ximple-spatialjob/src/main/resources/conf/DefaultConvertShpFilter.xml svneol=native#text/xml
xdgnjobs/ximple-spatialjob/src/main/resources/conf/DefaultMapGroups.xml svneol=native#text/xml
xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/filter/ElementDispatcherTest.java svneol=native#text/plain
xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/util/FeatureTypeBuilderUtilTest.java -text svneol=unset#text/plain
xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/util/FileUtilsTest.java -text svneol=unset#text/plain
xdgnjobs/ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testElementFilter.xml svneol=native#text/xml
xdgnjobs/ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testRules.xml svneol=native#text/xml
xdgnjobs/pom.xml
@@ -23,6 +23,7 @@
    <failIfNoTests>false</failIfNoTests>
    <stress.skip.pattern></stress.skip.pattern>
    <online.skip.pattern></online.skip.pattern>
    <java.awt.headless>false</java.awt.headless>
    <allow.test.failure.ignore>false</allow.test.failure.ignore>
  </properties>
@@ -232,6 +233,12 @@
        <groupId>org.geotools</groupId>
        <artifactId>gt-postgis</artifactId>
        <version>${gt2.version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.postgis</groupId>
            <artifactId>postgis-driver</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
@@ -243,6 +250,11 @@
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-referencing</artifactId>
        <version>${gt2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geotools</groupId>
        <artifactId>gt-epsg-h2</artifactId>
        <version>${gt2.version}</version>
      </dependency>
@@ -297,7 +309,7 @@
      <dependency>
        <groupId>org.postgis</groupId>
        <artifactId>postgis-driver</artifactId>
        <version>1.5.0</version>
        <version>1.5.1</version>
      </dependency>
      <dependency>
@@ -310,7 +322,7 @@
      <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>1.7.3</version>
        <version>1.8.0</version>
      </dependency>
      <dependency>
        <groupId>org.awl</groupId>
@@ -389,6 +401,10 @@
      <groupId>org.geotools</groupId>
      <artifactId>gt-main</artifactId>
    </dependency>
    <dependency>
      <groupId>org.geotools</groupId>
      <artifactId>gt-epsg-h2</artifactId>
    </dependency>
    <dependency>
      <artifactId>testng</artifactId>
@@ -450,6 +466,7 @@
          <convention>gt2/jalopygeotools.xml</convention>
          <failOnError>false</failOnError>
        </configuration>
        <!--
        <dependencies>
          <dependency>
            <groupId>org.geotools.maven</groupId>
@@ -457,6 +474,7 @@
            <version>${gt2.version}</version>
          </dependency>
        </dependencies>
        -->
      </plugin>
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java
@@ -6,7 +6,6 @@
import java.nio.charset.CharacterCodingException;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.util.ArrayList;
import org.apache.log4j.Logger;
@@ -22,7 +21,7 @@
 *
 * @author Ulysses
 * @version 0.1
 * @since 2006/5/18 �W�� 11:45:29
 * @since 2006/5/18
 */
public class TextElement extends Element implements GeometryConverter {
    private static final Logger logger = Logger.getLogger(TextElement.class);
@@ -174,11 +173,8 @@
                val.append(temp[i]);
            }
        }
        else
        {
        } else {
            byte[] strRaw = new byte[num * 2];
            ArrayList byteResult = new ArrayList();
            for (int i = 0; i < num; i++)
            {
                short charValue = raw[i + 31];
@@ -186,7 +182,6 @@
                byte lo = (byte) charValue;
                strRaw[i * 2] = hi;
                strRaw[i * 2 + 1] = lo;
            }
            try {
xdgnjobs/ximple-elmparser/pom.xml
@@ -169,14 +169,14 @@
    <!-- Ximple Library -->
    <dependency>
      <artifactId>ximple-dgnio</artifactId>
      <groupId>com.ximple.eofms</groupId>
      <version>${xdgnio.version}</version>
      <artifactId>ximple-dgnio</artifactId>
      <version>1.2.0</version>
    </dependency>
    <dependency>
      <artifactId>ximple-spatialjob</artifactId>
      <groupId>com.ximple.eofms</groupId>
      <version>${xdgnio.version}</version>
      <artifactId>ximple-spatialjob</artifactId>
      <version>1.2.0</version>
    </dependency>
  </dependencies>
@@ -205,8 +205,9 @@
           Use maven from the command line:
             mvn exec:java -Dexec.mainClass="com.ximple.eofms.XElementParser"
        -->
        <artifactId>exec-maven-plugin</artifactId>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.1.1</version>
        <!--
        <executions>
          <execution>
@@ -237,7 +238,7 @@
      <plugin>
        <groupId>com.ximple.eofms.maven</groupId>
        <artifactId>ximple-jar-collector</artifactId>
        <version>${project.version}</version>
        <version>1.2.0</version>
        <executions>
          <execution>
            <goals>
xdgnjobs/ximple-jobcarrier/pom.xml
@@ -207,23 +207,28 @@
           Use maven from the command line:
             mvn exec:java -Dexec.mainClass="com.ximple.eofms.XQuartzJobCarrier"
        -->
        <artifactId>exec-maven-plugin</artifactId>
        <groupId>org.codehaus.mojo</groupId>
        <!--
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.1.1</version>
        <executions>
          <execution>
            <phase>package</phase>
            <!--<phase>package</phase> -->
            <goals>
              <goal>run</goal>
              <goal>java</goal>
            </goals>
          </execution>
        </executions>
        -->
        <configuration>
          <mainClass>com.ximple.eofms.XQuartzJobCarrier</mainClass>
          <!--
          <commandlineArgs>-wizard</commandlineArgs>
          <commandlineArgs>-Dlog4j.configuration=log4j.properties</commandlineArgs>
          -->
          <systemProperties>
            <systemProperty>
              <key>log4j.configuration</key>
              <value>log4j.properties</value>
            </systemProperty>
          </systemProperties>
        </configuration>
        <!--
        <dependencies>
@@ -282,17 +287,17 @@
      -->
      <resource>
        <directory>src/main/resources</directory>
        <!--
        <includes>
          <include>log4j.properties</include>
          <include>quartz.properties</include>
          <include>quartz_jobs.xml</include>
        </includes>
        -->
        <!--
        <excludes>
          <exclude>log4j.properties</exclude>
          <exclude>quartz_jobs.xml</exclude>
        </excludes>
        -->
        <!--
        <excludes>
          <exclude>XQuartzJobWizard*.properties</exclude>
xdgnjobs/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java
@@ -31,7 +31,7 @@
    static Log logger = LogFactory.getLog(XQuartzJobCarrier.class);
    static Options options = new Options();
    private static final String VERSION = "0.9.0";
    private static final String VERSION = "1.2.0";
    public static void main(String[] args) {
        XQuartzJobCarrier instance = new XQuartzJobCarrier();
xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties
@@ -15,14 +15,23 @@
#Configure JobStore
#===============================================================
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.jobStore.misfireThreshold = 60000
#===============================================================
#Configure Plugins
#===============================================================
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
org.quartz.plugin.jobInitializer.fileName = quartz_jobs.xml
#org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
org.quartz.plugin.jobInitializer.fileNames = quartz_jobs.xml
#org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.validating=false
#org.quartz.plugin.jobInitializer.validating=false
org.quartz.plugin.jobInitializer.scanInterval = 120
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false
org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownhook.cleanShutdown = true
xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml
@@ -1,13 +1,26 @@
<?xml version='1.0' encoding='utf-8'?>
<quartz xmlns="http://www.opensymphony.com/quartz/JobSchedulingData"
<job-scheduling-data xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.opensymphony.com/quartz/JobSchedulingData
        http://www.opensymphony.com/quartz/xml/job_scheduling_data_1_5.xsd"
        version="1.5">
                     xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
                     version="1.8">
  <pre-processing-commands>
    <delete-jobs-in-group>*</delete-jobs-in-group>
    <!-- clear all jobs in scheduler -->
    <delete-triggers-in-group>*</delete-triggers-in-group>
    <!-- clear all triggers in scheduler -->
  </pre-processing-commands>
  <processing-directives>
    <!-- if there are any jobs/trigger in scheduler of same name (as in this file), overwrite them -->
    <overwrite-existing-data>true</overwrite-existing-data>
    <!-- if there are any jobs/trigger in scheduler of same name (as in this file), and over-write is false, ignore them rather then generating an error -->
    <ignore-duplicates>false</ignore-duplicates>
  </processing-directives>
  <schedule>
  <job>
    <job-detail>
      <name>ConvertDgn2PostGisIntoPostgre</name>
      <group>DEFAULT</group>
      <description>A job that convert dgn to shapefiles</description>
@@ -15,18 +28,19 @@
      <volatility>false</volatility>
      <durability>false</durability>
      <recover>false</recover>
      <job-data-map allows-transient-data="true">
      <!--job-data-map allows-transient-data="true"-->
      <job-data-map>
        <entry>
          <key>JOBDATA_DIR</key>
          <value>C:\DBS\XDGNDATA</value>
          <value>C:\Usr\Projects\XDCAD\nstpcjobs</value>
        </entry>
        <entry>
          <key>PGHOST</key>
          <value>127.0.0.1</value>
          <value>192.168.11.99</value>
        </entry>
        <entry>
          <key>PGDDATBASE</key>
          <value>tpc</value>
          <value>pgNSTPC</value>
        </entry>
        <entry>
          <key>PGPORT</key>
@@ -38,15 +52,15 @@
        </entry>
        <entry>
          <key>PGUSER</key>
          <value>spatialdb</value>
          <value>tpcdb</value>
        </entry>
        <entry>
          <key>PGPASS</key>
          <value>spatialdb000</value>
          <value>simple000</value>
        </entry>
        <entry>
          <key>ORAHOST</key>
          <value>10.206.120.190</value>
          <value>192.168.11.200</value>
        </entry>
        <entry>
          <key>ORAINST</key>
@@ -109,11 +123,11 @@
          <value>true</value>
        </entry>
        <entry>
          <key>USEEPSG3826</key>
          <key>USEZONE121</key>
          <value>true</value>
        </entry>
      </job-data-map>
    </job-detail>
    </job>
    <trigger>
      <simple>
@@ -129,5 +143,5 @@
      </simple>
    </trigger>
  </job>
</quartz>
  </schedule>
</job-scheduling-data>
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java
@@ -13,6 +13,7 @@
import org.geotools.feature.SchemaException;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
@@ -22,12 +23,8 @@
public class CreateArcLineStringStrategy implements CreateFeatureTypeStrategy {
    static final Log logger = LogFactory.getLog(CreateLineStringStrategy.class);
    GeometryFactory geometryFactory = new GeometryFactory();
    GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    TreeMap<String, SimpleFeatureType> typeBuilders = new TreeMap<String, SimpleFeatureType>();
    static final GeometryConverterDecorator convertDecorator[] = new GeometryConverterDecorator[]{
        new EPSG3826GeometryConverterDecorator(),
        new EPSG3825GeometryConverterDecorator()
    };
    // Create the listener list
    protected EventListenerList listenerList = new EventListenerList();
@@ -60,7 +57,7 @@
    }
    public SimpleFeature createFeature(SimpleFeatureType featureType, Element element,
                                 boolean useTransform, boolean useEPSG3826) throws IllegalAttributeException {
                                 boolean useTransform) throws IllegalAttributeException {
        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
        FrammeAttributeData fLinkage = getFeatureLinkage(element);
        SimpleFeature feature = null;
@@ -69,17 +66,14 @@
            ArcElement lineStringElement = (ArcElement) element;
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(lineStringElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(lineStringElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(lineStringElement);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = lineStringElement.toGeometry(geometryFactory);
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java
@@ -11,6 +11,7 @@
import org.geotools.feature.SchemaException;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
@@ -20,12 +21,8 @@
public class CreateComplexChainStrategy implements CreateFeatureTypeStrategy {
    static final Log logger = LogFactory.getLog(CreateLineStringStrategy.class);
    GeometryFactory geometryFactory = new GeometryFactory();
    GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    TreeMap<String, SimpleFeatureType> typeBuilders = new TreeMap<String, SimpleFeatureType>();
    static final GeometryConverterDecorator convertDecorator[] = new GeometryConverterDecorator[]{
        new EPSG3826GeometryConverterDecorator(),
        new EPSG3825GeometryConverterDecorator()
    };
    // Create the listener list
    protected EventListenerList listenerList = new EventListenerList();
@@ -57,7 +54,7 @@
    }
    public SimpleFeature createFeature(SimpleFeatureType featureType, Element element,
                                 boolean useTransform, boolean useEPSG3826) throws IllegalAttributeException {
                                 boolean useTransform) throws IllegalAttributeException {
        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
        FrammeAttributeData fLinkage = getFeatureLinkage(element);
        SimpleFeature feature = null;
@@ -65,14 +62,10 @@
        if (element instanceof LineStringElement) {
            LineStringElement lineStringElement = (LineStringElement) element;
            Geometry gobj;
            GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(lineStringElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(lineStringElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                convertDecorator.setConverter(lineStringElement);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = lineStringElement.toGeometry(geometryFactory);
            }
@@ -80,6 +73,7 @@
                gobj = geometryFactory.createMultiLineString(new LineString[]{(LineString) gobj});
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -95,19 +89,16 @@
            ComplexChainElement complexChain = (ComplexChainElement) element;
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(complexChain);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(complexChain);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(complexChain);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else
                gobj = complexChain.toGeometry(geometryFactory);
            if (gobj instanceof LineString) {
                gobj = geometryFactory.createMultiLineString(new LineString[]{(LineString) gobj});
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -123,13 +114,9 @@
            LineElement lineElement = (LineElement) element;
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(lineElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(lineElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(lineElement);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = lineElement.toGeometry(geometryFactory);
            }
@@ -137,6 +124,7 @@
                gobj = geometryFactory.createMultiLineString(new LineString[]{(LineString) gobj});
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -153,13 +141,9 @@
            ArcElement arcElement = (ArcElement) element;
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(arcElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(arcElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(arcElement);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = arcElement.toGeometry(geometryFactory);
            }
@@ -167,6 +151,7 @@
                gobj = geometryFactory.createMultiLineString(new LineString[]{(LineString) gobj});
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java
@@ -13,6 +13,7 @@
import org.geotools.feature.SchemaException;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
@@ -22,12 +23,8 @@
public class CreateEllipseShapeStrategy implements CreateFeatureTypeStrategy {
    static final Log logger = LogFactory.getLog(CreateShapeStrategy.class);
    GeometryFactory geometryFactory = new GeometryFactory();
    GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    TreeMap<String, SimpleFeatureType> typeBuilders = new TreeMap<String, SimpleFeatureType>();
    static final GeometryConverterDecorator convertDecorator[] = new GeometryConverterDecorator[]{
        new EPSG3826GeometryConverterDecorator(),
        new EPSG3825GeometryConverterDecorator()
    };
    // Create the listener list
    protected EventListenerList listenerList = new EventListenerList();
@@ -58,7 +55,7 @@
    }
    public SimpleFeature createFeature(SimpleFeatureType featureType, Element element,
                                 boolean useTransform, boolean useEPSG3826) throws IllegalAttributeException {
                                 boolean useTransform) throws IllegalAttributeException {
        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
        FrammeAttributeData fLinkage = getFeatureLinkage(element);
        SimpleFeature feature = null;
@@ -67,17 +64,14 @@
            EllipseElement ellipseElement = (EllipseElement) element;
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(ellipseElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(ellipseElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(ellipseElement);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = ellipseElement.toGeometry(geometryFactory);
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateFeatureTypeStrategy.java
@@ -10,7 +10,7 @@
    public SimpleFeatureType createFeatureElement(String featureName) throws SchemaException;
    public SimpleFeature createFeature(SimpleFeatureType featureType, Element element,
                                 boolean useTransform, boolean useEPSG3826) throws IllegalAttributeException;
                                 boolean useTransform) throws IllegalAttributeException;
    public void addCreateFeatureTypeEventListener(CreateFeatureTypeEventListener listener);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java
@@ -12,6 +12,7 @@
import org.geotools.feature.SchemaException;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
@@ -21,12 +22,8 @@
public class CreateLineStringStrategy implements CreateFeatureTypeStrategy {
    static final Log logger = LogFactory.getLog(CreateLineStringStrategy.class);
    GeometryFactory geometryFactory = new GeometryFactory();
    GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    TreeMap<String, SimpleFeatureType> typeBuilders = new TreeMap<String, SimpleFeatureType>();
    static final GeometryConverterDecorator convertDecorator[] = new GeometryConverterDecorator[]{
        new EPSG3826GeometryConverterDecorator(),
        new EPSG3825GeometryConverterDecorator()
    };
    // Create the listener list
    protected EventListenerList listenerList = new EventListenerList();
@@ -58,7 +55,7 @@
    }
    public SimpleFeature createFeature(SimpleFeatureType featureType, Element element,
                                 boolean useTransform, boolean useEPSG3826) throws IllegalAttributeException {
                                 boolean useTransform) throws IllegalAttributeException {
        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
        FrammeAttributeData fLinkage = getFeatureLinkage(element);
        SimpleFeature feature = null;
@@ -67,17 +64,14 @@
            LineStringElement lineStringElement = (LineStringElement) element;
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(lineStringElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(lineStringElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(lineStringElement);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = lineStringElement.toGeometry(geometryFactory);
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -93,13 +87,9 @@
            ComplexChainElement complexChain = (ComplexChainElement) element;
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(complexChain);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(complexChain);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(complexChain);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = complexChain.toGeometry(geometryFactory);
            }
@@ -113,6 +103,7 @@
                gobj = geometryFactory.createLineString(coordinateList.toCoordinateArray());
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -128,17 +119,14 @@
            LineElement lineElement = (LineElement) element;
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(lineElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(lineElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(lineElement);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = lineElement.toGeometry(geometryFactory);
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -155,17 +143,14 @@
            ArcElement arcElement = (ArcElement) element;
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(arcElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(arcElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(arcElement);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = arcElement.toGeometry(geometryFactory);
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java
@@ -9,6 +9,7 @@
import org.geotools.feature.SchemaException;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
@@ -18,12 +19,8 @@
public class CreateLineTextStrategy implements CreateFeatureTypeStrategy {
    static final Log logger = LogFactory.getLog(CreateLineTextStrategy.class);
    GeometryFactory geometryFactory = new GeometryFactory();
    GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    TreeMap<String, SimpleFeatureType> typeBuilders = new TreeMap<String, SimpleFeatureType>();
    static final GeometryConverterDecorator convertDecorator[] = new GeometryConverterDecorator[]{
        new EPSG3826GeometryConverterDecorator(),
        new EPSG3825GeometryConverterDecorator()
    };
    // Create the listener list
    protected EventListenerList listenerList = new EventListenerList();
@@ -55,7 +52,7 @@
    }
    public SimpleFeature createFeature(SimpleFeatureType featureType, Element element,
                                 boolean useTransform, boolean useEPSG3826) throws IllegalAttributeException {
                                 boolean useTransform) throws IllegalAttributeException {
        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
        FrammeAttributeData fLinkage = getFeatureLinkage(element);
        SimpleFeature feature = null;
@@ -64,18 +61,14 @@
            LineStringElement lineStringElement = (LineStringElement) element;
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(lineStringElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(lineStringElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(lineStringElement);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = lineStringElement.toGeometry(geometryFactory);
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -95,10 +88,10 @@
            ptEnd.y = ptOrigin.y + txtElement.getTextHeight();
            Coordinate[] vect = new Coordinate[2];
            if (useTransform) {
                vect[0] = useEPSG3826 ?
                vect[0] = (FeatureTypeBuilderUtil.getDefaultFeatureSRID() == 3826) ?
                    TWDDatumConverter.fromTM2ToEPSG3826(ptOrigin) :
                    TWDDatumConverter.fromTM2ToEPSG3825(ptOrigin);
                vect[1] = useEPSG3826 ?
                vect[1] = FeatureTypeBuilderUtil.getDefaultFeatureSRID() == 3826 ?
                    TWDDatumConverter.fromTM2ToEPSG3826(ptEnd) :
                    TWDDatumConverter.fromTM2ToEPSG3825(ptEnd);
            } else {
@@ -112,6 +105,7 @@
            txtElement.getRotationAngle();
            line.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
            feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                line,
                fLinkage.getFsc(),
@@ -127,13 +121,9 @@
            ComplexChainElement complexChain = (ComplexChainElement) element;
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(complexChain);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(complexChain);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(complexChain);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = complexChain.toGeometry(geometryFactory);
            }
@@ -149,6 +139,7 @@
                gobj = geometryFactory.createLineString(coordinateList.toCoordinateArray());
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -164,16 +155,13 @@
            LineElement lineElement = (LineElement) element;
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(lineElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(lineElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(lineElement);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = lineElement.toGeometry(geometryFactory);
            }
            gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
            feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                gobj,
                fLinkage.getFsc(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateMultiSymbolStrategy.java
@@ -4,6 +4,7 @@
import com.vividsolutions.jts.geom.CoordinateList;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.PrecisionModel;
import com.vividsolutions.jts.util.Assert;
import com.ximple.eofms.util.*;
import com.ximple.io.dgn7.*;
@@ -13,6 +14,7 @@
import org.geotools.feature.SchemaException;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
@@ -25,12 +27,8 @@
public class CreateMultiSymbolStrategy implements CreateFeatureTypeStrategy {
    static final Log logger = LogFactory.getLog(CreateMultiSymbolStrategy.class);
    GeometryFactory geometryFactory = new GeometryFactory();
    GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    TreeMap<String, SimpleFeatureType> typeBuilders = new TreeMap<String, SimpleFeatureType>();
    static final GeometryConverterDecorator convertDecorator[] = new GeometryConverterDecorator[]{
        new EPSG3826AnchorGeometryConverterDecorator(),
        new EPSG3825AnchorGeometryConverterDecorator()
    };
    // Create the listener list
    protected EventListenerList listenerList = new EventListenerList();
@@ -62,7 +60,7 @@
    }
    public SimpleFeature createFeature(SimpleFeatureType featureType, Element element,
                                 boolean useTransform, boolean useEPSG3826) throws IllegalAttributeException {
                                       boolean useTransform) throws IllegalAttributeException {
        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
        FrammeAttributeData fLinkage = getFeatureLinkage(element);
        SimpleFeature feature = null;
@@ -86,17 +84,14 @@
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(txtElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(txtElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(txtElement);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = txtElement.toGeometry(geometryFactory);
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -127,10 +122,9 @@
            Iterator<Element> txtElement =  nodeElement.iterator();
            while(txtElement.hasNext())
            {
            while (txtElement.hasNext()) {
                if (txtElement instanceof TextElement) {
             TextElement txtChildElement = (TextElement) element;
              char[] charArray = txtChildElement.getText().toCharArray();
@@ -141,8 +135,7 @@
            }
            for(int i = 0  ;  i < charArray.length ; i++)
            {
                    for (int i = 0; i < charArray.length; i++) {
            StringBuilder sb = new StringBuilder();
            sb.append("OCT");
@@ -153,18 +146,15 @@
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(txtChildElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(txtChildElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                            GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                            convertDecorator.setConverter(txtChildElement);
                            gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = txtChildElement.toGeometry(geometryFactory);
            }
            if (gobj != null)
                            gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -182,9 +172,14 @@
                    sb.toString()
                }, null);
            }
                } else {
                    logger.info("CreateMultiSymbolStrategy cannot conver " + element.toString() + "to Feature");
                    return null;
                }
            }
        } else {
            logger.info("CreateMultiSymbolStrategy cannot conver " + element.toString() + "to Feature");
            return null;
        }
        return feature;
    }
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java
@@ -10,6 +10,7 @@
import org.geotools.feature.SchemaException;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
@@ -19,12 +20,8 @@
public class CreateShapeStrategy implements CreateFeatureTypeStrategy {
    static final Log logger = LogFactory.getLog(CreateShapeStrategy.class);
    GeometryFactory geometryFactory = new GeometryFactory();
    GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    TreeMap<String, SimpleFeatureType> typeBuilders = new TreeMap<String, SimpleFeatureType>();
    static final GeometryConverterDecorator convertDecorator[] = new GeometryConverterDecorator[]{
        new EPSG3826GeometryConverterDecorator(),
        new EPSG3825GeometryConverterDecorator()
    };
    // Create the listener list
    protected EventListenerList listenerList = new EventListenerList();
@@ -56,7 +53,7 @@
    }
    public SimpleFeature createFeature(SimpleFeatureType featureType, Element element,
                                 boolean useTransform, boolean useEPSG3826) throws IllegalAttributeException {
                                 boolean useTransform) throws IllegalAttributeException {
        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
        FrammeAttributeData fLinkage = getFeatureLinkage(element);
        SimpleFeature feature = null;
@@ -65,18 +62,15 @@
            ShapeElement shapeElement = (ShapeElement) element;
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(shapeElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(shapeElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(shapeElement);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = shapeElement.toGeometry(geometryFactory);
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -92,17 +86,14 @@
            ComplexShapeElement complexShape = (ComplexShapeElement) element;
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(complexShape);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(complexShape);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(complexShape);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = complexShape.toGeometry(geometryFactory);
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java
@@ -13,6 +13,7 @@
import org.geotools.feature.SchemaException;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
@@ -24,12 +25,8 @@
public class CreateSymbolStrategy implements CreateFeatureTypeStrategy {
    static final Log logger = LogFactory.getLog(CreateSymbolStrategy.class);
    GeometryFactory geometryFactory = new GeometryFactory();
    GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    TreeMap<String, SimpleFeatureType> typeBuilders = new TreeMap<String, SimpleFeatureType>();
    static final GeometryConverterDecorator convertDecorator[] = new GeometryConverterDecorator[]{
        new EPSG3826GeometryConverterDecorator(),
        new EPSG3825GeometryConverterDecorator()
    };
    // Create the listener list
    protected EventListenerList listenerList = new EventListenerList();
@@ -61,7 +58,7 @@
    }
    public SimpleFeature createFeature(SimpleFeatureType featureType, Element element,
                                 boolean useTransform, boolean useEPSG3826) throws IllegalAttributeException {
                                 boolean useTransform) throws IllegalAttributeException {
        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
        FrammeAttributeData fLinkage = getFeatureLinkage(element);
        SimpleFeature feature = null;
@@ -84,17 +81,14 @@
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(txtElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(txtElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(txtElement);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = txtElement.toGeometry(geometryFactory);
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java
@@ -10,6 +10,7 @@
import org.geotools.feature.SchemaException;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
@@ -21,12 +22,8 @@
public class CreateTextStrategy implements CreateFeatureTypeStrategy {
    static final Log logger = LogFactory.getLog(CreateTextStrategy.class);
    GeometryFactory geometryFactory = new GeometryFactory();
    GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    TreeMap<String, SimpleFeatureType> typeBuilders = new TreeMap<String, SimpleFeatureType>();
    static final GeometryConverterDecorator convertDecorator[] = new GeometryConverterDecorator[]{
        new EPSG3826GeometryConverterDecorator(),
        new EPSG3825GeometryConverterDecorator()
    };
    // Create the listener list
    protected EventListenerList listenerList = new EventListenerList();
@@ -58,7 +55,7 @@
    }
    public SimpleFeature createFeature(SimpleFeatureType featureType, Element element,
                                 boolean useTransform, boolean useEPSG3826) throws IllegalAttributeException {
                                 boolean useTransform) throws IllegalAttributeException {
        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
        FrammeAttributeData fLinkage = getFeatureLinkage(element);
        SimpleFeature feature = null;
@@ -71,17 +68,14 @@
            content = content.replace('\u0000', ' ');
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(txtElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(txtElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(txtElement);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = txtElement.toGeometry(geometryFactory);
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -113,17 +107,14 @@
            angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
            Geometry gobj;
            if (useTransform) {
                if (useEPSG3826) {
                    convertDecorator[0].setConverter(nodeElement);
                    gobj = convertDecorator[0].toGeometry(geometryFactory);
                } else {
                    convertDecorator[1].setConverter(nodeElement);
                    gobj = convertDecorator[1].toGeometry(geometryFactory);
                }
                GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
                convertDecorator.setConverter(nodeElement);
                gobj = convertDecorator.toGeometry(geometryFactory);
            } else {
                gobj = nodeElement.toGeometry(geometryFactory);
            }
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    fLinkage.getFsc(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java
@@ -6,7 +6,7 @@
public interface ElementDispatchableFilter {
    public boolean isDispatchable(Element element);
    public SimpleFeature execute(Element element, boolean useTransform, boolean useEPSG3826);
    public SimpleFeature execute(Element element, boolean useTransform);
    void setUseLongName(boolean useLongName);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatcher.java
@@ -40,10 +40,10 @@
        }
    }
    public SimpleFeature execute(Element element, boolean useTransform, boolean useEPSG3826) {
    public SimpleFeature execute(Element element, boolean useTransform) {
        for (ElementDispatchableFilter rule : rules) {
            if (rule.isDispatchable(element)) {
                return rule.execute(element, useTransform, useEPSG3826);
                return rule.execute(element, useTransform);
            }
        }
        return null;
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java
@@ -75,11 +75,11 @@
            (compareType(element) == 0);
    }
    public SimpleFeature execute(Element element, boolean useTransform, boolean useEPSG3826) {
    public SimpleFeature execute(Element element, boolean useTransform) {
        try {
            String ftName = getFeatureTypeName(element);
            SimpleFeatureType ftype = createStrategy.createFeatureElement(ftName);
            return createStrategy.createFeature(ftype, element, useTransform, useEPSG3826);
            return createStrategy.createFeature(ftype, element, useTransform);
        } catch (SchemaException e) {
            logger.error(e.getMessage(), e);
        } catch (IllegalAttributeException e) {
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java
@@ -85,11 +85,11 @@
            (lid == element.getLevelIndex()) && (compareLevel(element) == 0);
    }
    public SimpleFeature execute(Element element, boolean useTransform, boolean useEPSG3826) {
    public SimpleFeature execute(Element element, boolean useTransform) {
        try {
            String ftName = getFeatureTypeName(element);
            SimpleFeatureType ftype = createStrategy.createFeatureElement(ftName);
            return createStrategy.createFeature(ftype, element, useTransform, useEPSG3826);
            return createStrategy.createFeature(ftype, element, useTransform);
        } catch (SchemaException e) {
            logger.error(e.getMessage(), e);
        } catch (IllegalAttributeException e) {
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java
@@ -53,11 +53,11 @@
            (compareType(element) == 0);
    }
    public SimpleFeature execute(Element element, boolean useTransform, boolean useEPSG3826) {
    public SimpleFeature execute(Element element, boolean useTransform) {
        try {
            String ftName = getFeatureTypeName(element);
            SimpleFeatureType ftype = createStrategy.createFeatureElement(ftName);
            return createStrategy.createFeature(ftype, element, useTransform, useEPSG3826);
            return createStrategy.createFeature(ftype, element, useTransform);
        } catch (SchemaException e) {
            logger.error(e.getMessage(), e);
        } catch (IllegalAttributeException e) {
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java
@@ -11,6 +11,7 @@
import java.util.StringTokenizer;
import java.util.TreeMap;
import com.ximple.eofms.util.FeatureTypeBuilderUtil;
import org.apache.commons.logging.Log;
import org.geotools.data.DataStore;
import org.geotools.data.oracle.OracleDataStore;
@@ -54,7 +55,7 @@
    private static final String TESTCOUNT = "TESTCOUNT";
    private static final String COPYCONNECTIVITYMODE = "COPYCONNECTIVITYMODE";
    private static final String PROFILEMODE = "PROFILEMODE";
    private static final String USEEPSG3826 = "USEEPSG3826";
    private static final String USEZONE121 = "USEZONE121";
    protected static OracleDataStoreFactory dataStoreFactory = new OracleDataStoreFactory();
@@ -74,7 +75,7 @@
    protected boolean _testMode = false;
    protected boolean _copyConnectivityMode = false;
    protected boolean _profileMode = false;
    protected boolean _useEPSG3826 = true;
    protected boolean _useZone121 = true;
    protected boolean _useTransform = true;
    protected int _testCount = -1;
@@ -140,7 +141,12 @@
        _testCount = dataMap.getIntFromString(TESTCOUNT);
        _copyConnectivityMode = dataMap.getBooleanFromString(COPYCONNECTIVITYMODE);
        _profileMode = dataMap.getBooleanFromString(PROFILEMODE);
        _useEPSG3826 = dataMap.getBooleanFromString(USEEPSG3826);
        _useZone121 = dataMap.getBooleanFromString(USEZONE121);
        if (_useZone121) {
            FeatureTypeBuilderUtil.setDefaultFeatureSRID(3826);
        } else {
            FeatureTypeBuilderUtil.setDefaultFeatureSRID(3825);
        }
        // Validate the required input
        if (_dataPath == null) {
@@ -183,8 +189,7 @@
    }
    protected abstract AbstractOracleJobContext prepareJobContext(String targetSchemaName, String filterPath,
                                                                  boolean profileMode,
                                                                  boolean useTransform, boolean useEPSG3826);
                                                                  boolean profileMode, boolean useTransform);
    protected byte[] getBytesFromBLOB(BLOB blob) throws SQLException, BufferOverflowException {
        byte[] raw = null;
@@ -340,8 +345,8 @@
        return _useTransform;
    }
    public boolean isEPSG3826() {
        return _useEPSG3826;
    public boolean isZone121() {
        return _useZone121;
    }
    public DataStore getSourceDataStore() {
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java
@@ -46,7 +46,6 @@
public class DummyFeatureConvertJobContext extends AbstractDgnFileJobContext {
    static final Log logger = LogFactory.getLog(DummyFeatureConvertJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    static final String SHPOUTPATH = "shpout";
    private String dataOut = null;
@@ -60,8 +59,8 @@
    private String _filterConfig;
    public DummyFeatureConvertJobContext(String dataPath, String filterConfig, boolean profileMode,
                                         boolean useTransform, boolean useEPSG3826) {
        super(dataPath, profileMode, useTransform, useEPSG3826);
                                         boolean useTransform) {
        super(dataPath, profileMode, useTransform);
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        _filterConfig = filterConfig;
        elementDispatcher = createElementDispatcher();
@@ -109,7 +108,7 @@
            return;
        }
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed(), isEPSG3826());
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed());
        if (feature == null) {
            FrammeAttributeData linkage =
                AbstractFLinkageDispatchableFilter.getFeatureLinkage(element);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java
@@ -85,7 +85,6 @@
    protected static MySQLDataStoreFactory dataStoreFactory = new MySQLDataStoreFactory();
    GeometryFactory _geomFactory = new GeometryFactory();
    protected String _myHost;
    protected String _myDatabase;
    protected String _myPort;
@@ -102,9 +101,9 @@
    }
    protected AbstractOracleJobContext prepareJobContext(String targetSchemaName, String filterPath, boolean profileMode,
                                                         boolean useTransform, boolean useEPSG3826) {
                                                         boolean useTransform) {
        return new OracleConvertMySQLJobContext(getDataPath(), getTargetDataStore(), filterPath, profileMode,
                                                useTransform, useEPSG3826);
                                                useTransform);
    }
    protected void extractJobConfiguration(JobDetail jobDetail) throws JobExecutionException {
@@ -200,7 +199,7 @@
                for (String orgSchema : _orgSchema) {
                    OracleConvertMySQLJobContext jobContext =
                        (OracleConvertMySQLJobContext) prepareJobContext(targetSchemaName, _filterPath,
                                                                         isProfileMode(), isTransformed(), isEPSG3826());
                                                                         isProfileMode(), isTransformed());
                    jobContext.setSourceDataStore(getSourceDataStore());
                    // jobContext.setConvertElementIn(_convertElementIn);
                    jobContext.setElementLogging(checkElementLogging());
@@ -564,7 +563,7 @@
        for (File dgnFile : dgnFiles) {
            IndexDgnConvertMySQLJobContext convertContext =
                new IndexDgnConvertMySQLJobContext(getDataPath(), getTargetDataStore(), isProfileMode(),
                                                   isTransformed(), isEPSG3826());
                                                   isTransformed());
            logger.debug("--- start dgnfile-" + dgnFile.toString() + " ---");
            try {
                convertContext.setExecutionContext(context);
@@ -680,7 +679,7 @@
        for (File dgnFile : dgnFiles) {
            GeneralDgnConvertMySQLJobContext convertContext =
                new GeneralDgnConvertMySQLJobContext(getDataPath(), getTargetDataStore(), isProfileMode(),
                                                     isTransformed(), isEPSG3826());
                                                     isTransformed());
            logger.info("--- start dgnfile-" + dgnFile.toString() + " ---");
            try {
                convertContext.setExecutionContext(context);
@@ -831,7 +830,7 @@
        for (File dgnFile : dgnFiles) {
            FeatureDgnConvertMySQLJobContext convertContext =
                new FeatureDgnConvertMySQLJobContext(getDataPath(), getTargetDataStore(), _filterPath, isProfileMode(),
                                                     isTransformed(), isEPSG3826());
                                                     isTransformed());
            logger.info("--- start dgnfile-" + dgnFile.toString() + " ---");
            try {
                convertContext.setExecutionContext(context);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java
@@ -86,7 +86,6 @@
    protected static OracleDataStoreFactory dataStoreFactory = new OracleDataStoreFactory();
    GeometryFactory _geomFactory = new GeometryFactory();
    protected String _sdoHost;
    protected String _sdoDatabase;
    protected String _sdoPort;
@@ -103,9 +102,9 @@
    }
    protected AbstractOracleJobContext prepareJobContext(String targetSchemaName, String filterPath,
                                                         boolean profileMode, boolean useTransform, boolean useEPSG3826) {
                                                         boolean profileMode, boolean useTransform) {
        return new OracleConvertOraSDOJobContext(getDataPath(), getTargetDataStore(), filterPath, profileMode,
                                                 useTransform, useEPSG3826);
                                                 useTransform);
    }
    protected void extractJobConfiguration(JobDetail jobDetail) throws JobExecutionException {
@@ -201,8 +200,7 @@
                for (String orgSchema : _orgSchema) {
                    OracleConvertOraSDOJobContext jobContext =
                        (OracleConvertOraSDOJobContext) prepareJobContext(targetSchemaName, _filterPath,
                                                                          isProfileMode(),
                                                                          isTransformed(), isEPSG3826());
                                                                          isProfileMode(), isTransformed());
                    jobContext.setSourceDataStore(getSourceDataStore());
                    // jobContext.setConvertElementIn(_convertElementIn);
                    jobContext.setElementLogging(checkElementLogging());
@@ -567,7 +565,7 @@
        for (File dgnFile : dgnFiles) {
            IndexDgnConvertOraSDOJobContext convertContext =
                new IndexDgnConvertOraSDOJobContext(getDataPath(), getTargetDataStore(), isProfileMode(),
                                                    isTransformed(), isEPSG3826());
                                                    isTransformed());
            logger.debug("--- start dgnfile-" + dgnFile.toString() + " ---");
            try {
                convertContext.setExecutionContext(context);
@@ -683,7 +681,7 @@
        for (File dgnFile : dgnFiles) {
            GeneralDgnConvertOraSDOJobContext convertContext =
                new GeneralDgnConvertOraSDOJobContext(getDataPath(), getTargetDataStore(), isProfileMode(),
                                                      isTransformed(), isEPSG3826());
                                                      isTransformed());
            logger.info("--- start dgnfile-" + dgnFile.toString() + " ---");
            try {
                convertContext.setExecutionContext(context);
@@ -834,7 +832,7 @@
        for (File dgnFile : dgnFiles) {
            FeatureDgnConvertOraSDOJobContext convertContext =
                new FeatureDgnConvertOraSDOJobContext(getDataPath(), getTargetDataStore(), _filterPath, isProfileMode(),
                                                      isTransformed(), isEPSG3826());
                                                      isTransformed());
            logger.info("--- start dgnfile-" + dgnFile.toString() + " ---");
            try {
                convertContext.setExecutionContext(context);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java
@@ -39,8 +39,6 @@
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.vividsolutions.jts.geom.GeometryFactory;
import oracle.jdbc.OracleConnection;
import oracle.jdbc.OracleResultSet;
import oracle.sql.ARRAY;
@@ -62,8 +60,6 @@
import com.ximple.io.dgn7.ElementType;
import com.ximple.io.dgn7.IElementHandler;
import com.ximple.io.dgn7.Lock;
import com.ximple.io.dgn7.ShapeElement;
import com.ximple.io.dgn7.TextElement;
import com.ximple.util.PrintfFormat;
public class OracleConvertDgn2PostGISJob extends AbstractOracleDatabaseJob {
@@ -96,7 +92,6 @@
    protected static PostgisDataStoreFactory dataStoreFactory = new PostgisDataStoreFactory();
    GeometryFactory _geomFactory = new GeometryFactory();
    protected String _pgHost;
    protected String _pgDatabase;
    protected String _pgPort;
@@ -118,9 +113,9 @@
    protected AbstractOracleJobContext prepareJobContext(String targetSchemaName, String filterPath,
                                                         boolean profileMode,
                                                         boolean useTransform, boolean useEPSG3826) {
                                                         boolean useTransform) {
        return new OracleConvertPostGISJobContext(getDataPath(),
                                                  getTargetDataStore(), targetSchemaName, filterPath, profileMode, useTransform, useEPSG3826);
                                                  getTargetDataStore(), targetSchemaName, filterPath, profileMode, useTransform);
    }
    protected void extractJobConfiguration(JobDetail jobDetail) throws JobExecutionException {
@@ -239,13 +234,13 @@
                OracleConvertPostGISJobContext jobContext =
                    (OracleConvertPostGISJobContext) prepareJobContext(targetSchemaName, _filterPath,
                                                                       isProfileMode(), isTransformed(), isEPSG3826());
                                                                       isProfileMode(), isTransformed());
                jobContext.setSourceDataStore(getSourceDataStore());
                // jobContext.setConvertElementIn(_convertElementIn);
                jobContext.setElementLogging(checkElementLogging());
                jobContext.setExecutionContext(context);
                
                CreateHibernateSequence(jobContext);
                createHibernateSequence(jobContext);
                long tStep = System.currentTimeMillis();
@@ -389,7 +384,7 @@
    }
        private void CreateHibernateSequence(OracleConvertPostGISJobContext jobContext) throws SQLException {
        private void createHibernateSequence(OracleConvertPostGISJobContext jobContext) throws SQLException {
        Connection connection = jobContext.getOracleConnection();
        try {
@@ -398,7 +393,7 @@
            stmt.close();
        } catch (SQLException e)
        {
            logger.warn("HIBERNATE_SEQUENCE �w�g�s�b");
            logger.warn("HIBERNATE_SEQUENCE is already exist.");
        }
    }
@@ -732,7 +727,7 @@
            if (dgnFile.isDirectory()) continue;
            IndexDgnConvertPostGISJobContext convertContext =
                new IndexDgnConvertPostGISJobContext(getDataPath(), getTargetDataStore(), targetSchemaName,
                                                     isProfileMode(), isTransformed(), isEPSG3826());
                                                     isProfileMode(), isTransformed());
            logger.info("--- start index dgnfile-" + dgnFile.toString() + " ---");
            FileInputStream fs = null;
            FileChannel fc = null;
@@ -891,7 +886,7 @@
            GeneralDgnConvertPostGISJobContext convertContext =
                new GeneralDgnConvertPostGISJobContext(getDataPath(), getTargetDataStore(), targetSchemaName,
                                                       isProfileMode(), isTransformed(), isEPSG3826());
                                                       isProfileMode(), isTransformed());
            logger.info("--- start other dgnfile-" + dgnFile.toString() + " ---");
            FileInputStream fs = null;
            FileChannel fc;
@@ -1074,7 +1069,7 @@
        for (File dgnFile : dgnFiles) {
            FeatureDgnConvertPostGISJobContext convertContext =
                new FeatureDgnConvertPostGISJobContext(getDataPath(), getTargetDataStore(), targetSchemaName, _filterPath,
                                                       isProfileMode(), isTransformed(), isEPSG3826());
                                                       isProfileMode(), isTransformed());
            logger.info("--- start dgnfile-" + dgnFile.toString() + " ---");
            try {
                convertContext.setExecutionContext(context);
@@ -1312,7 +1307,7 @@
            sql = new StringBuilder("ALTER TABLE ");
            sql.append(encodeSchemaTableName(pgSchema, DataReposVersionManager.XGVERSIONTABLE_NAME));
            sql.append(" OWNER TO spatialdb");
            sql.append(" OWNER TO ").append(_pgUsername);
            stmt.executeUpdate(sql.toString());
            sql = new StringBuilder("GRANT ALL ON TABLE ");
@@ -1381,7 +1376,7 @@
            StringBuilder sbSQL = new StringBuilder("CREATE SCHEMA ");
            sbSQL.append(s).append(' ');
            sbSQL.append("AUTHORIZATION spatialdb");
            sbSQL.append("AUTHORIZATION ").append(_pgUsername);
            stmt = connection.createStatement();
            stmt.executeUpdate(sbSQL.toString());
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java
@@ -72,15 +72,13 @@
        }
    }
    GeometryFactory _geomFactory = new GeometryFactory();
    public Log getLogger() {
        return logger;
    }
    protected AbstractOracleJobContext prepareJobContext(String targetSchemaName, String filterPath,
                                                         boolean profileMode, boolean useTransform, boolean useEPSG3826) {
        return new OracleConvertShapefilesJobContext(filterPath, profileMode, useTransform, useEPSG3826);
                                                         boolean profileMode, boolean useTransform) {
        return new OracleConvertShapefilesJobContext(filterPath, profileMode, useTransform);
    }
    protected void extractJobConfiguration(JobDetail jobDetail) throws JobExecutionException {
@@ -113,7 +111,7 @@
                for (String orgSchema : _orgSchema) {
                    OracleConvertShapefilesJobContext jobContext = (OracleConvertShapefilesJobContext)
                        prepareJobContext(targetSchemaName, _filterPath, isProfileMode(), isTransformed(), isEPSG3826());
                        prepareJobContext(targetSchemaName, _filterPath, isProfileMode(), isTransformed());
                    jobContext.setSourceDataStore(getSourceDataStore());
                    jobContext.setDataPath(_dataPath);
                    jobContext.setConvertElementIn(_convertElementIn);
@@ -475,7 +473,7 @@
        for (File dgnFile : dgnFiles) {
            IndexDgnConvertShpJobContext convertContext = new IndexDgnConvertShpJobContext(getDataPath(), isProfileMode(),
                                                                                           isTransformed(), isEPSG3826());
                                                                                           isTransformed());
            logger.debug("--- start dgnfile-" + dgnFile.toString() + " ---");
            try {
                convertContext.setExecutionContext(context);
@@ -591,8 +589,7 @@
        for (File dgnFile : dgnFiles) {
            GeneralDgnConvertShpJobContext convertContext = new GeneralDgnConvertShpJobContext(getDataPath(),
                                                                                               isProfileMode(),
                                                                                               isTransformed(),
                                                                                               isEPSG3826());
                                                                                               isTransformed());
            logger.info("--- start dgnfile-" + dgnFile.toString() + " ---");
            try {
                convertContext.setExecutionContext(context);
@@ -739,8 +736,7 @@
        for (File dgnFile : dgnFiles) {
            FeatureDgnConvertShpJobContext convertContext = new FeatureDgnConvertShpJobContext(getDataPath(), _filterPath,
                                                                                               isProfileMode(),
                                                                                               isTransformed(),
                                                                                               isEPSG3826());
                                                                                               isTransformed());
            logger.info("--- start dgnfile-" + dgnFile.toString() + " ---");
            try {
                convertContext.setExecutionContext(context);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java
@@ -36,7 +36,7 @@
        }
        AbstractOracleJobContext jobContext = prepareJobContext(targetSchemaName, _filterPath, isProfileMode(),
                                                                isTransformed(), isEPSG3826());
                                                                isTransformed());
        jobContext.setSourceDataStore(getSourceDataStore());
        try {
@@ -54,8 +54,8 @@
    protected AbstractOracleJobContext prepareJobContext(String targetSchemaName, String filterPath,
                                                         boolean profileMode,
                                                         boolean useTransform, boolean useEPSG3826) {
        return new OracleUpgradeJobContext(profileMode, useTransform, useEPSG3826);
                                                         boolean useTransform) {
        return new OracleUpgradeJobContext(profileMode, useTransform);
    }
    private void exetcuteConvert(AbstractOracleJobContext jobContext,
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnFileJobContext.java
@@ -25,7 +25,6 @@
    private boolean _elementLogging;
    private boolean _profileMode = false;
    private boolean _useTransform = true;
    private boolean _useEPSG3826 = true;
    private long _processTime;
    private long _updateTime;
@@ -35,11 +34,10 @@
// --------------------------- CONSTRUCTORS ---------------------------
    public AbstractDgnFileJobContext(String dataPath, boolean profileMode,
                                     boolean useTransform, boolean useEPSG3826) {
                                     boolean useTransform) {
        _dataPath = dataPath;
        _profileMode = profileMode;
        _useTransform = useTransform;
        _useEPSG3826 = useEPSG3826;
    }
// --------------------- GETTER / SETTER METHODS ---------------------
@@ -74,10 +72,6 @@
    public boolean isTransformed() {
        return _useTransform;
    }
    public boolean isEPSG3826() {
        return _useEPSG3826;
    }
// -------------------------- OTHER METHODS --------------------------
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleJobContext.java
@@ -256,17 +256,15 @@
    private Connection connection = null;
    private boolean profileMode;
    private boolean useTransform;
    private boolean useEPSG3826;
    private long _processTime;
    private long _updateTime;
    private long _processTimeStart;
    private long _updateTimeStart;
    public AbstractOracleJobContext(boolean profileMode, boolean useTransform, boolean useEPSG3826) {
    public AbstractOracleJobContext(boolean profileMode, boolean useTransform) {
        this.profileMode = profileMode;
        this.useTransform = useTransform;
        this.useEPSG3826 = useEPSG3826;
    }
    public OracleDataStore getSourceDataStore() {
@@ -333,10 +331,6 @@
    public boolean isTransformed() {
        return useTransform;
    }
    public boolean isEPSG3826() {
        return useEPSG3826;
    }
    public final void accumulateProcessTime() {
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleUpgradeJobContext.java
@@ -3,8 +3,8 @@
import org.apache.commons.logging.Log;
public class OracleUpgradeJobContext extends AbstractOracleJobContext {
    public OracleUpgradeJobContext(boolean profileMode, boolean useTransform, boolean useEPSG3826) {
        super(profileMode, useTransform, useEPSG3826);
    public OracleUpgradeJobContext(boolean profileMode, boolean useTransform) {
        super(profileMode, useTransform);
    }
    public void startTransaction() {
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractDgnToMySQLJobContext.java
@@ -15,8 +15,8 @@
    protected MySQLDataStore targetDataStore;
    public AbstractDgnToMySQLJobContext(String dataPath, DataStore targetDataStore, boolean profileMode,
                                        boolean useTransform, boolean useEPSG3826) {
        super(dataPath, profileMode, useTransform, useEPSG3826);
                                        boolean useTransform) {
        super(dataPath, profileMode, useTransform);
        this.targetDataStore = (MySQLDataStore) targetDataStore;
    }
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractOracleToMySQLJobContext.java
@@ -15,8 +15,8 @@
    protected MySQLDataStore targetDataStore;
    public AbstractOracleToMySQLJobContext(String dataPath, DataStore targetDataStore, boolean profileMode,
                                           boolean useTransform, boolean useEPSG3826) {
        super(profileMode, useTransform, useEPSG3826);
                                           boolean useTransform) {
        super(profileMode, useTransform);
        if ((targetDataStore != null) && (targetDataStore instanceof MySQLDataStore)) {
            this.targetDataStore = (MySQLDataStore) targetDataStore;
        } else {
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java
@@ -42,7 +42,6 @@
public class DummyFeatureConvertMySQlJobContext extends AbstractDgnToMySQLJobContext {
    static final Log logger = LogFactory.getLog(DummyFeatureConvertMySQlJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    static final String SHPOUTPATH = "shpout";
    private String dataOut = null;
@@ -57,8 +56,8 @@
    private boolean withIndex = false;
    public DummyFeatureConvertMySQlJobContext(String dataPath, DataStore targetDataStore, String filterConfig,
                                              boolean profileMode, boolean useTransform, boolean useEPSG3826) {
        super(dataPath, targetDataStore, profileMode, useTransform, useEPSG3826);
                                              boolean profileMode, boolean useTransform) {
        super(dataPath, targetDataStore, profileMode, useTransform);
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        _filterConfig = filterConfig;
        elementDispatcher = createElementDispatcher();
@@ -106,7 +105,7 @@
            return;
        }
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed(), isEPSG3826());
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed());
        if (feature == null) {
            FrammeAttributeData linkage =
                    AbstractFLinkageDispatchableFilter.getFeatureLinkage(element);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java
@@ -38,7 +38,6 @@
public class FeatureDgnConvertMySQLJobContext extends AbstractDgnToMySQLJobContext {
    static final Log logger = LogFactory.getLog(FeatureDgnConvertMySQLJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    private HashMap<String, ArrayList<SimpleFeature>> featuresContext = new HashMap<String, ArrayList<SimpleFeature>>();
    private HashMap<String, FeatureWriter> featuresWriterContext = new HashMap<String, FeatureWriter>();
@@ -50,8 +49,8 @@
    private boolean withIndex = false;
    public FeatureDgnConvertMySQLJobContext(String dataPath, DataStore targetDataStore, String filterConfig,
                                            boolean profileMode, boolean useTransform, boolean useEPSG3826) {
        super(dataPath, targetDataStore, profileMode, useTransform, useEPSG3826);
                                            boolean profileMode, boolean useTransform) {
        super(dataPath, targetDataStore, profileMode, useTransform);
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        _filterConfig = filterConfig;
        elementDispatcher = createElementDispatcher();
@@ -100,7 +99,7 @@
        }
        // �P�_�O�_�ũM���
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed(), isEPSG3826());
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed());
        if (feature == null) {
            FrammeAttributeData linkage =
                AbstractFLinkageDispatchableFilter.getFeatureLinkage(element);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/GeneralDgnConvertMySQLJobContext.java
@@ -42,13 +42,14 @@
import com.ximple.io.dgn7.UserAttributeData;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
public class GeneralDgnConvertMySQLJobContext extends AbstractDgnToMySQLJobContext {
    static final Log logger = LogFactory.getLog(GeneralDgnConvertMySQLJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    static final GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    private String dataOut = null;
@@ -58,18 +59,13 @@
    private PessimisticMapWrapper txFeaturesContext;
    private TreeMap<String, SimpleFeatureType> featureTypes = new TreeMap<String, SimpleFeatureType>();
    private GeometryConverterDecorator convertDecorator = null;
    private String featureBaseName = null;
    private boolean withIndex = false;
    public GeneralDgnConvertMySQLJobContext(String dataPath, DataStore targetDataStore, boolean profileMode,
                                            boolean useTransform, boolean useEPSG3826) {
        super(dataPath, targetDataStore, profileMode, useTransform, useEPSG3826);
                                            boolean useTransform) {
        super(dataPath, targetDataStore, profileMode, useTransform);
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        if (isEPSG3826())
            convertDecorator = new EPSG3826GeometryConverterDecorator();
        else
            convertDecorator = new EPSG3825GeometryConverterDecorator();
    }
    public void putFeatureCollection(Element element) throws IllegalAttributeException, SchemaException {
@@ -221,6 +217,7 @@
    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);
@@ -230,6 +227,7 @@
            String content = textElement.getText();
            angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(textElement.getColorIndex()),
@@ -260,6 +258,7 @@
            }
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(textNodeElement.getColorIndex()),
@@ -279,6 +278,7 @@
            convertDecorator.setConverter(shapeElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(shapeElement.getColorIndex()),
@@ -293,25 +293,29 @@
            LineStringElement linestring = (LineStringElement) element;
            convertDecorator.setConverter(linestring);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(linestring.getColorIndex()),
                    linestring.getWeight(),
                    linestring.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof LineElement) {
            LineElement line = (LineElement) element;
            convertDecorator.setConverter(line);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(line.getColorIndex()),
                    line.getWeight(),
                    line.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof ArcElement) {
            ArcElement arcElement = (ArcElement) element;
@@ -322,37 +326,43 @@
            */
            convertDecorator.setConverter(arcElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(arcElement.getColorIndex()),
                    arcElement.getWeight(),
                    arcElement.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof EllipseElement) {
            EllipseElement arcElement = (EllipseElement) element;
            convertDecorator.setConverter(arcElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(arcElement.getColorIndex()),
                    arcElement.getWeight(),
                    arcElement.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof ComplexChainElement) {
            ComplexChainElement complexChainElement = (ComplexChainElement) element;
            convertDecorator.setConverter(complexChainElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(complexChainElement.getColorIndex()),
                    complexChainElement.getWeight(),
                    complexChainElement.getLineStyle()
                }, null);
            }
            return null;
        }
        return null;
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/IndexDgnConvertMySQLJobContext.java
@@ -38,15 +38,14 @@
import com.ximple.io.dgn7.UserAttributeData;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
public class IndexDgnConvertMySQLJobContext extends AbstractDgnToMySQLJobContext {
    static final Log logger = LogFactory.getLog(IndexDgnConvertMySQLJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    protected GeometryConverterDecorator convertDecorator;
    static final GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    private HashMap<String, ArrayList<SimpleFeature>> featuresContext = new HashMap<String, ArrayList<SimpleFeature>>();
    private HashMap<String, FeatureWriter> featuresWriterContext = new HashMap<String, FeatureWriter>();
@@ -59,14 +58,9 @@
    private SimpleFeatureType featureType3 = null;
    public IndexDgnConvertMySQLJobContext(String dataPath, DataStore targetDataStore, boolean profileMode,
                                          boolean useTransform, boolean useEPSG3826) {
        super(dataPath, targetDataStore, profileMode, useTransform, useEPSG3826);
                                          boolean useTransform) {
        super(dataPath, targetDataStore, profileMode, useTransform);
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        if (isEPSG3826()) {
            convertDecorator = new EPSG3826GeometryConverterDecorator();
        } else {
            convertDecorator = new EPSG3825GeometryConverterDecorator();
        }
    }
    public void putFeatureCollection(Element element) throws IllegalAttributeException, SchemaException {
@@ -195,7 +189,7 @@
            String tpclid = textElement.getText();
            Envelope extent = TPCLIDConverter.convertTpclIdToEnvelope(tpclid);
            Geometry geom = (isEPSG3826() ?
            Geometry geom = (FeatureTypeBuilderUtil.getDefaultFeatureSRID() == 3826 ?
                geometryFactory.createLinearRing(new Coordinate[]
                    {
                        TWDDatumConverter.fromTM2ToEPSG3826(new Coordinate(extent.getMinX(), extent.getMinY())),
@@ -213,6 +207,7 @@
                        TWDDatumConverter.fromTM2ToEPSG3825(new Coordinate(extent.getMinX(), extent.getMinY())),
                    }));
            geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
            return SimpleFeatureBuilder.build(featureType, new Object[]{
                geom,
                extent.getMinX(),
@@ -234,9 +229,12 @@
            TextElement txtElement = (TextElement) element;
            double angle = txtElement.getRotationAngle();
            angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
            GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
            convertDecorator.setConverter(txtElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
            SimpleFeature feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                convertDecorator.toGeometry(geometryFactory),
                geom,
                colorTable.getColorCode(txtElement.getColorIndex()),
                txtElement.getWeight(),
                txtElement.getLineStyle(),
@@ -265,7 +263,7 @@
                int dx = (i % 2) * TPCLIDConverter.SX600;
                int dy = (i / 2) * TPCLIDConverter.SY600;
                Geometry geom = (isEPSG3826() ?
                Geometry geom = (FeatureTypeBuilderUtil.getDefaultFeatureSRID() == 3826 ?
                    geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[]
                        {
                            TWDDatumConverter.fromTM2ToEPSG3826(new Coordinate(
@@ -293,6 +291,7 @@
                                extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)),
                        }), null));
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                result[i] = SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    extent.getMinX(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java
@@ -69,8 +69,8 @@
    // private String _convertElementIn = null;
    public OracleConvertMySQLJobContext(String dataPath, DataStore oraDS, String filterConfig, boolean profileMode,
                                        boolean useTransform, boolean useEPSG3826) {
        super(dataPath, oraDS, profileMode, useTransform, useEPSG3826);
                                        boolean useTransform) {
        super(dataPath, oraDS, profileMode, useTransform);
        _filterConfig = filterConfig;
        elementDispatcher = createElementDispatcher();
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
@@ -113,7 +113,7 @@
    public void putFeatureCollection(Element element) {
        assert elementDispatcher != null;
        // �P�_�O�_�ũM���
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed(), isEPSG3826());
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed());
        if (feature == null) {
            boolean isEmptySize = false;
            FrammeAttributeData linkage =
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractDgnToOraSDOJobContext.java
@@ -15,8 +15,8 @@
    protected OracleDataStore targetDataStore;
    public AbstractDgnToOraSDOJobContext(String dataPath, DataStore targetDataStore, boolean profileMode,
                                         boolean useTransform, boolean useEPSG3826) {
        super(dataPath, profileMode, useTransform, useEPSG3826);
                                         boolean useTransform) {
        super(dataPath, profileMode, useTransform);
        this.targetDataStore = (OracleDataStore) targetDataStore;
    }
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractOracleToOraSDOJobContext.java
@@ -16,8 +16,8 @@
    protected OracleDataStore targetDataStore;
    public AbstractOracleToOraSDOJobContext(String dataPath, DataStore targetDataStore, boolean profileMode,
                                            boolean useTransform, boolean useEPSG3826) {
        super(profileMode, useTransform, useEPSG3826);
                                            boolean useTransform) {
        super(profileMode, useTransform);
        if ((targetDataStore != null) && (targetDataStore instanceof OracleDataStore)) {
            this.targetDataStore = (OracleDataStore) targetDataStore;
        } else {
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java
@@ -22,6 +22,7 @@
import org.geotools.data.Transaction;
import org.geotools.feature.IllegalAttributeException;
import org.geotools.feature.SchemaException;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.xml.sax.SAXException;
@@ -42,7 +43,6 @@
public class DummyFeatureConvertOraSDOJobContext extends AbstractDgnToOraSDOJobContext {
    static final Log logger = LogFactory.getLog(DummyFeatureConvertOraSDOJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    static final String SHPOUTPATH = "shpout";
    private String dataOut = null;
@@ -57,8 +57,8 @@
    private boolean withIndex = false;
    public DummyFeatureConvertOraSDOJobContext(String dataPath, DataStore targetDataStore, String filterConfig,
                                               boolean profileMode, boolean useTransform, boolean useEPSG3826) {
        super(dataPath, targetDataStore, profileMode, useTransform, useEPSG3826);
                                               boolean profileMode, boolean useTransform) {
        super(dataPath, targetDataStore, profileMode, useTransform);
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        _filterConfig = filterConfig;
        elementDispatcher = createElementDispatcher();
@@ -107,7 +107,7 @@
        }
        // �P�_�O�_�ũM���
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed(), isEPSG3826());
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed());
        if (feature == null) {
            FrammeAttributeData linkage =
                AbstractFLinkageDispatchableFilter.getFeatureLinkage(element);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java
@@ -38,7 +38,6 @@
public class FeatureDgnConvertOraSDOJobContext extends AbstractDgnToOraSDOJobContext {
    static final Log logger = LogFactory.getLog(FeatureDgnConvertOraSDOJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    private HashMap<String, ArrayList<SimpleFeature>> featuresContext = new HashMap<String, ArrayList<SimpleFeature>>();
    private HashMap<String, FeatureWriter> featuresWriterContext = new HashMap<String, FeatureWriter>();
@@ -50,8 +49,8 @@
    private boolean withIndex = false;
    public FeatureDgnConvertOraSDOJobContext(String dataPath, DataStore targetDataStore, String filterConfig,
                                             boolean profileMode, boolean useTransform, boolean useEPSG3826) {
        super(dataPath, targetDataStore, profileMode, useTransform, useEPSG3826);
                                             boolean profileMode, boolean useTransform) {
        super(dataPath, targetDataStore, profileMode, useTransform);
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        _filterConfig = filterConfig;
        elementDispatcher = createElementDispatcher();
@@ -99,8 +98,7 @@
            return;
        }
        // �P�_�O�_�ũM���
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed(), isEPSG3826());
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed());
        if (feature == null) {
            FrammeAttributeData linkage =
                AbstractFLinkageDispatchableFilter.getFeatureLinkage(element);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/GeneralDgnConvertOraSDOJobContext.java
@@ -42,13 +42,14 @@
import com.ximple.io.dgn7.UserAttributeData;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
public class GeneralDgnConvertOraSDOJobContext extends AbstractDgnToOraSDOJobContext {
    static final Log logger = LogFactory.getLog(GeneralDgnConvertOraSDOJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    static final GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    private String dataOut = null;
@@ -58,18 +59,13 @@
    private PessimisticMapWrapper txFeaturesContext;
    private TreeMap<String, SimpleFeatureType> featureTypes = new TreeMap<String, SimpleFeatureType>();
    private GeometryConverterDecorator convertDecorator = null;
    private String featureBaseName = null;
    private boolean withIndex = false;
    public GeneralDgnConvertOraSDOJobContext(String dataPath, DataStore targetDataStore, boolean profileMode,
                                             boolean useTransform, boolean useEPSG3826) {
        super(dataPath, targetDataStore, profileMode, useTransform, useEPSG3826);
                                             boolean useTransform) {
        super(dataPath, targetDataStore, profileMode, useTransform);
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        if (isEPSG3826())
            convertDecorator = new EPSG3826GeometryConverterDecorator();
        else
            convertDecorator = new EPSG3825GeometryConverterDecorator();
    }
    public void putFeatureCollection(Element element) throws IllegalAttributeException, SchemaException {
@@ -221,6 +217,7 @@
    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);
@@ -230,6 +227,7 @@
            String content = textElement.getText();
            angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(textElement.getColorIndex()),
@@ -260,6 +258,7 @@
            }
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(textNodeElement.getColorIndex()),
@@ -279,6 +278,7 @@
            convertDecorator.setConverter(shapeElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(shapeElement.getColorIndex()),
@@ -293,25 +293,29 @@
            LineStringElement linestring = (LineStringElement) element;
            convertDecorator.setConverter(linestring);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(linestring.getColorIndex()),
                    linestring.getWeight(),
                    linestring.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof LineElement) {
            LineElement line = (LineElement) element;
            convertDecorator.setConverter(line);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(line.getColorIndex()),
                    line.getWeight(),
                    line.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof ArcElement) {
            ArcElement arcElement = (ArcElement) element;
@@ -322,37 +326,43 @@
            */
            convertDecorator.setConverter(arcElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(arcElement.getColorIndex()),
                    arcElement.getWeight(),
                    arcElement.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof EllipseElement) {
            EllipseElement arcElement = (EllipseElement) element;
            convertDecorator.setConverter(arcElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(arcElement.getColorIndex()),
                    arcElement.getWeight(),
                    arcElement.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof ComplexChainElement) {
            ComplexChainElement complexChainElement = (ComplexChainElement) element;
            convertDecorator.setConverter(complexChainElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(complexChainElement.getColorIndex()),
                    complexChainElement.getWeight(),
                    complexChainElement.getLineStyle()
                }, null);
            }
            return null;
        }
        return null;
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/IndexDgnConvertOraSDOJobContext.java
@@ -38,15 +38,14 @@
import com.ximple.io.dgn7.UserAttributeData;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
public class IndexDgnConvertOraSDOJobContext extends AbstractDgnToOraSDOJobContext {
    static final Log logger = LogFactory.getLog(IndexDgnConvertOraSDOJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    protected GeometryConverterDecorator convertDecorator;
    static final GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    private HashMap<String, ArrayList<SimpleFeature>> featuresContext = new HashMap<String, ArrayList<SimpleFeature>>();
    private HashMap<String, FeatureWriter> featuresWriterContext = new HashMap<String, FeatureWriter>();
@@ -59,14 +58,9 @@
    private SimpleFeatureType featureType3 = null;
    public IndexDgnConvertOraSDOJobContext(String dataPath, DataStore targetDataStore, boolean profileMode,
                                           boolean useTransform, boolean useEPSG3826) {
        super(dataPath, targetDataStore, profileMode, useTransform, useEPSG3826);
                                           boolean useTransform) {
        super(dataPath, targetDataStore, profileMode, useTransform);
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        if (isEPSG3826()) {
            convertDecorator = new EPSG3826GeometryConverterDecorator();
        } else {
            convertDecorator = new EPSG3825GeometryConverterDecorator();
        }
    }
    public void putFeatureCollection(Element element) throws IllegalAttributeException, SchemaException {
@@ -195,7 +189,7 @@
            String tpclid = textElement.getText();
            Envelope extent = TPCLIDConverter.convertTpclIdToEnvelope(tpclid);
            Geometry geom = (isEPSG3826() ?
            Geometry geom = (FeatureTypeBuilderUtil.getDefaultFeatureSRID() == 3826 ?
                geometryFactory.createLinearRing(new Coordinate[]
                    {
                        TWDDatumConverter.fromTM2ToEPSG3826(new Coordinate(extent.getMinX(), extent.getMinY())),
@@ -213,6 +207,7 @@
                        TWDDatumConverter.fromTM2ToEPSG3825(new Coordinate(extent.getMinX(), extent.getMinY())),
                    }));
            geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
            return SimpleFeatureBuilder.build(featureType, new Object[]{
                geom,
                extent.getMinX(),
@@ -230,13 +225,16 @@
    public SimpleFeature createFeature2(SimpleFeatureType featureType, Element element) throws IllegalAttributeException {
        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
        GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
        if (element instanceof TextElement) {
            TextElement txtElement = (TextElement) element;
            double angle = txtElement.getRotationAngle();
            angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
            convertDecorator.setConverter(txtElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
            SimpleFeature feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                convertDecorator.toGeometry(geometryFactory),
                geom,
                colorTable.getColorCode(txtElement.getColorIndex()),
                txtElement.getWeight(),
                txtElement.getLineStyle(),
@@ -265,7 +263,7 @@
                int dx = (i % 2) * TPCLIDConverter.SX600;
                int dy = (i / 2) * TPCLIDConverter.SY600;
                Geometry geom = (isEPSG3826() ?
                Geometry geom = (FeatureTypeBuilderUtil.getDefaultFeatureSRID() == 3826 ?
                    geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[]
                        {
                            TWDDatumConverter.fromTM2ToEPSG3826(new Coordinate(
@@ -293,6 +291,7 @@
                                extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)),
                        }), null));
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                result[i] = SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    extent.getMinX(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java
@@ -69,8 +69,8 @@
    // private String _convertElementIn = null;
    public OracleConvertOraSDOJobContext(String dataPath, DataStore oraDS, String filterConfig, boolean profileMode,
                                         boolean useTransform, boolean useEPSG3826) {
        super(dataPath, oraDS, profileMode, useTransform, useEPSG3826);
                                         boolean useTransform) {
        super(dataPath, oraDS, profileMode, useTransform);
        _filterConfig = filterConfig;
        elementDispatcher = createElementDispatcher();
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
@@ -113,7 +113,7 @@
    public void putFeatureCollection(Element element) {
        assert elementDispatcher != null;
        // �P�_�O�_�ũM���
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed(), isEPSG3826());
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed());
        if (feature == null) {
            boolean isEmptySize = false;
            FrammeAttributeData linkage =
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java
@@ -22,7 +22,9 @@
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.feature.type.AttributeDescriptor;
import org.opengis.feature.type.AttributeType;
import org.opengis.feature.type.GeometryDescriptor;
import org.opengis.feature.type.GeometryType;
import org.opengis.feature.type.PropertyType;
import org.opengis.filter.BinaryComparisonOperator;
import org.opengis.filter.Filter;
@@ -125,8 +127,8 @@
    protected boolean schemaEnabled = true;
    public AbstractDgnToPostGISJobContext(String dataPath, DataStore targetDataStore, String targetSchema,
                                          boolean profileMode, boolean useTransform, boolean useEPSG3826) {
        super(dataPath, profileMode, useTransform, useEPSG3826);
                                          boolean profileMode, boolean useTransform) {
        super(dataPath, profileMode, useTransform);
        if ((targetDataStore != null) && (targetDataStore instanceof PostgisDataStore)) {
            this.targetDataStore = (PostgisDataStore) targetDataStore;
        } else {
@@ -234,7 +236,7 @@
    private String addGeometryColumn(String dbSchema, String tableName, GeometryDescriptor geometryDescriptor, int srid) {
        StringBuilder sql;
        String typeName = getGeometrySQLTypeName(geometryDescriptor.getType().getBinding());
        String typeName = getGeometrySQLTypeName(((AttributeType) geometryDescriptor.getType()).getBinding());
        if (typeName == null) {
            getLogger().warn("Error: " + geometryDescriptor.getLocalName() + " unknown type!!!");
            throw new RuntimeException("Error: " + geometryDescriptor.getLocalName() + " unknown type!!!");
@@ -396,9 +398,9 @@
        for (AttributeDescriptor descriptor : descriptors) {
            String typeName;
            typeName = CLASS_MAPPINGS.get(descriptor.getType().getBinding());
            typeName = CLASS_MAPPINGS.get(((AttributeType) descriptor.getType()).getBinding());
            if (typeName == null) {
                typeName = GEOM_CLASS_MAPPINGS.get(descriptor.getType().getBinding());
                typeName = GEOM_CLASS_MAPPINGS.get(((AttributeType) descriptor.getType()).getBinding());
                if (typeName != null) continue;
            }
@@ -454,7 +456,7 @@
                if (descriptor == null) {
                    msg = "AttributeType was null!";
                } else {
                    msg = "Type '" + descriptor.getType().getBinding() + "' not supported!";
                    msg = "Type '" + ((AttributeType) descriptor.getType()).getBinding() + "' not supported!";
                }
                throw (new IOException(msg));
            }
@@ -628,29 +630,30 @@
            if (descriptors.get(i) instanceof GeometryDescriptor) {
                pstmt.setBytes(i + 1, binaryWriter.writeBinary((Geometry) attributes.get(i)));
            } else {
                if (descriptors.get(i).getType().getBinding().equals(Short.class)) {
                Class<?> bindingType = ((AttributeType) descriptors.get(i).getType()).getBinding();
                if (bindingType.equals(Short.class)) {
                    pstmt.setShort(i + 1, (Short) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(Integer.class)) {
                } else if (bindingType.equals(Integer.class)) {
                    pstmt.setInt(i + 1, (Short) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(Long.class)) {
                } else if (bindingType.equals(Long.class)) {
                    pstmt.setLong(i + 1, (Long) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(String.class)) {
                } else if (bindingType.equals(String.class)) {
                    pstmt.setString(i + 1, (String) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(Float.class)) {
                } else if (bindingType.equals(Float.class)) {
                    pstmt.setFloat(i + 1, (Float) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(Double.class)) {
                } else if (bindingType.equals(Double.class)) {
                    pstmt.setDouble(i + 1, (Double) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(Boolean.class)) {
                } else if (bindingType.equals(Boolean.class)) {
                    pstmt.setBoolean(i + 1, (Boolean) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(BigDecimal.class)) {
                } else if (bindingType.equals(BigDecimal.class)) {
                    pstmt.setBigDecimal(i + 1, (BigDecimal) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(java.sql.Date.class)) {
                } else if (bindingType.equals(java.sql.Date.class)) {
                    pstmt.setDate(i + 1, (java.sql.Date) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(java.sql.Time.class)) {
                } else if (bindingType.equals(java.sql.Time.class)) {
                    pstmt.setTime(i + 1, (java.sql.Time) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(java.sql.Timestamp.class)) {
                } else if (bindingType.equals(java.sql.Timestamp.class)) {
                    pstmt.setTimestamp(i + 1, (java.sql.Timestamp) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(java.util.Date.class)) {
                } else if (bindingType.equals(java.util.Date.class)) {
                    java.sql.Date sDate = new java.sql.Date(((java.util.Date) attributes.get(i)).getTime());
                    pstmt.setDate(i + 1, sDate);
                }
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java
@@ -20,6 +20,7 @@
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.feature.type.AttributeDescriptor;
import org.opengis.feature.type.AttributeType;
import org.opengis.feature.type.GeometryDescriptor;
import org.opengis.feature.type.PropertyType;
import org.opengis.filter.BinaryComparisonOperator;
@@ -122,8 +123,8 @@
    private String targetSchema = "public";
    public AbstractOracleToPostGISJobContext(String dataPath, DataStore targetDataStore, String targetSchema,
                                             boolean profileMode, boolean useTransform, boolean useEPSG3826) {
        super(profileMode, useTransform, useEPSG3826);
                                             boolean profileMode, boolean useTransform) {
        super(profileMode, useTransform);
        if ((targetDataStore != null) && (targetDataStore instanceof PostgisDataStore)) {
            this.targetDataStore = (PostgisDataStore) targetDataStore;
        } else {
@@ -450,7 +451,7 @@
                    }
                    if (length < 1) {
                        getLogger().warn("FeatureType did not specify string length; defaulted to 256");
                        getLogger().info("FeatureType did not specify string length; defaulted to 512");
                        length = 512;
                    } else if (length > MAX_ALLOWED_VALUE) {
                        length = MAX_ALLOWED_VALUE;
@@ -650,31 +651,33 @@
        for (int i = 0; i < descriptors.size(); i++) {
            if (descriptors.get(i) instanceof GeometryDescriptor) {
                // String wktTest = geometryWriter.write((Geometry) attributes.get(i));
                pstmt.setBytes(i + 1, binaryWriter.writeBinary((Geometry) attributes.get(i)));
            } else {
                if (descriptors.get(i).getType().getBinding().equals(Short.class)) {
                Class<?> bindingType = ((AttributeType)descriptors.get(i).getType()).getBinding();
                if (bindingType.equals(Short.class)) {
                    pstmt.setShort(i + 1, (Short) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(Integer.class)) {
                } else if (bindingType.equals(Integer.class)) {
                    pstmt.setInt(i + 1, (Short) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(Long.class)) {
                } else if (bindingType.equals(Long.class)) {
                    pstmt.setLong(i + 1, (Long) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(String.class)) {
                } else if (bindingType.equals(String.class)) {
                    pstmt.setString(i + 1, (String) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(Float.class)) {
                } else if (bindingType.equals(Float.class)) {
                    pstmt.setFloat(i + 1, (Float) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(Double.class)) {
                } else if (bindingType.equals(Double.class)) {
                    pstmt.setDouble(i + 1, (Double) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(Boolean.class)) {
                } else if (bindingType.equals(Boolean.class)) {
                    pstmt.setBoolean(i + 1, (Boolean) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(BigDecimal.class)) {
                } else if (bindingType.equals(BigDecimal.class)) {
                    pstmt.setBigDecimal(i + 1, (BigDecimal) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(java.sql.Date.class)) {
                } else if (bindingType.equals(java.sql.Date.class)) {
                    pstmt.setDate(i + 1, (java.sql.Date) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(java.sql.Time.class)) {
                } else if (bindingType.equals(java.sql.Time.class)) {
                    pstmt.setTime(i + 1, (java.sql.Time) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(java.sql.Timestamp.class)) {
                } else if (bindingType.equals(java.sql.Timestamp.class)) {
                    pstmt.setTimestamp(i + 1, (java.sql.Timestamp) attributes.get(i));
                } else if (descriptors.get(i).getType().getBinding().equals(java.util.Date.class)) {
                } else if (bindingType.equals(java.util.Date.class)) {
                    java.sql.Date sDate = new java.sql.Date(((java.util.Date) attributes.get(i)).getTime());
                    pstmt.setDate(i + 1, sDate);
                }
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java
@@ -42,7 +42,6 @@
public class DummyFeatureConvertPostGISJobContext extends AbstractDgnToPostGISJobContext {
    static final Log logger = LogFactory.getLog(DummyFeatureConvertPostGISJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    private String dataOut = null;
@@ -57,8 +56,8 @@
    public DummyFeatureConvertPostGISJobContext(String dataPath, DataStore targetDataStore, String targetSchema,
                                                String filterConfig, boolean profileMode,
                                                boolean useTransform, boolean useEPSG3826) {
        super(dataPath, targetDataStore, targetSchema, profileMode, useTransform, useEPSG3826);
                                                boolean useTransform) {
        super(dataPath, targetDataStore, targetSchema, profileMode, useTransform);
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        _filterConfig = filterConfig;
        elementDispatcher = createElementDispatcher();
@@ -107,7 +106,7 @@
        }
        // �P�_�O�_�ũM���
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed(), isEPSG3826());
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed());
        if (feature == null) {
            FrammeAttributeData linkage =
                AbstractFLinkageDispatchableFilter.getFeatureLinkage(element);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java
@@ -38,7 +38,6 @@
public class FeatureDgnConvertPostGISJobContext extends AbstractDgnToPostGISJobContext {
    static final Log logger = LogFactory.getLog(FeatureDgnConvertPostGISJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    private HashMap<String, ArrayList<SimpleFeature>> featuresContext = new HashMap<String, ArrayList<SimpleFeature>>();
    private HashMap<String, FeatureWriter> featuresWriterContext = new HashMap<String, FeatureWriter>();
@@ -51,8 +50,8 @@
    public FeatureDgnConvertPostGISJobContext(String dataPath, DataStore targetDataStore, String targetSchema,
                                              String filterConfig, boolean profileMode,
                                              boolean useTransform, boolean useEPSG3826) {
        super(dataPath, targetDataStore, targetSchema, profileMode, useTransform, useEPSG3826);
                                              boolean useTransform) {
        super(dataPath, targetDataStore, targetSchema, profileMode, useTransform);
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        _filterConfig = filterConfig;
        elementDispatcher = createElementDispatcher();
@@ -101,7 +100,7 @@
        }
        // �P�_�O�_�ũM���
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed(), isEPSG3826());
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed());
        if (feature == null) {
            FrammeAttributeData linkage =
                AbstractFLinkageDispatchableFilter.getFeatureLinkage(element);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java
@@ -24,8 +24,11 @@
import org.geotools.feature.SchemaException;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.feature.type.FeatureTypeImpl;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.feature.type.FeatureType;
import org.postgresql.util.PSQLException;
import com.vividsolutions.jts.geom.Geometry;
@@ -51,7 +54,7 @@
public class GeneralDgnConvertPostGISJobContext extends AbstractDgnToPostGISJobContext {
    static final Log logger = LogFactory.getLog(GeneralDgnConvertPostGISJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    static final GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    private HashMap<SimpleFeatureType, ArrayList<SimpleFeature>> txFeaturesContext = new HashMap<SimpleFeatureType, ArrayList<SimpleFeature>>();
@@ -64,12 +67,8 @@
    private int accumulate = 0;
    public GeneralDgnConvertPostGISJobContext(String dataPath, DataStore targetDataStore, String targetSchema,
                                              boolean profileMode, boolean useTransform, boolean useEPSG3826) {
        super(dataPath, targetDataStore, targetSchema, profileMode, useTransform, useEPSG3826);
        if (isEPSG3826())
            convertDecorator = new EPSG3826GeometryConverterDecorator();
        else
            convertDecorator = new EPSG3825GeometryConverterDecorator();
                                              boolean profileMode, boolean useTransform) {
        super(dataPath, targetDataStore, targetSchema, profileMode, useTransform);
    }
    public void putFeatureCollection(Element element) throws IllegalAttributeException, SchemaException {
@@ -286,6 +285,7 @@
            content = content.replace('\u0000', ' ');
            angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(textElement.getColorIndex()),
@@ -317,6 +317,7 @@
            }
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(textNodeElement.getColorIndex()),
@@ -336,6 +337,7 @@
            convertDecorator.setConverter(shapeElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(shapeElement.getColorIndex()),
@@ -350,25 +352,29 @@
            LineStringElement linestring = (LineStringElement) element;
            convertDecorator.setConverter(linestring);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(linestring.getColorIndex()),
                    linestring.getWeight(),
                    linestring.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof LineElement) {
            LineElement line = (LineElement) element;
            convertDecorator.setConverter(line);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(line.getColorIndex()),
                    line.getWeight(),
                    line.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof ArcElement) {
            ArcElement arcElement = (ArcElement) element;
@@ -379,37 +385,43 @@
            */
            convertDecorator.setConverter(arcElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(arcElement.getColorIndex()),
                    arcElement.getWeight(),
                    arcElement.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof EllipseElement) {
            EllipseElement arcElement = (EllipseElement) element;
            convertDecorator.setConverter(arcElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(arcElement.getColorIndex()),
                    arcElement.getWeight(),
                    arcElement.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof ComplexChainElement) {
            ComplexChainElement complexChainElement = (ComplexChainElement) element;
            convertDecorator.setConverter(complexChainElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(complexChainElement.getColorIndex()),
                    complexChainElement.getWeight(),
                    complexChainElement.getLineStyle()
                }, null);
            }
            return null;
        }
        return null;
@@ -527,7 +539,7 @@
                conn = getConnection();
                if (dropTableMode) {
                    dropGeometryColumn(conn, featureName,
                                       typeBuilder.buildFeatureType().getGeometryDescriptor().getLocalName());
                                       ((FeatureTypeImpl)typeBuilder.buildFeatureType()).getGeometryDescriptor().getLocalName());
                    dropTable(conn, featureName);
                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn, typeBuilder.buildFeatureType());
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java
@@ -24,6 +24,8 @@
import org.geotools.feature.SchemaException;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.feature.type.FeatureTypeImpl;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.postgresql.util.PSQLException;
@@ -50,8 +52,7 @@
public class IndexDgnConvertPostGISJobContext extends AbstractDgnToPostGISJobContext {
    static final Log logger = LogFactory.getLog(IndexDgnConvertPostGISJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    protected GeometryConverterDecorator convertDecorator;
    static final GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    private HashMap<SimpleFeatureType, ArrayList<SimpleFeature>> txFeaturesContext =
            new HashMap<SimpleFeatureType, ArrayList<SimpleFeature>>();
@@ -68,13 +69,8 @@
    private int accumulate = 0;
    public IndexDgnConvertPostGISJobContext(String dataPath, DataStore targetDataStore, String targetSchema,
                                            boolean profileMode, boolean useTransform, boolean useEPSG3826) {
        super(dataPath, targetDataStore, targetSchema, profileMode, useTransform, useEPSG3826);
        if (isEPSG3826()) {
            convertDecorator = new EPSG3826GeometryConverterDecorator();
        } else {
            convertDecorator = new EPSG3825GeometryConverterDecorator();
        }
                                            boolean profileMode, boolean useTransform) {
        super(dataPath, targetDataStore, targetSchema, profileMode, useTransform);
    }
    public void putFeatureCollection(Element element) throws IllegalAttributeException, SchemaException {
@@ -319,7 +315,7 @@
                    if (dropTableMode) {
                        try {
                            dropGeometryColumn(conn, featureName,
                                               typeBuilderRect.buildFeatureType().getGeometryDescriptor().getLocalName());
                                               ((FeatureTypeImpl)typeBuilderRect.buildFeatureType()).getGeometryDescriptor().getLocalName());
                        } catch (PSQLException e) {
                            logger.debug(e.getMessage(), e);
                        }
@@ -378,7 +374,7 @@
                    conn = getConnection();
                    if (dropTableMode) {
                        dropGeometryColumn(conn, featureName,
                                           typeBuilderPnt.buildFeatureType().getGeometryDescriptor().getLocalName());
                                           ((FeatureTypeImpl)typeBuilderPnt.buildFeatureType()).getGeometryDescriptor().getLocalName());
                        dropTable(conn, featureName);
                        ArrayList<String> schemaTexts = createNewSchemaTexts(conn,
@@ -432,7 +428,7 @@
                    if (dropTableMode) {
                        try {
                            dropGeometryColumn(conn, featureName,
                                               typeBuilderSmallRect.buildFeatureType().getGeometryDescriptor().getLocalName());
                                               ((FeatureTypeImpl)typeBuilderSmallRect.buildFeatureType()).getGeometryDescriptor().getLocalName());
                        } catch (PSQLException e) {
                            logger.debug(e.getMessage(), e);
                        }
@@ -494,7 +490,7 @@
            Envelope extent = TPCLIDConverter.convertTpclIdToEnvelope(tpclid);
            Geometry geom;
            if (isEPSG3826()) {
            if (FeatureTypeBuilderUtil.getDefaultFeatureSRID() == 3826) {
                geom = geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[]
                    {
                        TWDDatumConverter.fromTM2ToEPSG3826(new Coordinate(extent.getMinX(), extent.getMinY())),
@@ -513,6 +509,7 @@
                        TWDDatumConverter.fromTM2ToEPSG3825(new Coordinate(extent.getMinX(), extent.getMinY())),
                    }), null);
            }
            geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
            return SimpleFeatureBuilder.build(featureType, new Object[]{
                geom,
                extent.getMinX(),
@@ -543,7 +540,7 @@
                    Envelope extent = TPCLIDConverter.convertTpclIdToEnvelope(tpclid);
                    Geometry geom = null;
                    try {
                        geom = (isEPSG3826() ?
                        geom = (FeatureTypeBuilderUtil.getDefaultFeatureSRID() == 3826 ?
                            geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[]
                                {
                                    TWDDatumConverter.fromTM2ToEPSG3826(new Coordinate(extent.getMinX(), extent.getMinY())),
@@ -565,6 +562,8 @@
                        logger.warn(e.getMessage(), e);
                        return null;
                    }
                    if (geom != null) geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                    return (geom == null ? null :
                        SimpleFeatureBuilder.build(featureType, new Object[]{
@@ -591,9 +590,11 @@
            TextElement txtElement = (TextElement) element;
            double angle = txtElement.getRotationAngle();
            angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
            GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
            convertDecorator.setConverter(txtElement);
            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
            if (gobj != null)
                gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                    gobj,
                    colorTable.getColorCode(txtElement.getColorIndex()),
@@ -619,12 +620,13 @@
                    String tpclid = TPCLIDConverter.CoordinateToTpclId(center);
                    if (tpclid.length() > 5) {
                        tpclid = tpclid.substring(0, 5);
                        Coordinate pos = (isEPSG3826() ?
                        Coordinate pos = (FeatureTypeBuilderUtil.getDefaultFeatureSRID() == 3826 ?
                            TWDDatumConverter.fromTM2ToEPSG3826(new Coordinate(center.x, center.y)) :
                            TWDDatumConverter.fromTM2ToEPSG3825(new Coordinate(center.x, center.y)));
                        Geometry gobj = geometryFactory.createPoint(pos);
                        if (gobj != null)
                            gobj.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                            feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                                gobj,
                                colorTable.getColorCode(shapeElement.getColorIndex()),
@@ -661,7 +663,7 @@
                Geometry geom;
                if (isEPSG3826()) {
                if (FeatureTypeBuilderUtil.getDefaultFeatureSRID() == 3826) {
                    geom = geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[]
                        {
                            TWDDatumConverter.fromTM2ToEPSG3826(new Coordinate(
@@ -692,6 +694,7 @@
                }
                Envelope innerExtent = geom.getEnvelopeInternal();
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                result[i] = SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    innerExtent.getMinX(),
@@ -724,7 +727,7 @@
                        int dx = (i % 2) * TPCLIDConverter.SX600;
                        int dy = (i / 2) * TPCLIDConverter.SY600;
                        Geometry geom = (isEPSG3826() ?
                        Geometry geom = (FeatureTypeBuilderUtil.getDefaultFeatureSRID() == 3826 ?
                            geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[]
                                {
                                    TWDDatumConverter.fromTM2ToEPSG3826(new Coordinate(
@@ -754,6 +757,7 @@
                        Envelope innerExtent = geom.getEnvelopeInternal();
                        geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                        result[i] = SimpleFeatureBuilder.build(featureType, new Object[]{
                            geom,
                            innerExtent.getMinX(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java
@@ -27,6 +27,7 @@
import org.geotools.data.jdbc.JDBCUtils;
import org.geotools.data.postgis.PostgisDataStoreFactory;
import org.geotools.feature.SchemaException;
import org.geotools.feature.type.FeatureTypeImpl;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.postgresql.util.PSQLException;
@@ -75,8 +76,8 @@
    private int accumulate = 0;
    public OracleConvertPostGISJobContext(String dataPath, DataStore pgDS, String targetSchema, String filterConfig,
                                          boolean profileMode, boolean useTransform, boolean useEPSG3826) {
        super(dataPath, pgDS, targetSchema, profileMode, useTransform, useEPSG3826);
                                          boolean profileMode, boolean useTransform) {
        super(dataPath, pgDS, targetSchema, profileMode, useTransform);
        _filterConfig = filterConfig;
        elementDispatcher = createElementDispatcher();
        elementDispatcher.addCreateFeatureTypeEventListener(this);
@@ -120,7 +121,7 @@
    public void putFeatureCollection(Element element) {
        assert elementDispatcher != null;
        // 判斷是否符和條件
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed(), isEPSG3826());
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed());
        if (feature == null) {
            boolean isEmptySize = false;
            FrammeAttributeData linkage =
@@ -262,6 +263,11 @@
        } catch (BatchUpdateException e) {
            JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e);
            logger.error(e.getMessage(), e);
            SQLException ex;
            while ((ex = e.getNextException()) != null) {
                // logger.warn(ex.getMessage(), ex);
                logger.warn(ex.getMessage());
            }
        } catch (SQLException e) {
            JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e);
            logger.error(e.getMessage(), e);
@@ -331,7 +337,7 @@
                conn = getConnection();
                if (dropTableMode) {
                    dropGeometryColumn(conn, getTargetSchema(), featureName,
                                       featureType.getGeometryDescriptor().getName().getLocalPart());
                                       ((FeatureTypeImpl)featureType).getGeometryDescriptor().getName().getLocalPart());
                    dropTable(conn, getTargetSchema(), featureName);
                    ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/AbstractDgnToShapefileJobContext.java
@@ -4,8 +4,8 @@
public abstract class AbstractDgnToShapefileJobContext extends AbstractDgnFileJobContext {
    public AbstractDgnToShapefileJobContext(String dataPath, boolean profileMode,
                                            boolean useTransform, boolean useEPSG3826) {
        super(dataPath, profileMode, useTransform, useEPSG3826);
                                            boolean useTransform) {
        super(dataPath, profileMode, useTransform);
    }
    public abstract String getDataOutPath();
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java
@@ -45,7 +45,6 @@
public class DummyFeatureConvertShpJobContext extends AbstractDgnToShapefileJobContext {
    static final Log logger = LogFactory.getLog(DummyFeatureConvertShpJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    static final String SHPOUTPATH = "shpout";
    private String dataOut = null;
@@ -60,8 +59,8 @@
    private boolean withIndex = false;
    public DummyFeatureConvertShpJobContext(String dataPath, String filterConfig, boolean profileMode,
                                            boolean useTransform, boolean useEPSG3826) {
        super(dataPath, profileMode, useTransform, useEPSG3826);
                                            boolean useTransform) {
        super(dataPath, profileMode, useTransform);
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        _filterConfig = filterConfig;
        elementDispatcher = createElementDispatcher();
@@ -110,7 +109,7 @@
        }
        // �P�_�O�_�ũM���
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed(), isEPSG3826());
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed());
        if (feature == null) {
            FrammeAttributeData linkage =
                AbstractFLinkageDispatchableFilter.getFeatureLinkage(element);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java
@@ -41,7 +41,6 @@
public class FeatureDgnConvertShpJobContext extends AbstractDgnToShapefileJobContext {
    static final Log logger = LogFactory.getLog(FeatureDgnConvertShpJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    static final String SHPOUTPATH = "shpout";
    private String dataOut = null;
@@ -56,8 +55,8 @@
    private boolean withIndex = false;
    public FeatureDgnConvertShpJobContext(String dataPath, String filterConfig, boolean profileMode,
                                          boolean useTransform, boolean useEPSG3826) {
        super(dataPath, profileMode, useTransform, useEPSG3826);
                                          boolean useTransform) {
        super(dataPath, profileMode, useTransform);
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        _filterConfig = filterConfig;
        elementDispatcher = createElementDispatcher();
@@ -106,7 +105,7 @@
        }
        // �P�_�O�_�ũM���
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed(), isEPSG3826());
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed());
        if (feature == null) {
            FrammeAttributeData linkage =
                AbstractFLinkageDispatchableFilter.getFeatureLinkage(element);
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/GeneralDgnConvertShpJobContext.java
@@ -46,13 +46,14 @@
import com.ximple.io.dgn7.UserAttributeData;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
public class GeneralDgnConvertShpJobContext extends AbstractDgnToShapefileJobContext {
    static final Log logger = LogFactory.getLog(GeneralDgnConvertShpJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    static final GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    public static final String SHPOUTPATH = "shpout";
    private String dataOut = null;
@@ -63,18 +64,13 @@
    private PessimisticMapWrapper txFeaturesContext;
    private TreeMap<String, SimpleFeatureType> featureTypes = new TreeMap<String, SimpleFeatureType>();
    private GeometryConverterDecorator convertDecorator = null;
    private String featureBaseName = null;
    private boolean withIndex = false;
    public GeneralDgnConvertShpJobContext(String dataPath, boolean profileMode,
                                          boolean useTransform, boolean useEPSG3826) {
        super(dataPath, profileMode, useTransform, useEPSG3826);
                                          boolean useTransform) {
        super(dataPath, profileMode, useTransform);
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        if (isEPSG3826())
            convertDecorator = new EPSG3826GeometryConverterDecorator();
        else
            convertDecorator = new EPSG3825GeometryConverterDecorator();
    }
    public void putFeatureCollection(Element element) throws IllegalAttributeException, SchemaException {
@@ -251,6 +247,7 @@
    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);
@@ -260,6 +257,7 @@
            String content = textElement.getText();
            angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(textElement.getColorIndex()),
@@ -290,6 +288,7 @@
            }
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(textNodeElement.getColorIndex()),
@@ -309,6 +308,7 @@
            convertDecorator.setConverter(shapeElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(shapeElement.getColorIndex()),
@@ -323,25 +323,29 @@
            LineStringElement linestring = (LineStringElement) element;
            convertDecorator.setConverter(linestring);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(linestring.getColorIndex()),
                    linestring.getWeight(),
                    linestring.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof LineElement) {
            LineElement line = (LineElement) element;
            convertDecorator.setConverter(line);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(line.getColorIndex()),
                    line.getWeight(),
                    line.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof ArcElement) {
            ArcElement arcElement = (ArcElement) element;
@@ -352,37 +356,43 @@
            */
            convertDecorator.setConverter(arcElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(arcElement.getColorIndex()),
                    arcElement.getWeight(),
                    arcElement.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof EllipseElement) {
            EllipseElement arcElement = (EllipseElement) element;
            convertDecorator.setConverter(arcElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(arcElement.getColorIndex()),
                    arcElement.getWeight(),
                    arcElement.getLineStyle()
                }, null);
            }
            return null;
        } else if (element instanceof ComplexChainElement) {
            ComplexChainElement complexChainElement = (ComplexChainElement) element;
            convertDecorator.setConverter(complexChainElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            if (geom != null)
            if (geom != null) {
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                return SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    colorTable.getColorCode(complexChainElement.getColorIndex()),
                    complexChainElement.getWeight(),
                    complexChainElement.getLineStyle()
                }, null);
            }
            return null;
        }
        return null;
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/IndexDgnConvertShpJobContext.java
@@ -43,16 +43,15 @@
import com.ximple.io.dgn7.UserAttributeData;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
public class IndexDgnConvertShpJobContext extends AbstractDgnToShapefileJobContext {
    static final Log logger = LogFactory.getLog(IndexDgnConvertShpJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    static final GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    public static final String SHPOUTPATH = "shpout";
    protected GeometryConverterDecorator convertDecorator;
    private String dataOut = null;
@@ -69,14 +68,9 @@
    private int accumulate = 0;
    public IndexDgnConvertShpJobContext(String dataPath, boolean profileMode,
                                        boolean useTransform, boolean useEPSG3826) {
        super(dataPath, profileMode, useTransform, useEPSG3826);
                                        boolean useTransform) {
        super(dataPath, profileMode, useTransform);
        txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger);
        if (isEPSG3826()) {
            convertDecorator = new EPSG3826GeometryConverterDecorator();
        } else {
            convertDecorator = new EPSG3825GeometryConverterDecorator();
        }
    }
    public void putFeatureCollection(Element element) throws IllegalAttributeException, SchemaException {
@@ -236,7 +230,7 @@
            Envelope extent = TPCLIDConverter.convertTpclIdToEnvelope(tpclid);
            Geometry geom;
            if (isEPSG3826()) {
            if (FeatureTypeBuilderUtil.getDefaultFeatureSRID() == 3826) {
                geom = geometryFactory.createLinearRing(new Coordinate[]
                    {
                        TWDDatumConverter.fromTM2ToEPSG3826(new Coordinate(extent.getMinX(), extent.getMinY())),
@@ -255,6 +249,7 @@
                        TWDDatumConverter.fromTM2ToEPSG3825(new Coordinate(extent.getMinX(), extent.getMinY())),
                    });
            }
            geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
            return SimpleFeatureBuilder.build(featureType, new Object[]{
                geom,
                extent.getMinX(),
@@ -276,9 +271,12 @@
            TextElement txtElement = (TextElement) element;
            double angle = txtElement.getRotationAngle();
            angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
            GeometryConverterDecorator convertDecorator = FeatureTypeBuilderUtil.lookupDefaultGeometryConverter();
            convertDecorator.setConverter(txtElement);
            Geometry geom = convertDecorator.toGeometry(geometryFactory);
            geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
            SimpleFeature feature = SimpleFeatureBuilder.build(featureType, new Object[]{
                convertDecorator.toGeometry(geometryFactory),
                geom,
                colorTable.getColorCode(txtElement.getColorIndex()),
                txtElement.getWeight(),
                txtElement.getLineStyle(),
@@ -308,7 +306,7 @@
                int dy = (i / 2) * TPCLIDConverter.SY600;
                Geometry geom;
                if (isEPSG3826()) {
                if (FeatureTypeBuilderUtil.getDefaultFeatureSRID() == 3826) {
                    geom = geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[]
                        {
                            TWDDatumConverter.fromTM2ToEPSG3826(new Coordinate(
@@ -337,6 +335,7 @@
                                extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)),
                        }), null);
                }
                geom.setSRID(FeatureTypeBuilderUtil.getDefaultFeatureSRID());
                result[i] = SimpleFeatureBuilder.build(featureType, new Object[]{
                    geom,
                    extent.getMinX(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java
@@ -79,8 +79,8 @@
    private boolean withIndex = false;
    public OracleConvertShapefilesJobContext(String filterConfig, boolean profileMode,
                                             boolean useTransform, boolean useEPSG3826) {
        super(profileMode, useTransform, useEPSG3826);
                                             boolean useTransform) {
        super(profileMode, useTransform);
        properties = new Properties();
        _filterConfig = filterConfig;
        elementDispatcher = createElementDispatcher();
@@ -124,7 +124,7 @@
    public void putFeatureCollection(Element element) {
        assert elementDispatcher != null;
        // �P�_�O�_�ũM���
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed(), isEPSG3826());
        SimpleFeature feature = elementDispatcher.execute(element, isTransformed());
        if (feature == null) {
            boolean isEmptySize = false;
            FrammeAttributeData linkage =
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java
@@ -1,16 +1,30 @@
package com.ximple.eofms.util;
import com.vividsolutions.jts.geom.*;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.geotools.feature.AttributeTypeBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.geotools.referencing.CRS;
import org.geotools.referencing.ReferencingFactoryFinder;
import org.geotools.referencing.factory.epsg.ThreadedH2EpsgFactory;
import org.opengis.feature.type.AttributeDescriptor;
import org.opengis.feature.type.AttributeType;
import org.opengis.feature.type.GeometryType;
import org.opengis.referencing.FactoryException;
import org.opengis.referencing.crs.CRSFactory;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.cs.CSFactory;
import org.opengis.referencing.cs.CoordinateSystem;
import org.opengis.referencing.operation.MathTransform;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.TreeMap;
public final class FeatureTypeBuilderUtil {
    protected static GeometryFactory _geomFactory = new GeometryFactory();
    private static final Logger LOGGER = LogManager.getLogger(FeatureTypeBuilderUtil.class);
    private static boolean notAllowNull = false;
    protected static final String DEFAULTNAMESPACE = "http://www.ximple.com.tw/tpc/";
@@ -31,19 +45,20 @@
    }
    protected static GeometryType createGeometryType(AttributeTypeBuilder attrBuilder,
                                                     String name, Class clazz, boolean isNillable) {
        attrBuilder.setName(name);
        attrBuilder.setBinding(clazz);
        attrBuilder.setNillable(isNillable);
        return attrBuilder.buildGeometryType();
                                                     String name, Class clazz, boolean isNillable,
                                                     CoordinateReferenceSystem crs) {
        return createGeometryType(attrBuilder, name, clazz, isNillable, crs, null);
    }
    protected static GeometryType createGeometryType(AttributeTypeBuilder attrBuilder,
                                                     String name, Class clazz, boolean isNillable, Object defaultValue) {
                                                     String name, Class clazz, boolean isNillable,
                                                     CoordinateReferenceSystem crs,
                                                     Object defaultValue) {
        attrBuilder.setName(name);
        attrBuilder.setBinding(clazz);
        attrBuilder.setNillable(isNillable);
        attrBuilder.setDefaultValue(defaultValue);
        if (defaultValue != null) attrBuilder.setDefaultValue(defaultValue);
        if (crs != null) attrBuilder.setCRS(crs);
        return attrBuilder.buildGeometryType();
    }
@@ -86,7 +101,7 @@
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
                "geom", createGeometryType(attrBuilder, "PointType", Point.class, false)));
                "geom", createGeometryType(attrBuilder, "PointType", Point.class, false, lookupCRS(defaultSRID))));
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12, ""));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
@@ -131,7 +146,7 @@
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", LineString.class, true));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
                "geom", createGeometryType(attrBuilder, "LineType", LineString.class, true)));
                "geom", createGeometryType(attrBuilder, "LineType", LineString.class, true, lookupCRS(defaultSRID))));
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12, ""));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
@@ -159,7 +174,7 @@
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", MultiLineString.class, true));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
                "geom", createGeometryType(attrBuilder, "MultiLineStringType", MultiLineString.class, true)));
                "geom", createGeometryType(attrBuilder, "MultiLineStringType", MultiLineString.class, true, lookupCRS(defaultSRID))));
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12, ""));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
@@ -187,7 +202,7 @@
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Polygon.class, true));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
                "geom", createGeometryType(attrBuilder, "PolygonType", Polygon.class, true)));
                "geom", createGeometryType(attrBuilder, "PolygonType", Polygon.class, true, lookupCRS(defaultSRID))));
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12, ""));
        attrBuilder = new AttributeTypeBuilder();
@@ -240,7 +255,7 @@
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Polygon.class, true));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
                "geom", createGeometryType(attrBuilder, "PolygonType", Polygon.class, true)));
                "geom", createGeometryType(attrBuilder, "PolygonType", Polygon.class, true, lookupCRS(defaultSRID))));
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("x1", Double.class, notAllowNull, 1, 0.0));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
@@ -289,7 +304,7 @@
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Point.class, true));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
                "geom", createGeometryType(attrBuilder, "PointType", Point.class, true)));
                "geom", createGeometryType(attrBuilder, "PointType", Point.class, true, lookupCRS(defaultSRID))));
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12, ""));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
@@ -338,7 +353,7 @@
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Point.class, notAllowNull));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
                "geom", createGeometryType(attrBuilder, "PointType", Point.class, notAllowNull)));
                "geom", createGeometryType(attrBuilder, "PointType", Point.class, notAllowNull, lookupCRS(defaultSRID))));
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, notAllowNull));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
@@ -407,7 +422,7 @@
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Point.class, notAllowNull));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
                "geom", createGeometryType(attrBuilder, "PointType", Point.class, notAllowNull)));
                "geom", createGeometryType(attrBuilder, "PointType", Point.class, notAllowNull, lookupCRS(defaultSRID))));
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, notAllowNull));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
@@ -476,7 +491,7 @@
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Polygon.class, notAllowNull));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
                "geom", createGeometryType(attrBuilder, "PolygonType", Polygon.class, notAllowNull)));
                "geom", createGeometryType(attrBuilder, "PolygonType", Polygon.class, notAllowNull, lookupCRS(defaultSRID))));
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, notAllowNull));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
@@ -525,7 +540,7 @@
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", LineString.class, notAllowNull));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
                "geom", createGeometryType(attrBuilder, "LineStringType", LineString.class, notAllowNull)));
                "geom", createGeometryType(attrBuilder, "LineStringType", LineString.class, notAllowNull, lookupCRS(defaultSRID))));
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, notAllowNull));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
@@ -574,7 +589,7 @@
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", MultiLineString.class, notAllowNull));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
                "geom", createGeometryType(attrBuilder, "MultiLineStringType", MultiLineString.class, notAllowNull)));
                "geom", createGeometryType(attrBuilder, "MultiLineStringType", MultiLineString.class, notAllowNull, lookupCRS(defaultSRID))));
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, notAllowNull));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
@@ -657,7 +672,7 @@
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", MultiPoint.class, notAllowNull));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
                "geom", createGeometryType(attrBuilder, "MultiPointType", MultiPoint.class, notAllowNull)));
                "geom", createGeometryType(attrBuilder, "MultiPointType", MultiPoint.class, notAllowNull, lookupCRS(defaultSRID))));
        // typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, notAllowNull));
        attrBuilder = new AttributeTypeBuilder();
        attrDescs.add(attrBuilder.buildDescriptor(
@@ -714,4 +729,71 @@
        typeBuilder.addAll(attrDescs);
        return typeBuilder;
    }
    static int defaultSRID = 3826;
    static TreeMap<Integer, CoordinateReferenceSystem> crsMap = null;
    static TreeMap<Integer, GeometryConverterDecorator> geometryConverterMap = null;
    static void initializeFactories() {
        try {
            crsMap = new TreeMap<Integer, CoordinateReferenceSystem>();
            CoordinateReferenceSystem wgs84 = CRS.decode("EPSG:4326");
            crsMap.put(4326, wgs84);
            CoordinateReferenceSystem epsg3825 = CRS.decode("EPSG:3825"); // TWD97-ZONE 119
            crsMap.put(3825, epsg3825);
            CoordinateReferenceSystem epsg3826 = CRS.decode("EPSG:3826"); // TWD97-ZONE 121
            crsMap.put(3826, epsg3826);
            CoordinateReferenceSystem epsg3827 = CRS.decode("EPSG:3827"); // TWD67-ZONE 119
            crsMap.put(3827, epsg3827);
            CoordinateReferenceSystem epsg3828 = CRS.decode("EPSG:3828"); // TWD67-ZONE 121
            crsMap.put(3828, epsg3828);
        } catch (FactoryException e) {
            LOGGER.warn(e.getMessage(), e);
        }
        geometryConverterMap = new TreeMap<Integer, GeometryConverterDecorator>();
        geometryConverterMap.put(3825, new EPSG3825GeometryConverterDecorator());
        geometryConverterMap.put(3826, new EPSG3826GeometryConverterDecorator());
    }
    public static CoordinateReferenceSystem lookupCRS(int SRID) {
        if (crsMap == null) initializeFactories();
        return crsMap.get(SRID);
    }
    public static GeometryConverterDecorator lookupGeometryConverter(int SRID) {
        if (crsMap == null) initializeFactories();
        return geometryConverterMap.get(SRID);
    }
    public static GeometryConverterDecorator lookupDefaultGeometryConverter() {
        return lookupGeometryConverter(defaultSRID);
    }
    public static int getDefaultFeatureSRID() {
        return defaultSRID;
    }
    public static void setDefaultFeatureSRID(int SRID) {
        initializeFactories();
        defaultSRID = SRID;
    }
    public static MathTransform getTWD67ToTWD97Zone191Transform() throws FactoryException {
        CoordinateReferenceSystem sourceCRS = lookupCRS(3827);
        CoordinateReferenceSystem targetCRS = lookupCRS(3825);
        MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS, true);
        return transform;
    }
    public static MathTransform getTWD67ToTWD97Zone121Transform() throws FactoryException {
        CoordinateReferenceSystem sourceCRS = lookupCRS(3828);
        CoordinateReferenceSystem targetCRS = lookupCRS(3826);
        MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS, true);
        // Geometry targetGeometry = JTS.transform( sourceGeometry, transform);
        return transform;
    }
}
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JTSShape.java
@@ -18,9 +18,10 @@
import com.vividsolutions.jts.geom.Point;
import com.vividsolutions.jts.geom.Polygon;
import com.vividsolutions.jts.geom.impl.PackedCoordinateSequence;
import org.geotools.geometry.jts.JTSFactoryFinder;
public class JTSShape implements Shape {
    static GeometryFactory fac = new GeometryFactory();
    static GeometryFactory fac = JTSFactoryFinder.getGeometryFactory(null);
    Geometry geom;
xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/util/FeatureTypeBuilderUtilTest.java
New file
@@ -0,0 +1,20 @@
package com.ximple.eofms.util;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.testng.Assert;
import org.testng.annotations.Test;
public class FeatureTypeBuilderUtilTest {
    @Test
    public void testLookupCRS() {
        CoordinateReferenceSystem crs;
        crs = FeatureTypeBuilderUtil.lookupCRS(3825);
        Assert.assertNotNull(crs);
        crs = FeatureTypeBuilderUtil.lookupCRS(3826);
        Assert.assertNotNull(crs);
        crs = FeatureTypeBuilderUtil.lookupCRS(3827);
        Assert.assertNotNull(crs);
        crs = FeatureTypeBuilderUtil.lookupCRS(3828);
        Assert.assertNotNull(crs);
    }
}