From 5066d63bfe9907360ce14875a7b7639984e464cd Mon Sep 17 00:00:00 2001 From: ?? ? <ulysseskao@ximple.com.tw> Date: Wed, 04 Jun 2008 19:47:24 +0800 Subject: [PATCH] update for EOFM-111 --- xdgnjobs/ximple-jobcarrier/pom.xml | 15 + xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/GeneralDgnConvertPostGISJobContext.java | 28 ++ xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/FeatureDgnConvertPostGISJobContext.java | 28 ++ xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleToPostGISJobContext.java | 10 .gitattributes | 18 + xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/IndexDgnConvertPostGISJobContext.java | 28 ++ xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java | 30 +- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleToOraSDOJobContext.java | 10 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/GeneralDgnConvertShpJobContext.java | 6 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java | 30 +- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/FeatureDgnConvertShpJobContext.java | 6 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertPostGISJobContext.java | 324 ++++++++++++++++++++++++++ xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnToOraSDOJobContext.java | 12 + xdgnjobs/ximple-spatialjob/pom.xml | 15 + xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java | 30 +- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertOraSDOJobContext.java | 13 + xdgnjobs/pom.xml | 23 + xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnFileJobContext.java | 4 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertShpJobContext.java | 6 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertPostGISJobContext.java | 31 ++ xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/IndexDgnConvertShpJobContext.java | 6 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java | 1 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnToPostGISJobContext.java | 12 + 23 files changed, 613 insertions(+), 73 deletions(-) diff --git a/.gitattributes b/.gitattributes index a1340d3..662bd28 100644 --- a/.gitattributes +++ b/.gitattributes @@ -71,12 +71,20 @@ xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleElementLogger.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java svneol=native#text/plain -xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnFileJobContext.java svneol=native#text/plain +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnFileJobContext.java -text +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnToOraSDOJobContext.java svneol=native#text/plain +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnToPostGISJobContext.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleJobContext.java svneol=native#text/plain -xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertJobContext.java svneol=native#text/plain -xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/FeatureDgnConvertJobContext.java svneol=native#text/plain -xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/GeneralDgnConvertJobContext.java svneol=native#text/plain -xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/IndexDgnConvertJobContext.java svneol=native#text/plain +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleToOraSDOJobContext.java svneol=native#text/plain +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleToPostGISJobContext.java svneol=native#text/plain +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertPostGISJobContext.java svneol=native#text/plain +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertShpJobContext.java svneol=native#text/plain +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/FeatureDgnConvertPostGISJobContext.java svneol=native#text/plain +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/FeatureDgnConvertShpJobContext.java svneol=native#text/plain +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/GeneralDgnConvertPostGISJobContext.java svneol=native#text/plain +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/GeneralDgnConvertShpJobContext.java svneol=native#text/plain +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/IndexDgnConvertPostGISJobContext.java svneol=native#text/plain +xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/IndexDgnConvertShpJobContext.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertOraSDOJobContext.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertPostGISJobContext.java svneol=native#text/plain xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertShapefilesJobContext.java svneol=native#text/plain diff --git a/xdgnjobs/pom.xml b/xdgnjobs/pom.xml index c469eb0..ccb025a 100644 --- a/xdgnjobs/pom.xml +++ b/xdgnjobs/pom.xml @@ -255,6 +255,17 @@ <version>11.1.0</version> </dependency> + <dependency> + <groupId>postgresql</groupId> + <artifactId>postgresql</artifactId> + <version>8.3-603.jdbc3</version> + </dependency> + <dependency> + <groupId>org.postgis</groupId> + <artifactId>postgis-driver</artifactId> + <version>1.3.2</version> + </dependency> + <!-- opensymphony --> <dependency> <groupId>opensymphony</groupId> @@ -273,7 +284,7 @@ <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> - <version>5.8</version> + <version>5.7</version> <scope>test</scope> </dependency> </dependencies> @@ -345,6 +356,10 @@ <artifactId>gt2-data</artifactId> <groupId>org.geotools</groupId> </dependency> + <dependency> + <groupId>org.geotools</groupId> + <artifactId>gt2-postgis</artifactId> + </dependency> <!-- because main and sample-data depend on referencing we need a tie breaker --> <dependency> @@ -367,12 +382,6 @@ <artifactId>gt2-epsg-hsql</artifactId> <groupId>org.geotools</groupId> <scope>test</scope> - </dependency> - - <!-- ORACLE --> - <dependency> - <artifactId>ojdbc5</artifactId> - <groupId>com.oracle</groupId> </dependency> <dependency> diff --git a/xdgnjobs/ximple-jobcarrier/pom.xml b/xdgnjobs/ximple-jobcarrier/pom.xml index 832c76c..2a7c611 100644 --- a/xdgnjobs/ximple-jobcarrier/pom.xml +++ b/xdgnjobs/ximple-jobcarrier/pom.xml @@ -69,6 +69,21 @@ <version>1.0.1B</version> </dependency> + <!-- ORACLE --> + <dependency> + <artifactId>ojdbc5</artifactId> + <groupId>com.oracle</groupId> + </dependency> + + <dependency> + <groupId>postgresql</groupId> + <artifactId>postgresql</artifactId> + </dependency> + <dependency> + <groupId>org.postgis</groupId> + <artifactId>postgis-driver</artifactId> + </dependency> + <!-- Ximple Library --> <dependency> <artifactId>ximple-dgnio</artifactId> diff --git a/xdgnjobs/ximple-spatialjob/pom.xml b/xdgnjobs/ximple-spatialjob/pom.xml index 46fd81b..b9350e1 100644 --- a/xdgnjobs/ximple-spatialjob/pom.xml +++ b/xdgnjobs/ximple-spatialjob/pom.xml @@ -56,6 +56,21 @@ <groupId>opensymphony</groupId> </dependency> + <!-- ORACLE --> + <dependency> + <artifactId>ojdbc5</artifactId> + <groupId>com.oracle</groupId> + </dependency> + + <dependency> + <groupId>postgresql</groupId> + <artifactId>postgresql</artifactId> + </dependency> + <dependency> + <groupId>org.postgis</groupId> + <artifactId>postgis-driver</artifactId> + </dependency> + <!-- Ximple Library --> <dependency> <groupId>com.ximple.eofms</groupId> 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 8c84650..19ec40d 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 @@ -37,6 +37,7 @@ import com.ximple.eofms.filter.TypeCompIdDispatchableFilter; import com.ximple.eofms.filter.TypeCompLevelIdDispatchableFilter; import com.ximple.eofms.filter.TypeIdDispatchableFilter; +import com.ximple.eofms.jobs.context.AbstractDgnFileJobContext; import com.ximple.io.dgn7.Element; import com.ximple.io.dgn7.FrammeAttributeData; import com.ximple.io.dgn7.ComplexElement; 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 3f6e681..1e9a236 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 @@ -46,9 +46,9 @@ import com.ximple.eofms.util.ByteArrayCompressor; import com.ximple.eofms.util.StringUtils; import com.ximple.eofms.jobs.context.AbstractOracleJobContext; -import com.ximple.eofms.jobs.context.FeatureDgnConvertJobContext; -import com.ximple.eofms.jobs.context.GeneralDgnConvertJobContext; -import com.ximple.eofms.jobs.context.IndexDgnConvertJobContext; +import com.ximple.eofms.jobs.context.FeatureDgnConvertShpJobContext; +import com.ximple.eofms.jobs.context.GeneralDgnConvertShpJobContext; +import com.ximple.eofms.jobs.context.IndexDgnConvertShpJobContext; import com.ximple.eofms.jobs.context.OracleConvertShapefilesJobContext; public class OracleConvertDgn2OraSDOJob extends AbstractOracleDatabaseJob @@ -562,7 +562,7 @@ for (File dgnFile : dgnFiles) { - IndexDgnConvertJobContext convertContext = new IndexDgnConvertJobContext(getDataPath()); + IndexDgnConvertShpJobContext convertContext = new IndexDgnConvertShpJobContext(getDataPath()); logger.debug("--- start dgnfile-" + dgnFile.toString() + " ---"); try { @@ -609,7 +609,7 @@ } } - protected void scanIndexDgnElement(IndexDgnConvertJobContext convertContext) + protected void scanIndexDgnElement(IndexDgnConvertShpJobContext convertContext) throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException { Dgn7fileReader reader = convertContext.getReader(); @@ -652,7 +652,7 @@ logger.debug("ElementRecord Count=" + count); } - private void processIndexElement(Element element, IndexDgnConvertJobContext convertContext) throws IllegalAttributeException, SchemaException + private void processIndexElement(Element element, IndexDgnConvertShpJobContext convertContext) throws IllegalAttributeException, SchemaException { if (element instanceof TextElement) { @@ -691,7 +691,7 @@ for (File dgnFile : dgnFiles) { - GeneralDgnConvertJobContext convertContext = new GeneralDgnConvertJobContext(getDataPath()); + GeneralDgnConvertShpJobContext convertContext = new GeneralDgnConvertShpJobContext(getDataPath()); logger.info("--- start dgnfile-" + dgnFile.toString() + " ---"); try { @@ -738,7 +738,7 @@ } } - public void scanOtherDgnElement(GeneralDgnConvertJobContext convertContext) + public void scanOtherDgnElement(GeneralDgnConvertShpJobContext convertContext) throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException { Dgn7fileReader reader = convertContext.getReader(); @@ -781,7 +781,7 @@ logger.debug("ElementRecord Count=" + count); } - private void processOtherElement(Element element, GeneralDgnConvertJobContext convertContext) + private void processOtherElement(Element element, GeneralDgnConvertShpJobContext convertContext) throws IllegalAttributeException, SchemaException { convertContext.putFeatureCollection(element); @@ -794,12 +794,12 @@ { deleteFilesInPath(outDataPath); } - outDataPath = new File(getDataPath(), IndexDgnConvertJobContext.SHPOUTPATH); + outDataPath = new File(getDataPath(), IndexDgnConvertShpJobContext.SHPOUTPATH); if (outDataPath.exists() && outDataPath.isDirectory()) { deleteFilesInPath(outDataPath); } - outDataPath = new File(getDataPath(), GeneralDgnConvertJobContext.SHPOUTPATH); + outDataPath = new File(getDataPath(), GeneralDgnConvertShpJobContext.SHPOUTPATH); if (outDataPath.exists() && outDataPath.isDirectory()) { deleteFilesInPath(outDataPath); @@ -864,7 +864,7 @@ for (File dgnFile : dgnFiles) { - FeatureDgnConvertJobContext convertContext = new FeatureDgnConvertJobContext(getDataPath(), _filterPath); + FeatureDgnConvertShpJobContext convertContext = new FeatureDgnConvertShpJobContext(getDataPath(), _filterPath); logger.info("--- start dgnfile-" + dgnFile.toString() + " ---"); try { @@ -911,7 +911,7 @@ } } - public void scanFeatureDgnElement(FeatureDgnConvertJobContext convertContext) + public void scanFeatureDgnElement(FeatureDgnConvertShpJobContext convertContext) throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException { Dgn7fileReader reader = convertContext.getReader(); @@ -954,7 +954,7 @@ logger.debug("ElementRecord Count=" + count); } - private void processFeatureElement(Element element, FeatureDgnConvertJobContext convertContext) + private void processFeatureElement(Element element, FeatureDgnConvertShpJobContext convertContext) throws IllegalAttributeException, SchemaException { convertContext.putFeatureCollection(element); @@ -963,7 +963,7 @@ private void createDummyFeatureFile(JobExecutionContext context) throws JobExecutionException { /* - DummyFeatureConvertJobContext convertContext = new DummyFeatureConvertJobContext(getDataPath(), _filterPath); + DummyFeatureConvertShpJobContext convertContext = new DummyFeatureConvertShpJobContext(getDataPath(), _filterPath); try { convertContext.startTransaction(); convertContext.commitTransaction(); 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 cefb476..e2d0c90 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 @@ -47,9 +47,9 @@ import com.ximple.eofms.util.ByteArrayCompressor; import com.ximple.eofms.util.StringUtils; import com.ximple.eofms.jobs.context.AbstractOracleJobContext; -import com.ximple.eofms.jobs.context.FeatureDgnConvertJobContext; -import com.ximple.eofms.jobs.context.GeneralDgnConvertJobContext; -import com.ximple.eofms.jobs.context.IndexDgnConvertJobContext; +import com.ximple.eofms.jobs.context.FeatureDgnConvertShpJobContext; +import com.ximple.eofms.jobs.context.GeneralDgnConvertShpJobContext; +import com.ximple.eofms.jobs.context.IndexDgnConvertShpJobContext; import com.ximple.eofms.jobs.context.OracleConvertShapefilesJobContext; public class OracleConvertDgn2PostGISJob extends AbstractOracleDatabaseJob @@ -609,7 +609,7 @@ for (File dgnFile : dgnFiles) { - IndexDgnConvertJobContext convertContext = new IndexDgnConvertJobContext(getDataPath()); + IndexDgnConvertShpJobContext convertContext = new IndexDgnConvertShpJobContext(getDataPath()); logger.debug("--- start dgnfile-" + dgnFile.toString() + " ---"); try { @@ -656,7 +656,7 @@ } } - protected void scanIndexDgnElement(IndexDgnConvertJobContext convertContext) + protected void scanIndexDgnElement(IndexDgnConvertShpJobContext convertContext) throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException { Dgn7fileReader reader = convertContext.getReader(); @@ -699,7 +699,7 @@ logger.debug("ElementRecord Count=" + count); } - private void processIndexElement(Element element, IndexDgnConvertJobContext convertContext) throws IllegalAttributeException, SchemaException + private void processIndexElement(Element element, IndexDgnConvertShpJobContext convertContext) throws IllegalAttributeException, SchemaException { if (element instanceof TextElement) { @@ -738,7 +738,7 @@ for (File dgnFile : dgnFiles) { - GeneralDgnConvertJobContext convertContext = new GeneralDgnConvertJobContext(getDataPath()); + GeneralDgnConvertShpJobContext convertContext = new GeneralDgnConvertShpJobContext(getDataPath()); logger.info("--- start dgnfile-" + dgnFile.toString() + " ---"); try { @@ -785,7 +785,7 @@ } } - public void scanOtherDgnElement(GeneralDgnConvertJobContext convertContext) + public void scanOtherDgnElement(GeneralDgnConvertShpJobContext convertContext) throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException { Dgn7fileReader reader = convertContext.getReader(); @@ -828,7 +828,7 @@ logger.debug("ElementRecord Count=" + count); } - private void processOtherElement(Element element, GeneralDgnConvertJobContext convertContext) + private void processOtherElement(Element element, GeneralDgnConvertShpJobContext convertContext) throws IllegalAttributeException, SchemaException { convertContext.putFeatureCollection(element); @@ -841,12 +841,12 @@ { deleteFilesInPath(outDataPath); } - outDataPath = new File(getDataPath(), IndexDgnConvertJobContext.SHPOUTPATH); + outDataPath = new File(getDataPath(), IndexDgnConvertShpJobContext.SHPOUTPATH); if (outDataPath.exists() && outDataPath.isDirectory()) { deleteFilesInPath(outDataPath); } - outDataPath = new File(getDataPath(), GeneralDgnConvertJobContext.SHPOUTPATH); + outDataPath = new File(getDataPath(), GeneralDgnConvertShpJobContext.SHPOUTPATH); if (outDataPath.exists() && outDataPath.isDirectory()) { deleteFilesInPath(outDataPath); @@ -911,7 +911,7 @@ for (File dgnFile : dgnFiles) { - FeatureDgnConvertJobContext convertContext = new FeatureDgnConvertJobContext(getDataPath(), _filterPath); + FeatureDgnConvertShpJobContext convertContext = new FeatureDgnConvertShpJobContext(getDataPath(), _filterPath); logger.info("--- start dgnfile-" + dgnFile.toString() + " ---"); try { @@ -958,7 +958,7 @@ } } - public void scanFeatureDgnElement(FeatureDgnConvertJobContext convertContext) + public void scanFeatureDgnElement(FeatureDgnConvertShpJobContext convertContext) throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException { Dgn7fileReader reader = convertContext.getReader(); @@ -1001,7 +1001,7 @@ logger.debug("ElementRecord Count=" + count); } - private void processFeatureElement(Element element, FeatureDgnConvertJobContext convertContext) + private void processFeatureElement(Element element, FeatureDgnConvertShpJobContext convertContext) throws IllegalAttributeException, SchemaException { convertContext.putFeatureCollection(element); @@ -1010,7 +1010,7 @@ private void createDummyFeatureFile(JobExecutionContext context) throws JobExecutionException { /* - DummyFeatureConvertJobContext convertContext = new DummyFeatureConvertJobContext(getDataPath(), _filterPath); + DummyFeatureConvertShpJobContext convertContext = new DummyFeatureConvertShpJobContext(getDataPath(), _filterPath); try { convertContext.startTransaction(); convertContext.commitTransaction(); 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 ae243c6..d3de309 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 @@ -37,9 +37,9 @@ import com.ximple.eofms.util.ByteArrayCompressor; import com.ximple.eofms.util.StringUtils; import com.ximple.eofms.jobs.context.AbstractOracleJobContext; -import com.ximple.eofms.jobs.context.FeatureDgnConvertJobContext; -import com.ximple.eofms.jobs.context.GeneralDgnConvertJobContext; -import com.ximple.eofms.jobs.context.IndexDgnConvertJobContext; +import com.ximple.eofms.jobs.context.FeatureDgnConvertShpJobContext; +import com.ximple.eofms.jobs.context.GeneralDgnConvertShpJobContext; +import com.ximple.eofms.jobs.context.IndexDgnConvertShpJobContext; import com.ximple.eofms.jobs.context.OracleConvertShapefilesJobContext; import com.ximple.io.dgn7.ComplexElement; import com.ximple.io.dgn7.Dgn7fileException; @@ -511,7 +511,7 @@ for (File dgnFile : dgnFiles) { - IndexDgnConvertJobContext convertContext = new IndexDgnConvertJobContext(getDataPath()); + IndexDgnConvertShpJobContext convertContext = new IndexDgnConvertShpJobContext(getDataPath()); logger.debug("--- start dgnfile-" + dgnFile.toString() + " ---"); try { @@ -558,7 +558,7 @@ } } - protected void scanIndexDgnElement(IndexDgnConvertJobContext convertContext) + protected void scanIndexDgnElement(IndexDgnConvertShpJobContext convertContext) throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException { Dgn7fileReader reader = convertContext.getReader(); @@ -601,7 +601,7 @@ logger.debug("ElementRecord Count=" + count); } - private void processIndexElement(Element element, IndexDgnConvertJobContext convertContext) throws IllegalAttributeException, SchemaException + private void processIndexElement(Element element, IndexDgnConvertShpJobContext convertContext) throws IllegalAttributeException, SchemaException { if (element instanceof TextElement) { @@ -640,7 +640,7 @@ for (File dgnFile : dgnFiles) { - GeneralDgnConvertJobContext convertContext = new GeneralDgnConvertJobContext(getDataPath()); + GeneralDgnConvertShpJobContext convertContext = new GeneralDgnConvertShpJobContext(getDataPath()); logger.info("--- start dgnfile-" + dgnFile.toString() + " ---"); try { @@ -687,7 +687,7 @@ } } - public void scanOtherDgnElement(GeneralDgnConvertJobContext convertContext) + public void scanOtherDgnElement(GeneralDgnConvertShpJobContext convertContext) throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException { Dgn7fileReader reader = convertContext.getReader(); @@ -730,7 +730,7 @@ logger.debug("ElementRecord Count=" + count); } - private void processOtherElement(Element element, GeneralDgnConvertJobContext convertContext) + private void processOtherElement(Element element, GeneralDgnConvertShpJobContext convertContext) throws IllegalAttributeException, SchemaException { convertContext.putFeatureCollection(element); @@ -743,12 +743,12 @@ { deleteFilesInPath(outDataPath); } - outDataPath = new File(getDataPath(), IndexDgnConvertJobContext.SHPOUTPATH); + outDataPath = new File(getDataPath(), IndexDgnConvertShpJobContext.SHPOUTPATH); if (outDataPath.exists() && outDataPath.isDirectory()) { deleteFilesInPath(outDataPath); } - outDataPath = new File(getDataPath(), GeneralDgnConvertJobContext.SHPOUTPATH); + outDataPath = new File(getDataPath(), GeneralDgnConvertShpJobContext.SHPOUTPATH); if (outDataPath.exists() && outDataPath.isDirectory()) { deleteFilesInPath(outDataPath); @@ -813,7 +813,7 @@ for (File dgnFile : dgnFiles) { - FeatureDgnConvertJobContext convertContext = new FeatureDgnConvertJobContext(getDataPath(), _filterPath); + FeatureDgnConvertShpJobContext convertContext = new FeatureDgnConvertShpJobContext(getDataPath(), _filterPath); logger.info("--- start dgnfile-" + dgnFile.toString() + " ---"); try { @@ -860,7 +860,7 @@ } } - public void scanFeatureDgnElement(FeatureDgnConvertJobContext convertContext) + public void scanFeatureDgnElement(FeatureDgnConvertShpJobContext convertContext) throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException { Dgn7fileReader reader = convertContext.getReader(); @@ -903,7 +903,7 @@ logger.debug("ElementRecord Count=" + count); } - private void processFeatureElement(Element element, FeatureDgnConvertJobContext convertContext) + private void processFeatureElement(Element element, FeatureDgnConvertShpJobContext convertContext) throws IllegalAttributeException, SchemaException { convertContext.putFeatureCollection(element); @@ -912,7 +912,7 @@ private void createDummyFeatureFile(JobExecutionContext context) throws JobExecutionException { /* - DummyFeatureConvertJobContext convertContext = new DummyFeatureConvertJobContext(getDataPath(), _filterPath); + DummyFeatureConvertShpJobContext convertContext = new DummyFeatureConvertShpJobContext(getDataPath(), _filterPath); try { convertContext.startTransaction(); convertContext.commitTransaction(); 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 b040fdd..db4655e 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 @@ -1,6 +1,6 @@ package com.ximple.eofms.jobs.context; -import java.util.Properties; +import java.util.Map; import org.quartz.JobExecutionContext; @@ -16,7 +16,7 @@ private JobExecutionContext executionContext = null; protected String _dataPath = null; - protected Properties properties = null; + protected Map properties = null; private Dgn7fileReader reader = null; private String filename = null; diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnToOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnToOraSDOJobContext.java new file mode 100644 index 0000000..863dc38 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnToOraSDOJobContext.java @@ -0,0 +1,12 @@ +package com.ximple.eofms.jobs.context; + +import java.util.Properties; + +public abstract class AbstractDgnToOraSDOJobContext extends AbstractDgnFileJobContext +{ + public AbstractDgnToOraSDOJobContext(String dataPath, Properties properties) + { + super(dataPath); + this.properties = properties; + } +} diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnToPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnToPostGISJobContext.java new file mode 100644 index 0000000..035b499 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnToPostGISJobContext.java @@ -0,0 +1,12 @@ +package com.ximple.eofms.jobs.context; + +import java.util.Properties; + +public abstract class AbstractDgnToPostGISJobContext extends AbstractDgnFileJobContext +{ + public AbstractDgnToPostGISJobContext(String dataPath, Properties properties) + { + super(dataPath); + this.properties = properties; + } +} diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleToOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleToOraSDOJobContext.java new file mode 100644 index 0000000..251c6a7 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleToOraSDOJobContext.java @@ -0,0 +1,10 @@ +package com.ximple.eofms.jobs.context; + +import java.util.Properties; + +public abstract class AbstractOracleToOraSDOJobContext extends AbstractOracleJobContext +{ + public AbstractOracleToOraSDOJobContext(String dataPath, Properties properties) + { + } +} diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleToPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleToPostGISJobContext.java new file mode 100644 index 0000000..74386f9 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleToPostGISJobContext.java @@ -0,0 +1,10 @@ +package com.ximple.eofms.jobs.context; + +import java.util.Properties; + +public abstract class AbstractOracleToPostGISJobContext extends AbstractOracleJobContext +{ + public AbstractOracleToPostGISJobContext(String dataPath, Properties properties) + { + } +} diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertPostGISJobContext.java new file mode 100644 index 0000000..98d27c8 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertPostGISJobContext.java @@ -0,0 +1,31 @@ +package com.ximple.eofms.jobs.context; + +import java.util.Properties; + +public class DummyFeatureConvertPostGISJobContext extends AbstractDgnToPostGISJobContext +{ + public DummyFeatureConvertPostGISJobContext(String dataPath, Properties properties) + { + super(dataPath, properties); + } + + public void startTransaction() + { + //To change body of implemented methods use File | Settings | File Templates. + } + + public void commitTransaction() + { + //To change body of implemented methods use File | Settings | File Templates. + } + + public void rollbackTransaction() + { + //To change body of implemented methods use File | Settings | File Templates. + } + + public String getDataOutPath() + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } +} diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertShpJobContext.java similarity index 98% rename from xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertJobContext.java rename to xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertShpJobContext.java index 86fe4b7..37f5305 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertShpJobContext.java @@ -42,9 +42,9 @@ import com.ximple.io.dgn7.ComplexElement; import com.ximple.io.dgn7.UserAttributeData; -public class DummyFeatureConvertJobContext extends AbstractDgnFileJobContext +public class DummyFeatureConvertShpJobContext extends AbstractDgnFileJobContext { - static final Log logger = LogFactory.getLog(DummyFeatureConvertJobContext.class); + 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"; @@ -60,7 +60,7 @@ private String _filterConfig; private boolean withIndex = false; - public DummyFeatureConvertJobContext(String dataPath, String filterConfig) + public DummyFeatureConvertShpJobContext(String dataPath, String filterConfig) { super(dataPath); txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/FeatureDgnConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/FeatureDgnConvertPostGISJobContext.java new file mode 100644 index 0000000..2edb464 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/FeatureDgnConvertPostGISJobContext.java @@ -0,0 +1,28 @@ +package com.ximple.eofms.jobs.context; + +import java.util.Properties; + +public class FeatureDgnConvertPostGISJobContext extends AbstractDgnToPostGISJobContext +{ + public FeatureDgnConvertPostGISJobContext(String dataPath, Properties properties) + { + super(dataPath, properties); + } + + public void startTransaction() + { + } + + public void commitTransaction() + { + } + + public void rollbackTransaction() + { + } + + public String getDataOutPath() + { + return null; + } +} diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/FeatureDgnConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/FeatureDgnConvertShpJobContext.java similarity index 97% rename from xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/FeatureDgnConvertJobContext.java rename to xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/FeatureDgnConvertShpJobContext.java index ca370dd..1acd9d6 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/FeatureDgnConvertJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/FeatureDgnConvertShpJobContext.java @@ -39,9 +39,9 @@ import com.ximple.io.dgn7.UserAttributeData; import com.ximple.io.dgn7.ComplexElement; -public class FeatureDgnConvertJobContext extends AbstractDgnFileJobContext +public class FeatureDgnConvertShpJobContext extends AbstractDgnFileJobContext { - static final Log logger = LogFactory.getLog(FeatureDgnConvertJobContext.class); + 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"; @@ -57,7 +57,7 @@ private String _filterConfig; private boolean withIndex = false; - public FeatureDgnConvertJobContext(String dataPath, String filterConfig) + public FeatureDgnConvertShpJobContext(String dataPath, String filterConfig) { super(dataPath); txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/GeneralDgnConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/GeneralDgnConvertPostGISJobContext.java new file mode 100644 index 0000000..aad1861 --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/GeneralDgnConvertPostGISJobContext.java @@ -0,0 +1,28 @@ +package com.ximple.eofms.jobs.context; + +import java.util.Properties; + +public class GeneralDgnConvertPostGISJobContext extends AbstractDgnToPostGISJobContext +{ + public GeneralDgnConvertPostGISJobContext(String dataPath, Properties properties) + { + super(dataPath, properties); + } + + public void startTransaction() + { + } + + public void commitTransaction() + { + } + + public void rollbackTransaction() + { + } + + public String getDataOutPath() + { + return null; + } +} diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/GeneralDgnConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/GeneralDgnConvertShpJobContext.java similarity index 99% rename from xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/GeneralDgnConvertJobContext.java rename to xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/GeneralDgnConvertShpJobContext.java index 27aaad3..2dd494f 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/GeneralDgnConvertJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/GeneralDgnConvertShpJobContext.java @@ -47,9 +47,9 @@ import com.ximple.io.dgn7.TextNodeElement; import com.ximple.io.dgn7.UserAttributeData; -public class GeneralDgnConvertJobContext extends AbstractDgnFileJobContext +public class GeneralDgnConvertShpJobContext extends AbstractDgnFileJobContext { - static final Log logger = LogFactory.getLog(GeneralDgnConvertJobContext.class); + static final Log logger = LogFactory.getLog(GeneralDgnConvertShpJobContext.class); static final LoggerFacade sLogger = new CommonsLoggingLogger(logger); static final GeometryFactory geometryFactory = new GeometryFactory(); public static final String SHPOUTPATH = "shpout"; @@ -67,7 +67,7 @@ private String featureBaseName = null; private boolean withIndex = false; - public GeneralDgnConvertJobContext(String dataPath) + public GeneralDgnConvertShpJobContext(String dataPath) { super(dataPath); txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/IndexDgnConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/IndexDgnConvertPostGISJobContext.java new file mode 100644 index 0000000..2a4626c --- /dev/null +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/IndexDgnConvertPostGISJobContext.java @@ -0,0 +1,28 @@ +package com.ximple.eofms.jobs.context; + +import java.util.Properties; + +public class IndexDgnConvertPostGISJobContext extends AbstractDgnToPostGISJobContext +{ + public IndexDgnConvertPostGISJobContext(String dataPath, Properties properties) + { + super(dataPath, properties); + } + + public void startTransaction() + { + } + + public void commitTransaction() + { + } + + public void rollbackTransaction() + { + } + + public String getDataOutPath() + { + return null; + } +} diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/IndexDgnConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/IndexDgnConvertShpJobContext.java similarity index 98% rename from xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/IndexDgnConvertJobContext.java rename to xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/IndexDgnConvertShpJobContext.java index efda8c5..4d99ad9 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/IndexDgnConvertJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/IndexDgnConvertShpJobContext.java @@ -43,9 +43,9 @@ import com.ximple.io.dgn7.TextElement; import com.ximple.io.dgn7.UserAttributeData; -public class IndexDgnConvertJobContext extends AbstractDgnFileJobContext +public class IndexDgnConvertShpJobContext extends AbstractDgnFileJobContext { - static final Log logger = LogFactory.getLog(IndexDgnConvertJobContext.class); + static final Log logger = LogFactory.getLog(IndexDgnConvertShpJobContext.class); static final LoggerFacade sLogger = new CommonsLoggingLogger(logger); static final GeometryFactory geometryFactory = new GeometryFactory(); TWD97GeometryConverterDecorator convertDecorator = new TWD97GeometryConverterDecorator(); @@ -62,7 +62,7 @@ private FeatureType featureType = null; private FeatureType featureType2 = null; - public IndexDgnConvertJobContext(String dataPath) + public IndexDgnConvertShpJobContext(String dataPath) { super(dataPath); txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertOraSDOJobContext.java index 940a8b6..97ea7f6 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertOraSDOJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertOraSDOJobContext.java @@ -1,5 +1,16 @@ package com.ximple.eofms.jobs.context; -public class OracleConvertOraSDOJobContext +public class OracleConvertOraSDOJobContext extends AbstractOracleJobContext { + public void startTransaction() + { + } + + public void commitTransaction() + { + } + + public void rollbackTransaction() + { + } } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertPostGISJobContext.java index a3606f6..2ee594c 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertPostGISJobContext.java @@ -1,5 +1,327 @@ package com.ximple.eofms.jobs.context; -public class OracleConvertPostGISJobContext +import java.util.Properties; +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Iterator; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.net.URL; +import java.net.MalformedURLException; +import java.io.File; +import java.io.UnsupportedEncodingException; +import java.io.IOException; +import java.nio.charset.Charset; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.commons.transaction.util.LoggerFacade; +import org.apache.commons.transaction.util.CommonsLoggingLogger; +import org.apache.commons.transaction.memory.PessimisticMapWrapper; +import org.apache.commons.digester.Digester; +import org.apache.commons.digester.xmlrules.DigesterLoader; +import org.geotools.data.FeatureWriter; +import org.geotools.data.Transaction; +import org.geotools.data.DataStore; +import org.geotools.data.postgis.PostgisDataStoreFactory; +import org.geotools.data.shapefile.ShapefileDataStore; +import org.geotools.data.shapefile.indexed.IndexedShapefileDataStore; +import org.geotools.feature.Feature; +import org.geotools.feature.FeatureType; +import org.geotools.feature.SimpleFeature; +import org.geotools.feature.IllegalAttributeException; +import org.quartz.JobExecutionContext; +import org.xml.sax.SAXException; + +import com.vividsolutions.jts.util.Assert; + +import com.ximple.eofms.jobs.OracleElementLogger; +import com.ximple.eofms.filter.ElementDispatcher; +import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; +import com.ximple.io.dgn7.Element; +import com.ximple.io.dgn7.FrammeAttributeData; +import com.ximple.io.dgn7.ComplexElement; + +public class OracleConvertPostGISJobContext extends AbstractOracleToPostGISJobContext { + static Log logger = LogFactory.getLog(OracleConvertShapefilesJobContext.class); + static final LoggerFacade sLogger = new CommonsLoggingLogger(logger); + + static PostgisDataStoreFactory dataStoreFactory = new PostgisDataStoreFactory(); + + private OracleElementLogger elmLogger = null; + + static + { + try + { + DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); + } catch (SQLException e) + { + Assert.shouldNeverReachHere(e.getMessage()); + } + } + + private String _filterConfig; + + private ElementDispatcher elementDispatcher; + + private HashMap featuresContext = new HashMap(); + private HashMap<String, FeatureWriter> featuresWriterContext = new HashMap<String, FeatureWriter>(); + private PessimisticMapWrapper txFeaturesContext; + + private JobExecutionContext executionContext; + + private String dataOut = null; + private String _convertDB = null; + private String _convertFile = null; + private String currentSchema = null; + private String pgCurrentSchema = null; + private boolean schemaChanged = false; + private String _convertElementIn = null; + + public OracleConvertPostGISJobContext(String dataPath, Properties properties, String filterConfig) + { + super(dataPath, properties); + _filterConfig = filterConfig; + elementDispatcher = createElementDispatcher(); + txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger); + } + + private ElementDispatcher createElementDispatcher() + { + try + { + URL rulesURL = ElementDispatcher.class.getResource("ElementDispatcherRules.xml"); + assert rulesURL != null; + Digester digester = DigesterLoader.createDigester(rulesURL); + URL filterURL = null; + if (_filterConfig != null) + { + File config = new File(_filterConfig); + if (config.exists()) + { + filterURL = config.toURI().toURL(); + } + } + if (filterURL == null) + { + // config = new File("conf/DefaultConvertShpFilter.xml"); + filterURL = this.getClass().getResource("/conf/DefaultConvertShpFilter.xml"); + // filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml"); + } + assert filterURL != null; + return (ElementDispatcher) digester.parse(filterURL); + } catch (UnsupportedEncodingException e) + { + logger.info(e.getMessage(), e); + throw new RuntimeException(e.getMessage(), e); + } catch (MalformedURLException e) + { + logger.info(e.getMessage(), e); + throw new RuntimeException(e.getMessage(), e); + } catch (IOException e) + { + logger.info(e.getMessage(), e); + throw new RuntimeException(e.getMessage(), e); + } catch (SAXException e) + { + logger.info(e.getMessage(), e); + throw new RuntimeException(e.getMessage(), e); + } + } + + public void putFeatureCollection(Element element) + { + assert elementDispatcher != null; + // �P�_�O�_�ũM���� + Feature feature = elementDispatcher.execute(element); + if (feature == null) + { + boolean isEmptySize = false; + FrammeAttributeData linkage = + AbstractFLinkageDispatchableFilter.getFeatureLinkage(element); + logger.warn("Unknown Element:" + element.getElementType().toString() + + ":type=" + element.getType() + ":lv=" + element.getLevelIndex() + ":id=" + + (linkage == null ? "NULL" : (linkage.getFsc() + "|" + linkage.getComponentID()))); + + if (element instanceof ComplexElement) + { + ComplexElement complex = (ComplexElement) element; + logger.warn("----Complex Element size=" + complex.size() + ":" + + (linkage == null ? "NULL" : (linkage.getUfid()))); + isEmptySize = true; + } + + if (getElementLogging() && (!isEmptySize)) + { + getElementLogger().logElement(element, getCurrentSchema()); + } + return; + } + + if (!txFeaturesContext.containsKey(feature.getFeatureType())) + { + txFeaturesContext.put(feature.getFeatureType(), new ArrayList()); + } + ArrayList arrayList = (ArrayList) txFeaturesContext.get(feature.getFeatureType()); + arrayList.add(feature); + } + + public void startTransaction() + { + //txFeaturesContext.startTransaction(); + } + + public void commitTransaction() + { + if (!txFeaturesContext.isEmpty()) + { + logger.debug("Transaction size = " + txFeaturesContext.size()); + //txFeaturesContext.commitTransaction(); + } else + { + logger.debug("Transaction is empty."); + } + + if (!featuresContext.isEmpty()) + { + updateDataStore(); + } + + if (this.getElementLogger() != null) + this.getElementLogger().flashLogging(); + } + + public void rollbackTransaction() + { + //txFeaturesContext.rollbackTransaction(); + if (!featuresContext.isEmpty()) + { + updateDataStore(); + } + } + + private void updateDataStore() + { + Iterator it = featuresContext.keySet().iterator(); + + try + { + while (it.hasNext()) + { + FeatureType featureType = (FeatureType) it.next(); + FeatureWriter writer = null; + if (featuresWriterContext.containsKey(featureType.getTypeName())) + { + writer = featuresWriterContext.get(featureType.getTypeName()); + } else + { + DataStore postGisDataStore = null; + postGisDataStore = dataStoreFactory.createDataStore(properties); + + boolean existTable = isExistFeature(featureType); + + if (!existTable) + { + postGisDataStore.createSchema(featureType); + writer = postGisDataStore.getFeatureWriter(featureType.getTypeName(), + Transaction.AUTO_COMMIT); + } else { + writer = postGisDataStore.getFeatureWriterAppend(featureType.getTypeName(), + Transaction.AUTO_COMMIT); + } + featuresWriterContext.put(featureType.getTypeName(), writer); + } + + ArrayList features = (ArrayList) featuresContext.get(featureType); + Iterator itFeature = features.iterator(); + while (itFeature.hasNext()) + { + Feature feature = (Feature) itFeature.next(); + ((SimpleFeature) writer.next()).setAttributes(feature.getAttributes(null)); + } + //writer.close(); + logger.debug("End Save posgis:"); + } + featuresContext.clear(); + } catch (MalformedURLException e) + { + logger.error(e.getMessage(), e); + } catch (IllegalAttributeException e) + { + logger.error(e.getMessage(), e); + } catch (IOException e) + { + logger.error(e.getMessage(), e); + } + + } + + private boolean isExistFeature(FeatureType featureType) + { + return false; + } + + public JobExecutionContext getExecutionContext() + { + return executionContext; + } + + public void setExecutionContext(JobExecutionContext context) + { + executionContext = context; + } + + /** + * �����]�Ƽg�J�� + * + * @throws IOException IO�o�Ϳ��~ + */ + public void closeFeatureWriter() throws IOException + { + + for (FeatureWriter featureWriter : this.featuresWriterContext.values()) + { + featureWriter.close(); + } + + this.featuresWriterContext.clear(); + } + + public void setConvertDB(String convertDB) + { + _convertDB = convertDB; + } + + public void setConvertFile(String convertFile) + { + _convertFile = convertFile; + } + + protected OracleElementLogger getElementLogger() + { + if (elmLogger == null) + { + elmLogger = new OracleElementLogger(getOracleConnection()); + elmLogger.setDataPath(this.getDataPath()); + } + return elmLogger; + } + + public String getCurrentSchema() + { + return currentSchema; + } + + public void setCurrentSchema(String querySchema) + { + this.currentSchema = querySchema; + this.schemaChanged = true; + } + + public void setConvertElementIn(String convertElementIn) + { + _convertElementIn = convertElementIn; + } } -- Gitblit v0.0.0-SNAPSHOT