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