From 6d2edcc80c543290a1695e1eb364ba4ac6c0df1f Mon Sep 17 00:00:00 2001 From: ?? ? <ulysseskao@ximple.com.tw> Date: Fri, 30 Apr 2010 18:21:18 +0800 Subject: [PATCH] --- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java | 19 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatcher.java | 4 .gitattributes | 1 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java | 31 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/GeneralDgnConvertShpJobContext.java | 36 + xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java | 6 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java | 14 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/GeneralDgnConvertOraSDOJobContext.java | 36 + xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java | 7 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java | 33 xdgnjobs/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java | 20 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java | 53 - xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java | 20 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java | 6 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractOracleToOraSDOJobContext.java | 4 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java | 13 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java | 31 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/IndexDgnConvertShpJobContext.java | 25 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java | 14 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java | 16 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java | 7 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java | 9 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java | 8 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java | 8 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java | 53 - xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java | 27 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/IndexDgnConvertMySQLJobContext.java | 25 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/AbstractDgnToShapefileJobContext.java | 4 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/IndexDgnConvertOraSDOJobContext.java | 25 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnFileJobContext.java | 8 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java | 122 ++++ xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractOracleToMySQLJobContext.java | 4 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java | 6 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java | 7 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java | 39 xdgnjobs/ximple-jobcarrier/pom.xml | 21 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractDgnToMySQLJobContext.java | 4 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleJobContext.java | 8 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java | 38 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/GeneralDgnConvertMySQLJobContext.java | 36 + xdgnjobs/pom.xml | 22 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java | 7 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java | 38 + xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleUpgradeJobContext.java | 4 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java | 48 - xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java | 7 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateMultiSymbolStrategy.java | 149 +++--- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java | 7 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java | 6 xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties | 17 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateFeatureTypeStrategy.java | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java | 4 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JTSShape.java | 3 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java | 20 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java | 4 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java | 7 xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml | 50 + xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractDgnToOraSDOJobContext.java | 4 xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/util/FeatureTypeBuilderUtilTest.java | 20 xdgnjobs/ximple-elmparser/pom.xml | 13 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java | 4 63 files changed, 689 insertions(+), 599 deletions(-) diff --git a/.gitattributes b/.gitattributes index ad1b2e2..e5d83c6 100644 --- a/.gitattributes +++ b/.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 diff --git a/xdgnjobs/pom.xml b/xdgnjobs/pom.xml index 9786382..ea4ee22 100644 --- a/xdgnjobs/pom.xml +++ b/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> diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java index ed94f9a..a86b701 100644 --- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java +++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java @@ -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 { diff --git a/xdgnjobs/ximple-elmparser/pom.xml b/xdgnjobs/ximple-elmparser/pom.xml index d9ce86a..14d8b8d 100644 --- a/xdgnjobs/ximple-elmparser/pom.xml +++ b/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> diff --git a/xdgnjobs/ximple-jobcarrier/pom.xml b/xdgnjobs/ximple-jobcarrier/pom.xml index 1abbe63..f53d185 100644 --- a/xdgnjobs/ximple-jobcarrier/pom.xml +++ b/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> diff --git a/xdgnjobs/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java b/xdgnjobs/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java index 057b74a..30ef076 100644 --- a/xdgnjobs/ximple-jobcarrier/src/main/java/com/ximple/eofms/XQuartzJobCarrier.java +++ b/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(); diff --git a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties index be35e19..9a605e9 100644 --- a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties +++ b/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 \ No newline at end of file diff --git a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml index df229a7..91819a3 100644 --- a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml +++ b/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" - 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"> +<job-scheduling-data xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd" + version="1.8"> - <job> - <job-detail> + <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> <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> diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java index ed4a509..8b3597a 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java @@ -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(), diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java index ab67304..9f515de 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java @@ -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(), diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java index 952d120..41656f4 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java @@ -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(), diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateFeatureTypeStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateFeatureTypeStrategy.java index 919bfa2..5e89277 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateFeatureTypeStrategy.java +++ b/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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java index 62c52e1..8140939 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java @@ -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(), diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java index ed5f9bb..387bea2 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java @@ -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(), diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateMultiSymbolStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateMultiSymbolStrategy.java index 0dc2aa4..897d3f0 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateMultiSymbolStrategy.java +++ b/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; @@ -74,7 +72,7 @@ String content = txtElement.getText().trim(); if (content.length() == 0) { logger.info("CreateMultiSymbolStrategy cannot conver " + element.toString() + - "to Feature - getText() is empty."); + "to Feature - getText() is empty."); return null; } StringBuilder sb = new StringBuilder(); @@ -86,32 +84,29 @@ 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(), - (long) fLinkage.getUfid(), - (short) fLinkage.getComponentID(), - fLinkage.getOccID(), - (short) txtElement.getLevelIndex(), - colorTable.getColorCode(txtElement.getColorIndex()), - (short) txtElement.getWeight(), - (short) txtElement.getLineStyle(), - (short) txtElement.getJustification(), - (float) txtElement.getTextHeight(), - (float) txtElement.getTextWidth(), - (float) angle, - sb.toString() + gobj, + fLinkage.getFsc(), + (long) fLinkage.getUfid(), + (short) fLinkage.getComponentID(), + fLinkage.getOccID(), + (short) txtElement.getLevelIndex(), + colorTable.getColorCode(txtElement.getColorIndex()), + (short) txtElement.getWeight(), + (short) txtElement.getLineStyle(), + (short) txtElement.getJustification(), + (float) txtElement.getTextHeight(), + (float) txtElement.getTextWidth(), + (float) angle, + sb.toString() }, null); } else if (element instanceof TextNodeElement) { TextNodeElement nodeElement = (TextNodeElement) element; @@ -121,70 +116,70 @@ angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue(); if (nodeElement.size() == 0) { logger.info("CreateMultiSymbolStrategy cannot conver " + element.toString() + - "to Feature - getText() is empty."); + "to Feature - getText() is empty."); return null; } - Iterator<Element> txtElement = nodeElement.iterator(); + Iterator<Element> txtElement = nodeElement.iterator(); - while(txtElement.hasNext()) - { - TextElement txtChildElement = (TextElement) element; - - char[] charArray = txtChildElement.getText().toCharArray(); + while (txtElement.hasNext()) { + if (txtElement instanceof TextElement) { + TextElement txtChildElement = (TextElement) element; + char[] charArray = txtChildElement.getText().toCharArray(); - if (charArray.length == 0) { - logger.info("CreateMultiSymbolStrategy cannot conver " + element.toString() + - "to Feature - getText() is empty."); - return null; - } + if (charArray.length == 0) { + logger.info("CreateMultiSymbolStrategy cannot conver " + element.toString() + + "to Feature - getText() is empty."); + return null; + } - for(int i = 0 ; i < charArray.length ; i++) - { + for (int i = 0; i < charArray.length; i++) { - StringBuilder sb = new StringBuilder(); - sb.append("OCT"); - char id = charArray[i]; - sb.append(Integer.toOctalString((int) id)); - sb.append("-"); - sb.append(txtChildElement.getFontIndex()); + StringBuilder sb = new StringBuilder(); + sb.append("OCT"); + char id = charArray[i]; + sb.append(Integer.toOctalString((int) id)); + sb.append("-"); + sb.append(txtChildElement.getFontIndex()); - Geometry gobj; - if (useTransform) { - if (useEPSG3826) { - convertDecorator[0].setConverter(txtChildElement); - gobj = convertDecorator[0].toGeometry(geometryFactory); + Geometry gobj; + if (useTransform) { + 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(), + (long) fLinkage.getUfid(), + (short) fLinkage.getComponentID(), + fLinkage.getOccID(), + (short) txtChildElement.getLevelIndex(), + colorTable.getColorCode(nodeElement.getColorIndex()), + (short) txtChildElement.getWeight(), + (short) txtChildElement.getLineStyle(), + (short) txtChildElement.getJustification(), + (float) txtChildElement.getTextHeight(), + (float) txtChildElement.getTextWidth(), + (float) angle, + sb.toString() + }, null); + } } else { - convertDecorator[1].setConverter(txtChildElement); - gobj = convertDecorator[1].toGeometry(geometryFactory); + logger.info("CreateMultiSymbolStrategy cannot conver " + element.toString() + "to Feature"); + return null; } - } else { - gobj = txtChildElement.toGeometry(geometryFactory); - } - - if (gobj != null) - feature = SimpleFeatureBuilder.build(featureType, new Object[]{ - gobj, - fLinkage.getFsc(), - (long) fLinkage.getUfid(), - (short) fLinkage.getComponentID(), - fLinkage.getOccID(), - (short) txtChildElement.getLevelIndex(), - colorTable.getColorCode(nodeElement.getColorIndex()), - (short) txtChildElement.getWeight(), - (short) txtChildElement.getLineStyle(), - (short) txtChildElement.getJustification(), - (float) txtChildElement.getTextHeight(), - (float) txtChildElement.getTextWidth(), - (float) angle, - sb.toString() - }, null); - } } } else { logger.info("CreateMultiSymbolStrategy cannot conver " + element.toString() + "to Feature"); + return null; } return feature; } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java index 9ede6b2..795c21b 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java @@ -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(), diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java index cef2be2..20862bc 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java @@ -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(), diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java index 0ea56d1..f0ddb09 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java @@ -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(), diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java index 505616d..526f932 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java +++ b/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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatcher.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatcher.java index abebbfa..dd0f8b3 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatcher.java +++ b/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; diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java index 16298cf..2325cb6 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java +++ b/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) { diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java index dde0428..30fb09e 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java +++ b/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) { diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java index d83ffc8..1a49206 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java +++ b/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) { diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java index 86f3fc9..d941a3f 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java +++ b/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() { diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java index b144586..7b80d8c 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java +++ b/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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java index 79f88f0..aa58315 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java +++ b/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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java index 6dec3e7..7b48d35 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java +++ b/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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java index 4d5a258..d713440 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java @@ -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()); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java index fa84b51..35251ae 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java +++ b/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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java index 787b72b..34956a6 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java +++ b/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, diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnFileJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnFileJobContext.java index 211ed1b..e1abbd2 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnFileJobContext.java +++ b/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 -------------------------- diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleJobContext.java index f44c3b5..408aeab 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleJobContext.java +++ b/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() { diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleUpgradeJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleUpgradeJobContext.java index 34c5f10..12722c3 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleUpgradeJobContext.java +++ b/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() { diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractDgnToMySQLJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractDgnToMySQLJobContext.java index 1ba6901..fbc8c44 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractDgnToMySQLJobContext.java +++ b/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; } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractOracleToMySQLJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractOracleToMySQLJobContext.java index bc7f721..e901bd5 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/AbstractOracleToMySQLJobContext.java +++ b/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 { diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java index 3842334..750b695 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java +++ b/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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java index 35eff29..72465b9 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java +++ b/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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/GeneralDgnConvertMySQLJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/GeneralDgnConvertMySQLJobContext.java index 2db1e83..d4c0e97 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/GeneralDgnConvertMySQLJobContext.java +++ b/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; diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/IndexDgnConvertMySQLJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/IndexDgnConvertMySQLJobContext.java index 6a952c0..278197c 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/IndexDgnConvertMySQLJobContext.java +++ b/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(), diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java index ca621e3..7815432 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java +++ b/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 = diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractDgnToOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractDgnToOraSDOJobContext.java index a7ee988..2647b46 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractDgnToOraSDOJobContext.java +++ b/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; } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractOracleToOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractOracleToOraSDOJobContext.java index e4fbddb..dec4d5d 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/AbstractOracleToOraSDOJobContext.java +++ b/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 { diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java index 0889606..1ba19b3 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java +++ b/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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java index 97a2959..3de2377 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java +++ b/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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/GeneralDgnConvertOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/GeneralDgnConvertOraSDOJobContext.java index 0ca77c6..dbab3a8 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/GeneralDgnConvertOraSDOJobContext.java +++ b/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; diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/IndexDgnConvertOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/IndexDgnConvertOraSDOJobContext.java index b7f682e..172e328 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/IndexDgnConvertOraSDOJobContext.java +++ b/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(), diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java index ed8784f..c112330 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java +++ b/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 = diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java index 4083c67..e451024 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java @@ -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); } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java index 5c9eb8e..aabd2cb 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java @@ -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); } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java index fe43e2e..a0fd81e 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java @@ -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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java index 57cba8d..cabcb83 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java @@ -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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java index 6bda3cd..e786d63 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java @@ -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()); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java index 941a434..bd907d0 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java @@ -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(), diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java index c48fd45..b41674a 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java @@ -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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/AbstractDgnToShapefileJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/AbstractDgnToShapefileJobContext.java index 0bde862..5caa4e9 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/AbstractDgnToShapefileJobContext.java +++ b/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(); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java index f85c088..d34314e 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java +++ b/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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java index c5818b8..0208b29 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java +++ b/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); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/GeneralDgnConvertShpJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/GeneralDgnConvertShpJobContext.java index 23a190f..41b36c6 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/GeneralDgnConvertShpJobContext.java +++ b/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; diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/IndexDgnConvertShpJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/IndexDgnConvertShpJobContext.java index 09ea970..62adef3 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/IndexDgnConvertShpJobContext.java +++ b/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(), diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java index e9aeee9..72a1796 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java +++ b/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 = diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java index f00e631..028aa86 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java +++ b/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; + } } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JTSShape.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JTSShape.java index d517b07..13b7d5a 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/postjts/JTSShape.java +++ b/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; diff --git a/xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/util/FeatureTypeBuilderUtilTest.java b/xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/util/FeatureTypeBuilderUtilTest.java new file mode 100644 index 0000000..b7b870f --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/util/FeatureTypeBuilderUtilTest.java @@ -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); + } +} -- Gitblit v0.0.0-SNAPSHOT