From d0b1e59bbf66c3c07cdc9ae241bd63d5da8128e4 Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Tue, 12 Aug 2008 17:45:40 +0800
Subject: [PATCH] update for EOFM-144

---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateMultiSymbolStrategy.java |  117 +++++++++++++++++++++++---------------
 .gitignore                                                                                      |    2 
 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextNodeElement.java                     |    2 
 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java                         |    2 
 4 files changed, 74 insertions(+), 49 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..be2f5df
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+xdgnjobs/target
+xdgnjobs/ximple-spatialjob/target
diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java
index 28aa8e5..6cbcb65 100644
--- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java
+++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java
@@ -266,7 +266,7 @@
             srcPt[1] = p.y;
 
             at.transform(srcPt, 0, dstPt, 0, 1);
-            result.add(new Coordinate(dstPt[0], dstPt[1]), true);
+            result.add(new Coordinate(dstPt[0], dstPt[1]), false);
         }
 
         return result.toCoordinateArray();
diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextNodeElement.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextNodeElement.java
index f4e5c76..4061dde 100644
--- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextNodeElement.java
+++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextNodeElement.java
@@ -191,7 +191,7 @@
         for (int i = 0; i < size(); i++)
         {
             TextElement txtElm = (TextElement) get(i);
-            coords.add(txtElm.toAnchorCoordinates());
+            coords.add(txtElm.toAnchorCoordinates(), false);
         }
         return factory.createMultiPoint(coords.toCoordinateArray());
     }
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateMultiSymbolStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateMultiSymbolStrategy.java
index 542ba6b..096947f 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateMultiSymbolStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateMultiSymbolStrategy.java
@@ -1,32 +1,34 @@
 package com.ximple.eofms.filter;
 
-import java.util.TreeMap;
-import java.util.List;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.util.List;
+import java.util.TreeMap;
 import javax.swing.event.EventListenerList;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.geotools.feature.FeatureTypeBuilder;
-import org.geotools.feature.FeatureType;
-import org.geotools.feature.SchemaException;
 import org.geotools.feature.Feature;
+import org.geotools.feature.FeatureType;
+import org.geotools.feature.FeatureTypeBuilder;
 import org.geotools.feature.IllegalAttributeException;
+import org.geotools.feature.SchemaException;
 
-import com.vividsolutions.jts.geom.GeometryFactory;
 import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.CoordinateList;
+import com.vividsolutions.jts.geom.Coordinate;
 import com.vividsolutions.jts.util.Assert;
 
-import com.ximple.eofms.util.TWD97GeometryConverterDecorator;
-import com.ximple.eofms.util.FeatureTypeBuilderUtil;
 import com.ximple.eofms.util.DefaultColorTable;
-import com.ximple.io.dgn7.FrammeAttributeData;
+import com.ximple.eofms.util.FeatureTypeBuilderUtil;
+import com.ximple.eofms.util.TWD97GeometryConverterDecorator;
 import com.ximple.io.dgn7.Element;
-import com.ximple.io.dgn7.UserAttributeData;
+import com.ximple.io.dgn7.FrammeAttributeData;
+import com.ximple.io.dgn7.GeometryConverter;
 import com.ximple.io.dgn7.TextElement;
 import com.ximple.io.dgn7.TextNodeElement;
