From cf10aa32ab3cdcb14826e1a2da59b289defff799 Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Mon, 25 Aug 2008 14:44:27 +0800
Subject: [PATCH] update for EOFM-153

---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/IndexDgnConvertOraSDOJobContext.java   |   66 +++++++++++++
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/IndexDgnConvertShpJobContext.java   |   85 +++++++++++++++++
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/IndexDgnConvertMySQLJobContext.java     |   66 +++++++++++++
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java |   83 ++++++++++++++++
 4 files changed, 300 insertions(+), 0 deletions(-)

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 c825407..fe641c7 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
@@ -54,6 +54,7 @@
     private FeatureTypeBuilder typeBuilderRect = null;
     private FeatureType featureType = null;
     private FeatureType featureType2 = null;
+    private FeatureType featureType3 = null;
 
     public IndexDgnConvertMySQLJobContext(String dataPath, DataStore targetDataStore)
     {
@@ -265,6 +266,55 @@
         return null;
     }
 
+    public Feature[] createFeature3(FeatureType featureType, Element element) throws IllegalAttributeException
+    {
+        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
+        if (element instanceof TextElement)
+        {
+            TextElement textElement = (TextElement) element;
+            String tpclid = textElement.getText();
+            Feature[] result = new Feature[4];
+
+            Envelope extent = TPCLIDConverter.convertTpclIdToEnvelope(tpclid);
+
+            for (int i = 0; i < 4; i++)
+            {
+                char mapSubId = TPCLIDConverter.intToAscii(65 + i);
+                int dx = (i % 2) * TPCLIDConverter.SX600;
+                int dy = (i / 2) * TPCLIDConverter.SY600;
+
+                Geometry geom = geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[]
+                        {
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + dx, extent.getMaxY() - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)),
+                        }), null);
+
+                result[i] = featureType.create(new Object[]{
+                        geom,
+                        extent.getMinX(),
+                        extent.getMinY(),
+                        extent.getMaxX(),
+                        extent.getMaxY(),
+                        tpclid + mapSubId,
+                        colorTable.getColorCode(textElement.getColorIndex()),
+                        textElement.getWeight(),
+                        textElement.getLineStyle()
+                });
+
+            }
+            return result;
+        }
+        return null;
+    }
+
     private Feature createFeature(TextElement element) throws SchemaException, IllegalAttributeException
     {
         if (featureType == null)
@@ -296,6 +346,22 @@
         return createFeature2(featureType2, element);
     }
 
+    private Feature[] createFeature3(TextElement element) throws SchemaException, IllegalAttributeException
+    {
+        if (featureType3 == null)
+        {
+            String dgnname = getFilename().toLowerCase();
+            int i = dgnname.lastIndexOf(".");
+            if (i != -1)
+            {
+                dgnname = dgnname.substring(0, i);
+            }
+            dgnname = dgnname + "_s";
+            featureType3 = createFeatureElement(dgnname.toLowerCase());
+        }
+        return createFeature3(featureType3, element);
+    }
+
     protected FrammeAttributeData getFeatureLinkage(Element element)
     {
         if (!element.hasUserAttributeData())
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 5db125b..e4e1976 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
@@ -54,6 +54,7 @@
     private FeatureTypeBuilder typeBuilderRect = null;
     private FeatureType featureType = null;
     private FeatureType featureType2 = null;
+    private FeatureType featureType3 = null;
 
     public IndexDgnConvertOraSDOJobContext(String dataPath, DataStore targetDataStore)
     {
@@ -265,6 +266,55 @@
         return null;
     }
 
+    public Feature[] createFeature3(FeatureType featureType, Element element) throws IllegalAttributeException
+    {
+        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
+        if (element instanceof TextElement)
+        {
+            TextElement textElement = (TextElement) element;
+            String tpclid = textElement.getText();
+            Feature[] result = new Feature[4];
+
+            Envelope extent = TPCLIDConverter.convertTpclIdToEnvelope(tpclid);
+
+            for (int i = 0; i < 4; i++)
+            {
+                char mapSubId = TPCLIDConverter.intToAscii(65 + i);
+                int dx = (i % 2) * TPCLIDConverter.SX600;
+                int dy = (i / 2) * TPCLIDConverter.SY600;
+
+                Geometry geom = geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[]
+                        {
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + dx, extent.getMaxY() - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)),
+                        }), null);
+
+                result[i] = featureType.create(new Object[]{
+                        geom,
+                        extent.getMinX(),
+                        extent.getMinY(),
+                        extent.getMaxX(),
+                        extent.getMaxY(),
+                        tpclid + mapSubId,
+                        colorTable.getColorCode(textElement.getColorIndex()),
+                        textElement.getWeight(),
+                        textElement.getLineStyle()
+                });
+
+            }
+            return result;
+        }
+        return null;
+    }
+
     private Feature createFeature(TextElement element) throws SchemaException, IllegalAttributeException
     {
         if (featureType == null)
@@ -296,6 +346,22 @@
         return createFeature2(featureType2, element);
     }
 
