From d2dbe3d037fa5a294bcf4b107f276644da93685a Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Tue, 24 Jun 2008 18:10:20 +0800
Subject: [PATCH] update for EOFM-127

---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java  |   57 +++++++----
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java     |   59 +++++++----
 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Element.java                             |   15 +++
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java   |   57 +++++++----
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java |   57 +++++++----
 5 files changed, 161 insertions(+), 84 deletions(-)

diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Element.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Element.java
index 678816a..f1788ac 100644
--- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Element.java
+++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Element.java
@@ -7,6 +7,7 @@
 import java.nio.ByteOrder;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Arrays;
 
 import com.vividsolutions.jts.geom.Envelope;
 
@@ -194,6 +195,20 @@
     {
     }
 
+
+    public ByteBuffer getRawBuffer()
+    {
+        return rawBuffer.asReadOnlyBuffer();
+    }
+
+    public short[] getRawArray()
+    {
+        if (raw == null) return null;
+        short[] result = new short[raw.length];
+        System.arraycopy(raw, 0, result, 0, raw.length);
+        return result;
+    }
+
     public static class Exception extends java.lang.Exception
     {
         public Exception()
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 439d264..8fb69d3 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
@@ -680,7 +680,11 @@
 
                 if ((!type.isComplexElement()) && (!element.isComponentElement()))
                 {
-                    lastComplex = null;
+					if (lastComplex != null)
+					{
+                    	processIndexElement(lastComplex, convertContext);
+                    	lastComplex = null;
+					}
 
                     processIndexElement(element, convertContext);
                 } else if (element.isComponentElement())
@@ -691,19 +695,20 @@
                     }
                 } else if (type.isComplexElement())
                 {
-                    if (lastComplex == null)
+                    if (lastComplex != null)
                     {
-                        lastComplex = element;
-                    } else
-                    {
-                        processIndexElement(element, convertContext);
-                        lastComplex = element;
+                        processIndexElement(lastComplex, convertContext);
                     }
+					lastComplex = element;
                 }
             }
             count++;
         }
 
+        if (lastComplex != null)
+        {
+            processIndexElement(lastComplex, convertContext);
+        }
         logger.debug("ElementRecord Count=" + count);
     }
 
@@ -814,7 +819,11 @@
 
                 if ((!type.isComplexElement()) && (!element.isComponentElement()))
                 {
-                    lastComplex = null;
+					if (lastComplex != null)
+					{
+                    	processOtherElement(lastComplex, convertContext);
+                    	lastComplex = null;
+					}
 
                     processOtherElement(element, convertContext);
                 } else if (element.isComponentElement())
@@ -825,19 +834,20 @@
                     }
                 } else if (type.isComplexElement())
                 {
-                    if (lastComplex == null)
+                    if (lastComplex != null)
                     {
-                        lastComplex = element;
-                    } else
-                    {
-                        processOtherElement(element, convertContext);
-                        lastComplex = element;
+                        processOtherElement(lastComplex, convertContext);
                     }
+					lastComplex = element;
                 }
             }
             count++;
         }
 
+        if (lastComplex != null)
+        {
+            processOtherElement(lastComplex, convertContext);
+        }
         logger.debug("ElementRecord Count=" + count);
     }
 
@@ -992,7 +1002,11 @@
 
                 if ((!type.isComplexElement()) && (!element.isComponentElement()))
                 {
-                    lastComplex = null;
+					if (lastComplex != null)
+					{
+                    	processFeatureElement(lastComplex, convertContext);
+                    	lastComplex = null;
+					}
 
                     processFeatureElement(element, convertContext);
                 } else if (element.isComponentElement())
@@ -1003,19 +1017,20 @@
                     }
                 } else if (type.isComplexElement())
                 {
-                    if (lastComplex == null)
+                    if (lastComplex != null)
                     {
-                        lastComplex = element;
-                    } else
-                    {
-                        processFeatureElement(element, convertContext);
-                        lastComplex = element;
+                        processFeatureElement(lastComplex, convertContext);
                     }
+					lastComplex = element;
                 }
             }
             count++;
         }
 
+        if (lastComplex != null)
+        {
+            processFeatureElement(lastComplex, convertContext);
+        }
         logger.debug("ElementRecord Count=" + count);
     }
 
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 3de3389..f13c971 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
@@ -679,7 +679,11 @@
 
                 if ((!type.isComplexElement()) && (!element.isComponentElement()))
                 {
-                    lastComplex = null;
+					if (lastComplex != null)
+					{
+                    	processIndexElement(lastComplex, convertContext);
+                    	lastComplex = null;
+					}
 
                     processIndexElement(element, convertContext);
                 } else if (element.isComponentElement())
