From b31e88f14407d5321a7adb1dd62c9bbac24d0515 Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Fri, 13 Jun 2008 15:46:03 +0800
Subject: [PATCH] update for EOFM-117 createSchemaTexts and createNewSchemaTexts

---
 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/ComplexChainElement.java |   43 ++++++++++---------------------------------
 1 files changed, 10 insertions(+), 33 deletions(-)

diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/ComplexChainElement.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/ComplexChainElement.java
index 001f83a..363de3c 100644
--- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/ComplexChainElement.java
+++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/ComplexChainElement.java
@@ -11,6 +11,8 @@
 import com.vividsolutions.jts.geom.CoordinateList;
 import com.vividsolutions.jts.geom.Geometry;
 import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.MultiLineString;
+import com.vividsolutions.jts.geom.LineString;
 
 /**
  * ComplexChainElement
@@ -148,36 +150,8 @@
 
     public Geometry toGeometry(GeometryFactory factory)
     {
-        if (size() == 1)
-        {
-            Element element = (Element) get(0);
+        ArrayList<LineString> lineStrings = new ArrayList<LineString>();
 
-            if (element instanceof LineStringElement)
-            {
-                if (((LineStringElement) element).getVerticeSize() == 0 || ((LineStringElement) element).getVerticeSize() > 1)
-                {
-                    return ((LineStringElement) element).toGeometry(factory);
-                }
-
-            } else if (element instanceof LineElement)
-            {
-                if (((LineElement) element).getVertices().length == 0 || ((LineElement) element).getVertices().length > 1)
-                {
-                    return ((LineElement) element).toGeometry(factory);
-                }
-
-            } else
-            {
-                if (element instanceof GeometryConverter)
-                {
-                    return ((GeometryConverter) element).toGeometry(factory);
-                }
-
-                return null;
-            }
-        }
-
-        CoordinateList pts = new CoordinateList();
         for (ListIterator it = listIterator(); it.hasNext();)
         {
             Element element = (Element) it.next();
@@ -186,7 +160,7 @@
             {
                 if (((LineStringElement) element).getVerticeSize() == 0 || ((LineStringElement) element).getVerticeSize() > 1)
                 {
-                    pts.add(((LineStringElement) element).toGeometry(factory).getCoordinates(), true);
+                    lineStrings.add((LineString) ((LineStringElement) element).toGeometry(factory));
                 }
 
             } else if (element instanceof LineElement)
@@ -194,15 +168,18 @@
 
                 if (((LineElement) element).getVertices().length == 0 || ((LineElement) element).getVertices().length > 1)
                 {
-                    pts.add(((LineElement) element).toGeometry(factory).getCoordinates(), true);
+                    lineStrings.add((LineString) ((LineElement) element).toGeometry(factory));
                 }
             } else if (element instanceof ArcElement)
             {
-                pts.add(((ArcElement) element).toGeometry(factory).getCoordinates(), true);
+                lineStrings.add((LineString) ((ArcElement) element).toGeometry(factory));
             }
         }
 
-        return factory.createLineString(pts.toCoordinateArray());
+        LineString[] lines = lineStrings.toArray(new LineString[lineStrings.size()]);
+        if ((lines == null) || (lines.length == 0))
+            return null;
+        return factory.createMultiLineString(lines);
     }
 
     public double getElementSize()

--
Gitblit v0.0.0-SNAPSHOT