From 2fae905a591201e3d4ee3d463d1d94a504171017 Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Mon, 17 Mar 2008 19:31:27 +0800
Subject: [PATCH] update for EOFM-17

---
 ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/CreateTextStrategy.java |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 59 insertions(+), 0 deletions(-)

diff --git a/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/CreateTextStrategy.java b/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/CreateTextStrategy.java
index fca43bd..413516c 100644
--- a/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/CreateTextStrategy.java
+++ b/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/CreateTextStrategy.java
@@ -1,14 +1,43 @@
 package com.ximple.eofms.jobs;
 
+import java.util.List;
+
 import org.geotools.feature.AttributeTypeFactory;
+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 org.opengis.geometry.Geometry;
 
+import com.vividsolutions.jts.geom.GeometryFactory;
+
+import com.ximple.io.dgn7.Element;
+import com.ximple.io.dgn7.FrammeAttributeData;
+import com.ximple.io.dgn7.TextElement;
+import com.ximple.io.dgn7.UserAttributeData;
+
 public class CreateTextStrategy implements CreateFeatureTypeStrategy
 {
+    GeometryFactory geometryFactory = new GeometryFactory();
     FeatureTypeBuilder typeBuilder = null;
+
+    protected FrammeAttributeData getFeatureLinkage(Element element)
+    {
+        if (!element.hasUserAttributeData())
+            return null;
+
+        List<UserAttributeData> usrDatas = element.getUserAttributeData();
+        for (UserAttributeData anUsrData : usrDatas)
+        {
+            if (anUsrData instanceof FrammeAttributeData)
+            {
+                FrammeAttributeData featureLinkage = (FrammeAttributeData) anUsrData;
+                return featureLinkage;
+            }
+        }
+        return null;
+    }
 
     public FeatureType createFeatureElement(String featureName) throws SchemaException
     {
@@ -29,7 +58,37 @@
             typeBuilder.addType(AttributeTypeFactory.newAttributeType("HEIGHT", Double.class));
             typeBuilder.addType(AttributeTypeFactory.newAttributeType("WIDTH", Double.class));
             typeBuilder.addType(AttributeTypeFactory.newAttributeType("ANGLE", Double.class));
+            typeBuilder.addType(AttributeTypeFactory.newAttributeType("CONTEXT", String.class));
         }
         return typeBuilder.getFeatureType();
     }
+
+    public Feature createFeature(FeatureType featureType, Element element) throws IllegalAttributeException
+    {
+        FrammeAttributeData fLinkage = getFeatureLinkage(element);
+        if (fLinkage == null) return null;
+        if (element instanceof TextElement)
+        {
+            TextElement txtElement = (TextElement) element;
+            Feature feature = featureType.create(new Object[]{
+                    geometryFactory.createPoint(txtElement.getUserOrigin()),
+                    (int) fLinkage.getFsc(),
+                    (long) fLinkage.getUfid(),
+                    (int) fLinkage.getComponentID(),
+                    0,
+                    txtElement.getLevelIndex(),
+                    txtElement.getColorIndex(),
+                    txtElement.getWeight(),
+                    txtElement.getLineStyle(),
+                    txtElement.getFontIndex(),
+                    txtElement.getJustification(),
+                    txtElement.getTextHeight(),
+                    txtElement.getTextWidth(),
+                    txtElement.getRotationAngle(),
+                    txtElement.getText()
+            });
+            return feature;
+        }
+        return null;
+    }
 }

--
Gitblit v0.0.0-SNAPSHOT