-import com.ximple.io.dgn7.GeometryConverter;
+import com.ximple.io.dgn7.UserAttributeData;
 
 public class CreateMultiSymbolStrategy implements CreateFeatureTypeStrategy
 {
@@ -96,22 +98,22 @@
             convertDecorator.setConverter(txtElement);
             Geometry gobj = convertDecorator.toGeometry(geometryFactory);
             if (gobj != null)
-            feature = featureType.create(new Object[]{
-                    gobj,
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    (short) 0,
-                    (short) txtElement.getLevelIndex(),
-                    colorTable.getColorCode(txtElement.getColorIndex()),
-                    (short) txtElement.getWeight(),
-                    (short) txtElement.getLineStyle(),
-                    (short) txtElement.getJustification(),
-                    (float) txtElement.getTextHeight(),
-                    (float) txtElement.getTextWidth(),
-                    (float) angle,
-                    sb.toString()
-            });
+                feature = featureType.create(new Object[]{
+                        gobj,
+                        fLinkage.getFsc(),
+                        (long) fLinkage.getUfid(),
+                        (short) fLinkage.getComponentID(),
+                        (short) 0,
+                        (short) txtElement.getLevelIndex(),
+                        colorTable.getColorCode(txtElement.getColorIndex()),
+                        (short) txtElement.getWeight(),
+                        (short) txtElement.getLineStyle(),
+                        (short) txtElement.getJustification(),
+                        (float) txtElement.getTextHeight(),
+                        (float) txtElement.getTextWidth(),
+                        (float) angle,
+                        sb.toString()
+                });
         } else if (element instanceof TextNodeElement)
         {
             TextNodeElement nodeElement = (TextNodeElement) element;
@@ -136,22 +138,22 @@
             convertDecorator.setConverter(nodeElement);
             Geometry gobj = convertDecorator.toGeometry(geometryFactory);
             if (gobj != null)
-            feature = featureType.create(new Object[]{
-                    gobj,
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    (short) 0,
-                    (short) nodeElement.getLevelIndex(),
-                    colorTable.getColorCode(nodeElement.getColorIndex()),
-                    (short) nodeElement.getWeight(),
-                    (short) nodeElement.getLineStyle(),
-                    (short) nodeElement.getJustification(),
-                    (float) nodeElement.getTextNodeHeight(),
-                    (float) nodeElement.getTextNodeLength(),
-                    (float) angle,
-                    sb.toString()
-            });
+                feature = featureType.create(new Object[]{
+                        gobj,
+                        fLinkage.getFsc(),
+                        (long) fLinkage.getUfid(),
+                        (short) fLinkage.getComponentID(),
+                        (short) 0,
+                        (short) nodeElement.getLevelIndex(),
+                        colorTable.getColorCode(nodeElement.getColorIndex()),
+                        (short) nodeElement.getWeight(),
+                        (short) nodeElement.getLineStyle(),
+                        (short) nodeElement.getJustification(),
+                        (float) nodeElement.getTextNodeHeight(),
+                        (float) nodeElement.getTextNodeLength(),
+                        (float) angle,
+                        sb.toString()
+                });
         } else
         {
             logger.info("CreateMultiSymbolStrategy cannot conver " + element.toString() + "to Feature");
@@ -192,12 +194,33 @@
 
             GeometryConverter converter = getConverter();
             Geometry geom = null;
-            if (converter instanceof TextElement)
+            try
             {
-                geom = ((TextElement) converter).toAnchorGeometry(factory);
-            } else if (converter instanceof TextNodeElement)
+                if (converter instanceof TextElement)
+                {
+                    geom = ((TextElement) converter).toAnchorGeometry(factory);
+                } else if (converter instanceof TextNodeElement)
+                {
+                    geom = ((TextNodeElement) converter).toAnchorGeometry(factory);
+                }
+            } catch (ArrayStoreException e)
             {
-                geom = ((TextNodeElement) converter).toAnchorGeometry(factory);
+                logger.warn(e.getMessage(), e);
+                if (converter instanceof TextNodeElement)
+                {
+                    TextNodeElement node = (TextNodeElement) converter;
+                    CoordinateList pts = new CoordinateList();
+                    for (int i = 0; i < node.size(); i++)
+                    {
+                        TextElement txtElm = (TextElement) node.get(i);
+                        Coordinate[] coords = txtElm.toAnchorCoordinates();
+                        logger.warn("-coords=[" + coords.length + "]");
+                        for (int j = 0; j < coords.length; j++)
+                        {
+                            logger.warn("[" + j + "]-" + coords.toString());
+                        }
+                    }
+                }
             }
             if (geom == null) return null;
             geom.apply(getCoordinatesFilter());

--
Gitblit v0.0.0-SNAPSHOT