@@ -690,19 +694,20 @@
                     }
                 } else if (type.isComplexElement())
                 {
-                    if (lastComplex == null)
+                    if (lastComplex != null)
                     {
-                        lastComplex = element;
-                    } else
-                    {
-                        processIndexElement(element, convertContext);
-                        lastComplex = element;
+                        processIndexElement(lastComplex, convertContext);
                     }
+					lastComplex = element;
                 }
             }
             count++;
         }
 
+        if (lastComplex != null)
+        {
+            processIndexElement(lastComplex, convertContext);
+        }
         logger.debug("ElementRecord Count=" + count);
     }
 
@@ -813,7 +818,11 @@
 
                 if ((!type.isComplexElement()) && (!element.isComponentElement()))
                 {
-                    lastComplex = null;
+					if (lastComplex != null)
+					{
+                    	processOtherElement(lastComplex, convertContext);
+                    	lastComplex = null;
+					}
 
                     processOtherElement(element, convertContext);
                 } else if (element.isComponentElement())
@@ -824,19 +833,20 @@
                     }
                 } else if (type.isComplexElement())
                 {
-                    if (lastComplex == null)
+                    if (lastComplex != null)
                     {
-                        lastComplex = element;
-                    } else
-                    {
-                        processOtherElement(element, convertContext);
-                        lastComplex = element;
+                        processOtherElement(lastComplex, convertContext);
                     }
+					lastComplex = element;
                 }
             }
             count++;
         }
 
+        if (lastComplex != null)
+        {
+            processOtherElement(lastComplex, convertContext);
+        }
         logger.debug("ElementRecord Count=" + count);
     }
 
@@ -991,7 +1001,11 @@
 
                 if ((!type.isComplexElement()) && (!element.isComponentElement()))
                 {
-                    lastComplex = null;
+					if (lastComplex != null)
+					{
+                    	processFeatureElement(lastComplex, convertContext);
+                    	lastComplex = null;
+					}
 
                     processFeatureElement(element, convertContext);
                 } else if (element.isComponentElement())
@@ -1002,19 +1016,20 @@
                     }
                 } else if (type.isComplexElement())
                 {
-                    if (lastComplex == null)
+                    if (lastComplex != null)
                     {
-                        lastComplex = element;
-                    } else
-                    {
-                        processFeatureElement(element, convertContext);
-                        lastComplex = element;
+                        processFeatureElement(lastComplex, convertContext);
                     }
+					lastComplex = element;
                 }
             }
             count++;
         }
 
+        if (lastComplex != null)
+        {
+            processFeatureElement(lastComplex, convertContext);
+        }
         logger.debug("ElementRecord Count=" + count);
     }
 
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 8d64a62..47e8f13 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
@@ -689,7 +689,11 @@
 
                 if ((!type.isComplexElement()) && (!element.isComponentElement()))
                 {
-                    lastComplex = null;
+					if (lastComplex != null)
+					{
+                    	processIndexElement(lastComplex, convertContext);
+                    	lastComplex = null;
+					}
 
                     processIndexElement(element, convertContext);
                 } else if (element.isComponentElement())
@@ -700,19 +704,20 @@
                     }
                 } else if (type.isComplexElement())
                 {
-                    if (lastComplex == null)
+                    if (lastComplex != null)
                     {
-                        lastComplex = element;
-                    } else
-                    {
-                        processIndexElement(element, convertContext);
-                        lastComplex = element;
+                        processIndexElement(lastComplex, convertContext);
                     }
+					lastComplex = element;
                 }
             }
             count++;
         }
 
+        if (lastComplex != null)
+        {
+            processIndexElement(lastComplex, convertContext);
+        }
         logger.debug("ElementRecord Count=" + count);
     }
 
@@ -823,7 +828,11 @@
 
                 if ((!type.isComplexElement()) && (!element.isComponentElement()))
                 {
-                    lastComplex = null;
+					if (lastComplex != null)
+					{
+                    	processOtherElement(lastComplex, convertContext);
+                    	lastComplex = null;
+					}
 
                     processOtherElement(element, convertContext);
                 } else if (element.isComponentElement())
@@ -834,19 +843,20 @@
                     }
                 } else if (type.isComplexElement())
                 {
-                    if (lastComplex == null)
+                    if (lastComplex != null)
                     {
-                        lastComplex = element;
-                    } else
-                    {
-                        processOtherElement(element, convertContext);
-                        lastComplex = element;
+                        processOtherElement(lastComplex, convertContext);
                     }
+					lastComplex = element;
                 }
             }
             count++;
         }
 
