From 6523c1f6534042d89ff8a07d4e7c06050276521e Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Thu, 22 Apr 2010 16:31:12 +0800
Subject: [PATCH] dgn7 write function for complex chain

---
 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7fileWriter.java |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7fileWriter.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7fileWriter.java
index fded903..6e475cd 100644
--- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7fileWriter.java
+++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7fileWriter.java
@@ -304,8 +304,19 @@
     }
 
     public void writeElement(Element element) throws IOException {
-        // element.raw
         if (element == null) return;
+        if (element.getElementType().isComplexElement()) {
+            writeTo(element);
+            ComplexElement complexElement = (ComplexElement) element;
+            for (Element component : complexElement) {
+                writeTo(component);
+            }
+        } else {
+            writeTo(element);
+        }
+    }
+
+    private void writeTo(Element element) throws IOException {
         ByteBuffer writeBuffer = ByteBuffer.allocateDirect(element.raw.length * 2);
         writeBuffer.order(ByteOrder.LITTLE_ENDIAN);
         for (short word : element.raw) {
@@ -316,6 +327,8 @@
         channel.write(writeBuffer);
     }
 
+
+
     public void toEnd() throws IOException, Dgn7fileException {
         while (hasNext()) {
             nextElement();

--
Gitblit v0.0.0-SNAPSHOT