From 1e25c2c090a837ce475ab5a66f99da2ecbecec95 Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Wed, 07 May 2008 18:48:45 +0800
Subject: [PATCH] update for EOFM-75

---
 xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml                                   |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java   |   30 +++++----
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java     |   18 ++----
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java     |    5 +
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeneralDgnConvertJobContext.java |   91 ++++++++++++++++--------------
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TWDDatumConverter.java           |    8 +-
 6 files changed, 82 insertions(+), 72 deletions(-)

diff --git a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml
index 53991c5..4a2345d 100644
--- a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml
+++ b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml
@@ -46,7 +46,7 @@
         </entry>
         <entry>
           <key>CONVERTDB</key>
-          <value>true</value>
+          <value>false</value>
         </entry>
         <entry>
           <key>CONVERTFILE</key>
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeneralDgnConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeneralDgnConvertJobContext.java
index 0e1fc7a..fef0b39 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeneralDgnConvertJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeneralDgnConvertJobContext.java
@@ -29,7 +29,6 @@
 import com.vividsolutions.jts.geom.GeometryFactory;
 
 import com.ximple.eofms.util.DefaultColorTable;
-import com.ximple.io.dgn7.ArcElement;
 import com.ximple.io.dgn7.Element;
 import com.ximple.io.dgn7.FrammeAttributeData;
 import com.ximple.io.dgn7.LineElement;
@@ -47,8 +46,8 @@
 
     private String dataOut = null;
 
-    private HashMap featuresContext = new HashMap();
-    private HashMap featuresWriterContext = new HashMap();
+    private HashMap<String, ArrayList<Feature>> featuresContext = new HashMap<String, ArrayList<Feature>>();
+    private HashMap<String, FeatureWriter> featuresWriterContext = new HashMap<String, FeatureWriter>();
 
     private PessimisticMapWrapper txFeaturesContext;
     private FeatureTypeBuilder typeBuilder = null;
@@ -88,9 +87,9 @@
 
             if (!txFeaturesContext.containsKey(feature.getFeatureType()))
             {
-                txFeaturesContext.put(feature.getFeatureType(), new ArrayList());
+                txFeaturesContext.put(feature.getFeatureType(), new ArrayList<Feature>());
             }
-            ArrayList arrayList = (ArrayList) txFeaturesContext.get(feature.getFeatureType());
+            ArrayList<Feature> arrayList = (ArrayList<Feature>) txFeaturesContext.get(feature.getFeatureType());
             arrayList.add(feature);
         } else
         {
@@ -143,20 +142,16 @@
                 FeatureWriter writer;
                 if (featuresWriterContext.containsKey(featureType.getTypeName()))
                 {
-                    writer = (FeatureWriter) featuresWriterContext.get(featureType.getTypeName());
+                    writer = featuresWriterContext.get(featureType.getTypeName());
                 } else
                 {
                     ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL());
                     shapefileDataStore.createSchema(featureType);
                     writer = shapefileDataStore.getFeatureWriter(featureType.getTypeName(), Transaction.AUTO_COMMIT);
-                    if (this.featuresWriterContext == null)
-                    {
-                        this.featuresWriterContext = new HashMap();
-                    }
                     featuresWriterContext.put(featureType.getTypeName(), writer);
                 }
 
-                ArrayList features = (ArrayList) featuresContext.get(featureType);
+                ArrayList<Feature> features = featuresContext.get(featureType);
                 Iterator itFeature = features.iterator();
                 while (itFeature.hasNext())
                 {
@@ -194,6 +189,16 @@
             dataOut = outPath.toString();
         }
         return dataOut;
+    }
+
+    public void closeFeatureWriter() throws IOException {
+
+        for (FeatureWriter featureWriter : this.featuresWriterContext.values())
+        {
+            featureWriter.close();
+        }
+
+        this.featuresWriterContext.clear();
     }
 
     public FeatureType createPointFeatureElement(String featureName) throws SchemaException
@@ -286,13 +291,15 @@
         {
             LineStringElement linestring = (LineStringElement) element;
             convertDecorator.setConverter(linestring);
-            Feature feature = featureType.create(new Object[]{
-                    convertDecorator.toGeometry(geometryFactory),
-                    colorTable.getColorCode(linestring.getColorIndex()),
-                    linestring.getWeight(),
-                    linestring.getLineStyle()
-            });
-            return feature;
+            Geometry geom = convertDecorator.toGeometry(geometryFactory);
+            if (geom != null)
+                return featureType.create(new Object[]{
+                        geom,
+                        colorTable.getColorCode(linestring.getColorIndex()),
+                        linestring.getWeight(),
+                        linestring.getLineStyle()
+                });
+            return null;
         } else if (element instanceof LineElement)
         {
             LineElement line = (LineElement) element;
@@ -306,21 +313,21 @@
                         line.getLineStyle()
                 });
             return null;