+        if (lastComplex != null)
+        {
+            processOtherElement(lastComplex, convertContext);
+        }
         logger.debug("ElementRecord Count=" + count);
     }
 
@@ -1001,7 +1011,11 @@
 
                 if ((!type.isComplexElement()) && (!element.isComponentElement()))
                 {
-                    lastComplex = null;
+					if (lastComplex != null)
+					{
+                    	processFeatureElement(lastComplex, convertContext);
+                    	lastComplex = null;
+					}
 
                     processFeatureElement(element, convertContext);
                 } else if (element.isComponentElement())
@@ -1012,19 +1026,20 @@
                     }
                 } else if (type.isComplexElement())
                 {
-                    if (lastComplex == null)
+                    if (lastComplex != null)
                     {
-                        lastComplex = element;
-                    } else
-                    {
-                        processFeatureElement(element, convertContext);
-                        lastComplex = element;
+                        processFeatureElement(lastComplex, convertContext);
                     }
+					lastComplex = element;
                 }
             }
             count++;
         }
 
+        if (lastComplex != null)
+        {
+            processFeatureElement(lastComplex, convertContext);
+        }
         logger.debug("ElementRecord Count=" + count);
     }
 
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 6e62e7a..4777d94 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
@@ -583,7 +583,11 @@
 
                 if ((!type.isComplexElement()) && (!element.isComponentElement()))
                 {
-                    lastComplex = null;
+					if (lastComplex != null)
+					{
+                    	processIndexElement(lastComplex, convertContext);
+                    	lastComplex = null;
+					}
 
                     processIndexElement(element, convertContext);
                 } else if (element.isComponentElement())
@@ -594,17 +598,19 @@
                     }
                 } else if (type.isComplexElement())
                 {
-                    if (lastComplex == null)
+                    if (lastComplex != null)
                     {
-                        lastComplex = element;
-                    } else
-                    {
-                        processIndexElement(element, convertContext);
-                        lastComplex = element;
+                        processIndexElement(lastComplex, convertContext);
                     }
+					lastComplex = element;
                 }
             }
             count++;
+        }
+
+        if (lastComplex != null)
+        {
+            processIndexElement(lastComplex, convertContext);
         }
 
         logger.debug("ElementRecord Count=" + count);
@@ -715,7 +721,11 @@
 
                 if ((!type.isComplexElement()) && (!element.isComponentElement()))
                 {
-                    lastComplex = null;
+					if (lastComplex != null)
+					{
+                    	processOtherElement(lastComplex, convertContext);
+                    	lastComplex = null;
+					}
 
                     processOtherElement(element, convertContext);
                 } else if (element.isComponentElement())
@@ -726,17 +736,19 @@
                     }
                 } else if (type.isComplexElement())
                 {
-                    if (lastComplex == null)
+                    if (lastComplex != null)
                     {
-                        lastComplex = element;
-                    } else
-                    {
-                        processOtherElement(element, convertContext);
-                        lastComplex = element;
+                        processOtherElement(lastComplex, convertContext);
                     }
+					lastComplex = element;
                 }
             }
             count++;
+        }
+
+        if (lastComplex != null)
+        {
+            processOtherElement(lastComplex, convertContext);
         }
 
         logger.debug("ElementRecord Count=" + count);
@@ -890,7 +902,11 @@
 
                 if ((!type.isComplexElement()) && (!element.isComponentElement()))
                 {
-                    lastComplex = null;
+					if (lastComplex != null)
+					{
+                    	processFeatureElement(lastComplex, convertContext);
+                    	lastComplex = null;
+					}
 
                     processFeatureElement(element, convertContext);
                 } else if (element.isComponentElement())
@@ -901,19 +917,20 @@
                     }
                 } else if (type.isComplexElement())
                 {
-                    if (lastComplex == null)
+                    if (lastComplex != null)
                     {
-                        lastComplex = element;
-                    } else
-                    {
-                        processFeatureElement(element, convertContext);
-                        lastComplex = element;
+                        processFeatureElement(lastComplex, convertContext);
                     }
+					lastComplex = element;
                 }
             }
             count++;
         }
 
+        if (lastComplex != null)
+        {
+            processFeatureElement(lastComplex, convertContext);
+        }
         logger.debug("ElementRecord Count=" + count);
     }
 

--
Gitblit v0.0.0-SNAPSHOT