+    private Feature[] createFeature3(TextElement element) throws SchemaException, IllegalAttributeException
+    {
+        if (featureType3 == null)
+        {
+            String dgnname = getFilename().toLowerCase();
+            int i = dgnname.lastIndexOf(".");
+            if (i != -1)
+            {
+                dgnname = dgnname.substring(0, i);
+            }
+            dgnname = dgnname + "_s";
+            featureType3 = createFeatureElement(dgnname.toLowerCase());
+        }
+        return createFeature3(featureType3, element);
+    }
+
     protected FrammeAttributeData getFeatureLinkage(Element element)
     {
         if (!element.hasUserAttributeData())
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 fb07f8c..08156d7 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
@@ -11,6 +11,7 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Arrays;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -51,8 +52,10 @@
 
     private FeatureTypeBuilder typeBuilderPnt = null;
     private FeatureTypeBuilder typeBuilderRect = null;
+
     private FeatureType featureType = null;
     private FeatureType featureType2 = null;
+    private FeatureType featureType3 = null;
 
     private boolean dropTableMode = true;
     private int accumulate = 0;
@@ -98,6 +101,21 @@
         }
         arrayList = txFeaturesContext.get(feature.getFeatureType());
         arrayList.add(feature);
+
+        Feature[] features = createFeature3((TextElement) element);
+        if (features == null)
+        {
+            logger.info("cannot craete feature3." + element.toString() + "'" +
+                    ((TextElement) element).getText() + "'");
+            return;
+        }
+        if (!txFeaturesContext.containsKey(features[0].getFeatureType()))
+        {
+            txFeaturesContext.put(features[0].getFeatureType(), new ArrayList<Feature>());
+        }
+        arrayList = txFeaturesContext.get(features[0].getFeatureType());
+        arrayList.addAll(Arrays.asList(features));
+
         accumulate++;
 
         if (accumulate > BATCHSIZE)
@@ -400,6 +418,55 @@
         return null;
     }
 
+    public Feature[] createFeature3(FeatureType featureType, Element element) throws IllegalAttributeException
+    {
+        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
+        if (element instanceof TextElement)
+        {
+            TextElement textElement = (TextElement) element;
+            String tpclid = textElement.getText();
+            Feature[] result = new Feature[4];
+
+            Envelope extent = TPCLIDConverter.convertTpclIdToEnvelope(tpclid);
+
+            for (int i = 0; i < 4; i++)
+            {
+                char mapSubId = TPCLIDConverter.intToAscii(65 + i);
+                int dx = (i % 2) * TPCLIDConverter.SX600;
+                int dy = (i / 2) * TPCLIDConverter.SY600;
+
+                Geometry geom = geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[]
+                        {
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + dx, extent.getMaxY() - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)),
+                        }), null);
+
+                result[i] = featureType.create(new Object[]{
+                        geom,
+                        extent.getMinX(),
+                        extent.getMinY(),
+                        extent.getMaxX(),
+                        extent.getMaxY(),
+                        tpclid + mapSubId,
+                        colorTable.getColorCode(textElement.getColorIndex()),
+                        textElement.getWeight(),
+                        textElement.getLineStyle()
+                });
+
+            }
+            return result;
+        }
+        return null;
+    }
+
     private Feature createFeature(TextElement element) throws SchemaException, IllegalAttributeException
     {
         if (featureType == null)
@@ -431,6 +498,22 @@
         return createFeature2(featureType2, element);
     }
 