-        /*
-        } else if (element instanceof ArcElement)
-        {
-            ArcElement arcElement = (ArcElement) element;
-            convertDecorator.setConverter(arcElement);
-            Geometry geom = convertDecorator.toGeometry(geometryFactory);
-            if (geom != null)
-                return featureType.create(new Object[]{
-                        geom,
-                        colorTable.getColorCode(arcElement.getColorIndex()),
-                        arcElement.getWeight(),
-                        arcElement.getLineStyle()
-                });
-            return null;
-        */
+            /*
+            } else if (element instanceof ArcElement)
+            {
+                ArcElement arcElement = (ArcElement) element;
+                convertDecorator.setConverter(arcElement);
+                Geometry geom = convertDecorator.toGeometry(geometryFactory);
+                if (geom != null)
+                    return featureType.create(new Object[]{
+                            geom,
+                            colorTable.getColorCode(arcElement.getColorIndex()),
+                            arcElement.getWeight(),
+                            arcElement.getLineStyle()
+                    });
+                return null;
+            */
         }
         return null;
     }
@@ -375,16 +382,16 @@
                 featureTypes.put(typeName, createLineFeatureElement(typeName));
             }
             return featureTypes.get(typeName);
-        /*
-        } else if (element instanceof ArcElement)
-        {
-            typeName = getFeatureBaseName() + "A";
-            if (!featureTypes.containsKey(typeName))
+            /*
+            } else if (element instanceof ArcElement)
             {
-                featureTypes.put(typeName, createArcFeatureElement(typeName));
-            }
-            return featureTypes.get(typeName);
-        */
+                typeName = getFeatureBaseName() + "A";
+                if (!featureTypes.containsKey(typeName))
+                {
+                    featureTypes.put(typeName, createArcFeatureElement(typeName));
+                }
+                return featureTypes.get(typeName);
+            */
         }
 
         return null;
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java
index 77e3c23..44caa32 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java
@@ -46,8 +46,8 @@
 
     private String dataOut = null;
 
-    private HashMap featuresContext = new HashMap();
-    private HashMap featuresWriterContext = new HashMap();
+    private HashMap<String, ArrayList<Feature> > featuresContext = new HashMap<String, ArrayList<Feature> >();
+    private HashMap<String, FeatureWriter> featuresWriterContext = new HashMap<String, FeatureWriter>();
 
     private PessimisticMapWrapper txFeaturesContext;
     private FeatureTypeBuilder typeBuilder = null;
@@ -127,25 +127,20 @@
                 FeatureWriter writer;
                 if(featuresWriterContext.containsKey(featureType.getTypeName()))
                 {
-                    writer = (FeatureWriter) featuresWriterContext.get(featureType.getTypeName()) ;
+                    writer = featuresWriterContext.get(featureType.getTypeName()) ;
                 }
                 else
                 {
                   ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL());
                   shapefileDataStore.createSchema(featureType);
                   writer = shapefileDataStore.getFeatureWriter(featureType.getTypeName(), Transaction.AUTO_COMMIT);
-                  if(this.featuresWriterContext == null)
-                  {
-                     this.featuresWriterContext =  new HashMap();
-                  }
                   featuresWriterContext.put(featureType.getTypeName() , writer);
                 }
 
-                ArrayList features = (ArrayList) featuresContext.get(featureType);
-                Iterator itFeature = features.iterator();
-                while (itFeature.hasNext())
+                ArrayList<Feature> features = featuresContext.get(featureType);
+                for (Feature feature1 : features)
                 {
-                    Feature feature = (Feature) itFeature.next();
+                    Feature feature = feature1;
                     ((SimpleFeature) writer.next()).setAttributes(feature.getAttributes(null));
                 }
                 //writer.close();
@@ -179,6 +174,16 @@
             dataOut = outPath.toString();
         }
         return dataOut;
+    }
+
+    public void closeFeatureWriter() throws IOException {
+
+        for (FeatureWriter featureWriter : this.featuresWriterContext.values())
+        {
+            featureWriter.close();
+        }
+
+        this.featuresWriterContext.clear();
     }
 
     public FeatureType createFeatureElement(String featureName) throws SchemaException
@@ -217,7 +222,7 @@
                     TWDDatumConverter.fromTM2ToTWD97(new Coordinate(extent.getMinX(), extent.getMinY())),
             });
 
-            Feature feature = featureType.create(new Object[]{
+            return featureType.create(new Object[]{
                     geom,
                     extent.getMinX(),
                     extent.getMinY(),
@@ -228,7 +233,6 @@
                     textElement.getWeight(),
                     textElement.getLineStyle()
             });
-            return feature;
         }
         return null;
     }
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 9a33e99..fb26630 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
@@ -120,7 +120,7 @@
                     exetcuteConvert(jobContext, orgSchema, _dataPath);
 
                     //close all open filewriter instance
-                    jobContext.closeFeatureWrite();
+                    jobContext.closeFeatureWriter();
                 }
             }
 
@@ -500,6 +500,7 @@
                 scanIndexDgnElement(convertContext);
 
                 convertContext.commitTransaction();
