From fef782cea66c18da7c3686dac0416c56fa85d3d4 Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Fri, 14 Mar 2008 17:10:01 +0800
Subject: [PATCH] update for EOFM-17

---
 ximple-spatialjob/pom.xml                                                          |    9 ++++
 ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java |   67 +++++++++++++++++++++++++++++++++
 2 files changed, 75 insertions(+), 1 deletions(-)

diff --git a/ximple-spatialjob/pom.xml b/ximple-spatialjob/pom.xml
index d9599af..b902407 100644
--- a/ximple-spatialjob/pom.xml
+++ b/ximple-spatialjob/pom.xml
@@ -175,6 +175,11 @@
       </dependency>
       <dependency>
         <groupId>org.geotools</groupId>
+        <artifactId>gt2-shapefile</artifactId>
+        <version>${gt.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.geotools</groupId>
         <artifactId>gt2-sample-data</artifactId>
         <version>${gt.version}</version>
         <scope>test</scope>
@@ -283,6 +288,10 @@
       <groupId>org.geotools</groupId>
     </dependency>
     <dependency>
+      <artifactId>gt2-shapefile</artifactId>
+      <groupId>org.geotools</groupId>
+    </dependency>
+    <dependency>
       <artifactId>gt2-sample-data</artifactId>
       <groupId>org.geotools</groupId>
       <scope>test</scope>
diff --git a/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java b/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java
index 5dc43b3..93a6f0f 100644
--- a/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java
+++ b/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java
@@ -1,6 +1,9 @@
 package com.ximple.eofms.jobs;
 
+import java.io.File;
+import java.io.IOException;
 import java.math.BigDecimal;
+import java.net.MalformedURLException;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 import java.sql.ResultSet;
@@ -14,8 +17,19 @@
 import org.apache.commons.collections.map.LinkedMap;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.geotools.data.FeatureWriter;
+import org.geotools.data.Transaction;
+import org.geotools.data.shapefile.ShapefileDataStore;
+import org.geotools.feature.AttributeTypeFactory;
 import org.geotools.feature.Feature;
 import org.geotools.feature.FeatureCollection;
+import org.geotools.feature.FeatureCollections;
+import org.geotools.feature.FeatureType;
+import org.geotools.feature.FeatureTypeBuilder;
+import org.geotools.feature.IllegalAttributeException;
+import org.geotools.feature.SchemaException;
+import org.geotools.feature.SimpleFeature;
+import org.opengis.geometry.Geometry;
 import org.quartz.JobDetail;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
@@ -34,6 +48,7 @@
 import com.ximple.io.dgn7.Element;
 import com.ximple.io.dgn7.ElementType;
 import com.ximple.io.dgn7.IElementHandler;
+import com.ximple.io.dgn7.LineElement;
 import com.ximple.util.PrintfFormat;
 
 /**
@@ -271,7 +286,7 @@
                 onBinaryElement(rawDest);
             } catch (Dgn7fileException e)
             {
-                logger.warn("Dgn7Exception", e);
+                logger.warn("Dgn7Exception:" + e.getMessage(), e);
             }
         }
     }
@@ -339,6 +354,56 @@
     private Feature convertElementToFeature(Element dgnElement)
     {
         GeometryFactory geomFactory = new GeometryFactory();
+        FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance("Line");
+
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("GEOM", Geometry.class));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("TID", Integer.class));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("OID", Long.class));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("CID", Integer.class));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("LID", Integer.class));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("LEVEL", Integer.class));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("SYMCOLOR", Integer.class));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("SYMWEIGHT", Integer.class));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("SYMSTYLE", Integer.class));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("FONT", String.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.setNamespace(new URI(""));
+        Feature feature = null;
+        try
+        {
+            FeatureType featureType = typeBuilder.getFeatureType();
+            feature = featureType.create(new Object[]{
+                    ((LineElement) dgnElement).toGeometry(geomFactory)
+            });
+
+            FeatureCollection features = FeatureCollections.newCollection();
+            features.add(feature);
+
+            File sfile = new File("");
+            ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURL());
+            shapefileDataStore.createSchema(featureType);
+            FeatureWriter writer = shapefileDataStore.getFeatureWriter(featureType.getTypeName(), Transaction.AUTO_COMMIT);
+            ((SimpleFeature) writer.next()).setAttributes(feature.getAttributes(null));
+
+        } catch (SchemaException e)
+        {
+            logger.warn(e.getMessage(), e);
+        } catch (IllegalAttributeException e)
+        {
+            logger.warn(e.getMessage(), e);
+        } catch (MalformedURLException e)
+        {
+            logger.warn(e.getMessage(), e);
+        } catch (IOException e)
+        {
+            logger.warn(e.getMessage(), e);
+        }
+
+
         return null;
     }
 

--
Gitblit v0.0.0-SNAPSHOT