From 4693851558c7fefd53a294d4c8a2bf35d51812a6 Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Mon, 19 May 2008 13:53:06 +0800
Subject: [PATCH] update for EOFM-92

---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java |   70 ++++++++++++++++++++++++++++++++++-
 1 files changed, 68 insertions(+), 2 deletions(-)

diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java
index 44caa32..8865474 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java
@@ -42,6 +42,7 @@
     static final Log logger = LogFactory.getLog(IndexDgnConvertJobContext.class);
     static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
     static final GeometryFactory geometryFactory = new GeometryFactory();
+    TWD97GeometryConverterDecorator convertDecorator = new TWD97GeometryConverterDecorator();
     static final String SHPOUTPATH = "shpout";
 
     private String dataOut = null;
@@ -70,6 +71,14 @@
         if (feature == null)
         {
             logger.info("cannot craete feature." + element.toString() + "'" +
+                    ((TextElement) element).getText() + "'");
+            return;
+        }
+
+        feature = createFeature2((TextElement) element);
+        if (feature == null)
+        {
+            logger.info("cannot craete feature2." + element.toString() + "'" +
                     ((TextElement) element).getText() + "'");
             return;
         }
@@ -140,8 +149,7 @@
                 ArrayList<Feature> features = featuresContext.get(featureType);
                 for (Feature feature1 : features)
                 {
-                    Feature feature = feature1;
-                    ((SimpleFeature) writer.next()).setAttributes(feature.getAttributes(null));
+                    ((SimpleFeature) writer.next()).setAttributes(feature1.getAttributes(null));
                 }
                 //writer.close();
                 logger.debug("End Save shapefile:" + sfile.toURI());
@@ -204,6 +212,24 @@
         return typeBuilder.getFeatureType();
     }
 
+    public FeatureType createFeatureElement2(String featureName) throws SchemaException
+    {
+        if (typeBuilder == null)
+        {
+            typeBuilder = FeatureTypeBuilder.newInstance(featureName);
+            typeBuilder.addType(AttributeTypeFactory.newAttributeType("GEOM", Geometry.class));
+            typeBuilder.addType(AttributeTypeFactory.newAttributeType("SYMCOLOR", String.class));
+            typeBuilder.addType(AttributeTypeFactory.newAttributeType("SYMWEIGHT", Integer.class));
+            typeBuilder.addType(AttributeTypeFactory.newAttributeType("SYMSTYLE", Integer.class));
+            typeBuilder.addType(AttributeTypeFactory.newAttributeType("JUST", Integer.class));
+            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("TPCID", String.class));
+        }
+        return typeBuilder.getFeatureType();
+    }
+
     public Feature createFeature(FeatureType featureType, Element element) throws IllegalAttributeException
     {
         DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
@@ -237,6 +263,30 @@
         return null;
     }
     
+    public Feature createFeature2(FeatureType featureType, Element element) throws IllegalAttributeException
+    {
+        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
+        if (element instanceof TextElement)
+        {
+            TextElement txtElement = (TextElement) element;
+            double angle = txtElement.getRotationAngle();
+            convertDecorator.setConverter(txtElement);
+            Feature feature = featureType.create(new Object[]{
+                    convertDecorator.toGeometry(geometryFactory),
+                    colorTable.getColorCode(txtElement.getColorIndex()),
+                    txtElement.getWeight(),
+                    txtElement.getLineStyle(),
+                    txtElement.getJustification(),
+                    txtElement.getTextHeight(),
+                    txtElement.getTextWidth(),
+                    angle,
+                    txtElement.getText()
+            });
+            return feature;
+        }
+        return null;
+    }
+
     private Feature createFeature(TextElement element) throws SchemaException, IllegalAttributeException
     {
         if (featureType == null)
@@ -252,6 +302,22 @@
         return createFeature(featureType, element);
     }
 
+    private Feature createFeature2(TextElement element) throws SchemaException, IllegalAttributeException
+    {
+        if (featureType == null)
+        {
+            String dgnname = getFilename().toLowerCase();
+            int i = dgnname.lastIndexOf(".");
+            if (i != -1)
+            {
+                dgnname = dgnname.substring(0, i);
+            }
+            dgnname = dgnname + "P";
+            featureType = createFeatureElement2(dgnname);
+        }
+        return createFeature2(featureType, element);
+    }
+
     protected FrammeAttributeData getFeatureLinkage(Element element)
     {
         if (!element.hasUserAttributeData())

--
Gitblit v0.0.0-SNAPSHOT