+    private Feature[] createFeature3(TextElement element) throws SchemaException, IllegalAttributeException
+    {
+        if (featureType3 == null)
+        {
+            String dgnname = getFilename().toLowerCase();
+            int i = dgnname.lastIndexOf(".");
+            if (i != -1)
+            {
+                dgnname = dgnname.substring(0, i);
+            }
+            dgnname = dgnname + "_s";
+            featureType3 = createFeatureElement(dgnname.toLowerCase());
+        }
+        return createFeature3(featureType3, element);
+    }
+
     protected FrammeAttributeData getFeatureLinkage(Element element)
     {
         if (!element.hasUserAttributeData())
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 c1806cf..e737bda 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
@@ -10,6 +10,7 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Arrays;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -60,6 +61,9 @@
     private FeatureTypeBuilder typeBuilderRect = null;
     private FeatureType featureType = null;
     private FeatureType featureType2 = null;
+    private FeatureType featureType3 = null;
+
+    private int accumulate = 0;
 
     public IndexDgnConvertShpJobContext(String dataPath)
     {
@@ -103,6 +107,22 @@
         }
         arrayList = (ArrayList) txFeaturesContext.get(feature.getFeatureType());
         arrayList.add(feature);
+
+        Feature[] features = createFeature3((TextElement) element);
+        if (features == null)
+        {
+            logger.info("cannot craete feature3." + element.toString() + "'" +
+                    ((TextElement) element).getText() + "'");
+            return;
+        }
+        if (!txFeaturesContext.containsKey(features[0].getFeatureType()))
+        {
+            txFeaturesContext.put(features[0].getFeatureType(), new ArrayList<Feature>());
+        }
+        arrayList = (ArrayList) txFeaturesContext.get(features[0].getFeatureType());
+        arrayList.addAll(Arrays.asList(features));
+
+        accumulate++;
     }
 
     public void startTransaction()
@@ -289,6 +309,55 @@
         return null;
     }
 
+    public Feature[] createFeature3(FeatureType featureType, Element element) throws IllegalAttributeException
+    {
+        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
+        if (element instanceof TextElement)
+        {
+            TextElement textElement = (TextElement) element;
+            String tpclid = textElement.getText();
+            Feature[] result = new Feature[4];
+
+            Envelope extent = TPCLIDConverter.convertTpclIdToEnvelope(tpclid);
+
+            for (int i = 0; i < 4; i++)
+            {
+                char mapSubId = TPCLIDConverter.intToAscii(65 + i);
+                int dx = (i % 2) * TPCLIDConverter.SX600;
+                int dy = (i / 2) * TPCLIDConverter.SY600;
+
+                Geometry geom = geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[]
+                        {
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + TPCLIDConverter.SX600 + dx, extent.getMaxY() - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + dx, extent.getMaxY() - dy)),
+                                TWDDatumConverter.fromTM2ToTWD97(new Coordinate(
+                                        extent.getMinX() + dx, extent.getMaxY() - TPCLIDConverter.SY600 - dy)),
+                        }), null);
+
+                result[i] = featureType.create(new Object[]{
+                        geom,
+                        extent.getMinX(),
+                        extent.getMinY(),
+                        extent.getMaxX(),
+                        extent.getMaxY(),
+                        tpclid + mapSubId,
+                        colorTable.getColorCode(textElement.getColorIndex()),
+                        textElement.getWeight(),
+                        textElement.getLineStyle()
+                });
+
+            }
+            return result;
+        }
+        return null;
+    }
+
     private Feature createFeature(TextElement element) throws SchemaException, IllegalAttributeException
     {
         if (featureType == null)
@@ -320,6 +389,22 @@
         return createFeature2(featureType2, element);
     }
 
+    private Feature[] createFeature3(TextElement element) throws SchemaException, IllegalAttributeException
+    {
+        if (featureType3 == null)
+        {
+            String dgnname = getFilename().toLowerCase();
+            int i = dgnname.lastIndexOf(".");
+            if (i != -1)
+            {
+                dgnname = dgnname.substring(0, i);
+            }
+            dgnname = dgnname + "_s";
+            featureType3 = createFeatureElement(dgnname.toLowerCase());
+        }
+        return createFeature3(featureType3, element);
+    }
+
     protected FrammeAttributeData getFeatureLinkage(Element element)
     {
         if (!element.hasUserAttributeData())

--
Gitblit v0.0.0-SNAPSHOT