+                convertContext.closeFeatureWriter();
                 System.gc();
             } catch (FileNotFoundException e)
             {
@@ -627,6 +628,8 @@
                 scanOtherDgnElement(convertContext);
 
                 convertContext.commitTransaction();
+                convertContext.closeFeatureWriter();
+                System.gc();
             } catch (FileNotFoundException e)
             {
                 convertContext.rollbackTransaction();
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java
index 1db4667..c0d0c53 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java
@@ -60,7 +60,7 @@
     private ElementDispatcher elementDispatcher;
 
     private HashMap featuresContext = new HashMap();
-    private HashMap featuresWriterContext = new HashMap();
+    private HashMap<String, FeatureWriter> featuresWriterContext = new HashMap<String, FeatureWriter>();
     private PessimisticMapWrapper txFeaturesContext;
 
     private JobExecutionContext executionContext;
@@ -189,17 +189,13 @@
                 FeatureWriter writer = null;
                 if(featuresWriterContext.containsKey(featureType.getTypeName()))
                 {
-                    writer = (FeatureWriter) featuresWriterContext.get(featureType.getTypeName()) ;
+                    writer = featuresWriterContext.get(featureType.getTypeName()) ;
                 }
                 else
                 {
                   ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL());
                   shapefileDataStore.createSchema(featureType);
                   writer = shapefileDataStore.getFeatureWriter(featureType.getTypeName(), Transaction.AUTO_COMMIT);
-                  if(this.featuresWriterContext == null)
-                  {
-                     this.featuresWriterContext =  new HashMap();
-                  }
                   featuresWriterContext.put(featureType.getTypeName() , writer);
                 }
 
@@ -241,16 +237,14 @@
      * �����]�Ƽg�J��
      * @throws IOException IO�o�Ϳ��~
      */
-    public void closeFeatureWrite() throws IOException {
-       Iterator iter =   this.featuresWriterContext.values().iterator();
+    public void closeFeatureWriter() throws IOException {
 
-        while(iter.hasNext())
+        for (FeatureWriter featureWriter : this.featuresWriterContext.values())
         {
-           FeatureWriter writer = (FeatureWriter) iter.next();
-           writer.close();
+            featureWriter.close();
         }
 
-        this.featuresWriterContext = null;
+        this.featuresWriterContext.clear();
     }
 
     /**
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TWDDatumConverter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TWDDatumConverter.java
index 739938b..330e4fd 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TWDDatumConverter.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TWDDatumConverter.java
@@ -433,7 +433,7 @@
      *
      *   fromTM2(TWD97_A, TWD97_ECC, TWD97_ECC2, 0, 121, TWD97_TM2, &dx, &dy);
      *
-     *   printf("TM2->TWD97nTM2     (%f, %f)nConvert (%.9f, %.9f)nOrigin  (%.9f, %.9f)n", tx2, ty2, dx, dy, x2, y2);
+     *   printf("TM2->TWD97nTM2     (%f, %f)nConvert (%.9f, %.9f)\nOrigin  (%.9f, %.9f)\n", tx2, ty2, dx, dy, x2, y2);
      *   printf("Acuuracy (%.9f, X:%.9f, Y:%.9f)nn", sqrt((dx-x2)*(dx-x2)+(dy-y2)*(dy-y2)), (dx-x2), (dy-y2));
      *
      *   ////////////////////////////////////////////
@@ -457,7 +457,7 @@
      *
      *   dx1 += 250000;  // TM2 in Taiwan should add 250000
      *
-     *   printf("TWD67->TWD97nTWD67   (%.9f, %.9f, %6.2f) (%.3f, %.3f)n", x1, y1, z1, tx1, ty1);
+     *   printf("TWD67->TWD97\nTWD67   (%.9f, %.9f, %6.2f) (%.3f, %.3f)n", x1, y1, z1, tx1, ty1);
      *   printf("Convert (%.9f, %.9f, %6.2f) (%.3f, %.3f)n", dx, dy, dz, dx1, dy1);
      *   printf("Origin  (%.9f, %.9f, %6.2f) (%.3f, %.3f)n", x2, y2, z2, tx2, ty2);
      *   printf("Acuuracy (%.4f, X:%.4f, Y:%.4f)nn", sqrt((dx1-tx2)*(dx1-tx2)+(dy1-ty2)*(dy1-ty2)), (dx1-tx2), (dy1-ty2));
@@ -497,7 +497,9 @@
      */
     public static Coordinate fromTM2ToTWD97(Coordinate pt)
     {
-        Coordinate ptTWD97 = toTWD97(fromTM2(TWD67_A, TWD67_ECC, TWD67_ECC2, 0, 121, TWD67_TM2, pt.x - 250000.0, pt.y));
+        Coordinate ptTWD67 = fromTM2(TWD67_A, TWD67_ECC, TWD67_ECC2, 0, 121, TWD67_TM2, pt.x - 250000.0, pt.y);
+        ptTWD67.z = 0;
+        Coordinate ptTWD97 = toTWD97(ptTWD67);
         Coordinate pt97TM2 = toTM2(TWD97_A, TWD97_ECC, TWD97_ECC2, 0, 121, TWD97_TM2, ptTWD97.x, ptTWD97.y);
         pt97TM2.x += 250000;
         return pt97TM2;

--
Gitblit v0.0.0-SNAPSHOT