From a00fef36a11903710f92f3ba8f902295212b5be7 Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Fri, 05 Sep 2008 18:30:35 +0800
Subject: [PATCH] update for EOFM-162

---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatcher.java                                  |    4 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java                                |   28 +
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java           |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java       |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java     |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java                         |   40 +-
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java                         |  142 +++++---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java                        |   12 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java     |    3 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java         |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java                                 |   90 +++--
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java                             |   39 ++
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java                        |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateMultiSymbolStrategy.java                          |   20 +
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java   |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateFeatureTypeStrategy.java                          |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java   |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java                           |    4 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java                               |   48 +-
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java                  |    4 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java   |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java     |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java                           |  144 +++++---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java                               |  245 ++++++++-------
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java  |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java                          |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java       |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java                       |    4 
 29 files changed, 500 insertions(+), 355 deletions(-)

diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java
index c68f4f3..1b80073 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java
@@ -64,7 +64,7 @@
         return typeBuilders.get(featureName).getFeatureType();
     }
 
-    public Feature createFeature(FeatureType featureType, Element element) throws IllegalAttributeException
+    public Feature createFeature(FeatureType featureType, Element element, boolean useTransform) throws IllegalAttributeException
     {
         DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
         FrammeAttributeData fLinkage = getFeatureLinkage(element);
@@ -73,8 +73,14 @@
         if (element instanceof ArcElement)
         {
             ArcElement lineStringElement = (ArcElement) element;
-            convertDecorator.setConverter(lineStringElement);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(lineStringElement);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else {
+                gobj = lineStringElement.toGeometry(geometryFactory);
+            }
             if (gobj != null)
             feature = featureType.create(new Object[]{
                     gobj,
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java
index a89e279..bb9f832 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java
@@ -68,7 +68,7 @@
         return typeBuilders.get(featureName).getFeatureType();
     }
 
-    public Feature createFeature(FeatureType featureType, Element element) throws IllegalAttributeException
+    public Feature createFeature(FeatureType featureType, Element element, boolean useTransform) throws IllegalAttributeException
     {
         DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
         FrammeAttributeData fLinkage = getFeatureLinkage(element);
@@ -77,88 +77,114 @@
         if (element instanceof LineStringElement)
         {
             LineStringElement lineStringElement = (LineStringElement) element;
-            convertDecorator.setConverter(lineStringElement);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(lineStringElement);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else
+            {
+                gobj = lineStringElement.toGeometry(geometryFactory);
+            }
             if (gobj instanceof LineString)
             {
-                gobj = geometryFactory.createMultiLineString(new LineString[] {(LineString) gobj});
+                gobj = geometryFactory.createMultiLineString(new LineString[]{(LineString) gobj});
             }
             if (gobj != null)
-            feature = featureType.create(new Object[]{
-                    gobj,
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    fLinkage.getOccID(),
-                    (short) lineStringElement.getLevelIndex(),
-                    colorTable.getColorCode(lineStringElement.getColorIndex()),
-                    (short) lineStringElement.getWeight(),
-                    (short) lineStringElement.getLineStyle()
-            });
+                feature = featureType.create(new Object[]{
+                        gobj,
+                        fLinkage.getFsc(),
+                        (long) fLinkage.getUfid(),
+                        (short) fLinkage.getComponentID(),
+                        fLinkage.getOccID(),
+                        (short) lineStringElement.getLevelIndex(),
+                        colorTable.getColorCode(lineStringElement.getColorIndex()),
+                        (short) lineStringElement.getWeight(),
+                        (short) lineStringElement.getLineStyle()
+                });
         } else if (element instanceof ComplexChainElement)
         {
             ComplexChainElement complexChain = (ComplexChainElement) element;
-            convertDecorator.setConverter(complexChain);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(complexChain);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else
+                gobj = complexChain.toGeometry(geometryFactory);
             if (gobj instanceof LineString)
             {
-                gobj = geometryFactory.createMultiLineString(new LineString[] {(LineString) gobj});
+                gobj = geometryFactory.createMultiLineString(new LineString[]{(LineString) gobj});
             }
             if (gobj != null)
-            feature = featureType.create(new Object[]{
-                    gobj,
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    fLinkage.getOccID(),
-                    (short) complexChain.getLevelIndex(),
-                    colorTable.getColorCode(complexChain.getColorIndex()),
-                    (short) complexChain.getWeight(),
-                    (short) complexChain.getLineStyle()
-            });
+                feature = featureType.create(new Object[]{
+                        gobj,
+                        fLinkage.getFsc(),
+                        (long) fLinkage.getUfid(),
+                        (short) fLinkage.getComponentID(),
+                        fLinkage.getOccID(),
+                        (short) complexChain.getLevelIndex(),
+                        colorTable.getColorCode(complexChain.getColorIndex()),
+                        (short) complexChain.getWeight(),
+                        (short) complexChain.getLineStyle()
+                });
         } else if (element instanceof LineElement)
         {
             LineElement lineElement = (LineElement) element;
-            convertDecorator.setConverter(lineElement);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(lineElement);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else
+            {
+                gobj = lineElement.toGeometry(geometryFactory);
+            }
             if (gobj instanceof LineString)
             {
-                gobj = geometryFactory.createMultiLineString(new LineString[] {(LineString) gobj});
+                gobj = geometryFactory.createMultiLineString(new LineString[]{(LineString) gobj});
             }
             if (gobj != null)
-            feature = featureType.create(new Object[]{
-                    gobj,
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    fLinkage.getOccID(),
-                    (short) lineElement.getLevelIndex(),
-                    colorTable.getColorCode(lineElement.getColorIndex()),
-                    (short) lineElement.getWeight(),
-                    (short) lineElement.getLineStyle()
-            });
+                feature = featureType.create(new Object[]{
+                        gobj,
+                        fLinkage.getFsc(),
+                        (long) fLinkage.getUfid(),
+                        (short) fLinkage.getComponentID(),
+                        fLinkage.getOccID(),
+                        (short) lineElement.getLevelIndex(),
+                        colorTable.getColorCode(lineElement.getColorIndex()),
+                        (short) lineElement.getWeight(),
+                        (short) lineElement.getLineStyle()
+                });
             return feature;
         } else if (element instanceof ArcElement)
         {
-            ArcElement lineStringElement = (ArcElement) element;
-            convertDecorator.setConverter(lineStringElement);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            ArcElement arcElement = (ArcElement) element;
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(arcElement);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else
+            {
+                gobj = arcElement.toGeometry(geometryFactory);
+            }
             if (gobj instanceof LineString)
             {
-                gobj = geometryFactory.createMultiLineString(new LineString[] {(LineString) gobj});
+                gobj = geometryFactory.createMultiLineString(new LineString[]{(LineString) gobj});
             }
             if (gobj != null)
-            feature = featureType.create(new Object[]{
-                    gobj,
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    fLinkage.getOccID(),
-                    (short) lineStringElement.getLevelIndex(),
-                    colorTable.getColorCode(lineStringElement.getColorIndex()),
-                    (short) lineStringElement.getWeight(),
-                    (short) lineStringElement.getLineStyle()
-            });
+                feature = featureType.create(new Object[]{
+                        gobj,
+                        fLinkage.getFsc(),
+                        (long) fLinkage.getUfid(),
+                        (short) fLinkage.getComponentID(),
+                        fLinkage.getOccID(),
+                        (short) arcElement.getLevelIndex(),
+                        colorTable.getColorCode(arcElement.getColorIndex()),
+                        (short) arcElement.getWeight(),
+                        (short) arcElement.getLineStyle()
+                });
         }
 
         return feature;
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java
index 3314aa9..d7f07b6 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java
@@ -2,7 +2,6 @@
 
 import java.util.List;
 import java.util.TreeMap;
-
 import javax.swing.event.EventListenerList;
 
 import org.apache.commons.logging.Log;
@@ -13,8 +12,8 @@
 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.ximple.eofms.util.DefaultColorTable;
 import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -64,7 +63,7 @@
         return typeBuilders.get(featureName).getFeatureType();
     }
 
-    public Feature createFeature(FeatureType featureType, Element element) throws IllegalAttributeException
+    public Feature createFeature(FeatureType featureType, Element element, boolean useTransform) throws IllegalAttributeException
     {
         DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
         FrammeAttributeData fLinkage = getFeatureLinkage(element);
@@ -72,21 +71,28 @@
         if (fLinkage == null) return null;
         if (element instanceof EllipseElement)
         {
-            EllipseElement shapeElement = (EllipseElement) element;
-            convertDecorator.setConverter(shapeElement);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            EllipseElement ellipseElement = (EllipseElement) element;
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(ellipseElement);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else
+            {
+                gobj = ellipseElement.toGeometry(geometryFactory);
+            }
             if (gobj != null)
-            feature = featureType.create(new Object[]{
-                    gobj,
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    fLinkage.getOccID(),
-                    (short) shapeElement.getLevelIndex(),
-                    colorTable.getColorCode(shapeElement.getColorIndex()),
-                    (short) shapeElement.getWeight(),
-                    (short) shapeElement.getLineStyle()
-            });
+                feature = featureType.create(new Object[]{
+                        gobj,
+                        fLinkage.getFsc(),
+                        (long) fLinkage.getUfid(),
+                        (short) fLinkage.getComponentID(),
+                        fLinkage.getOccID(),
+                        (short) ellipseElement.getLevelIndex(),
+                        colorTable.getColorCode(ellipseElement.getColorIndex()),
+                        (short) ellipseElement.getWeight(),
+                        (short) ellipseElement.getLineStyle()
+                });
         }
         return feature;
     }
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateFeatureTypeStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateFeatureTypeStrategy.java
index 83d0074..6372609 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateFeatureTypeStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateFeatureTypeStrategy.java
@@ -10,7 +10,7 @@
 public interface CreateFeatureTypeStrategy
 {
     public FeatureType createFeatureElement(String featureName) throws SchemaException;
-    public Feature createFeature(FeatureType featureType, Element element) throws IllegalAttributeException;
+    public Feature createFeature(FeatureType featureType, Element element, boolean useTransform) throws IllegalAttributeException;
 
     public void addCreateFeatureTypeEventListener(CreateFeatureTypeEventListener listener);
     public void removeCreateFeatureTypeEventListener(CreateFeatureTypeEventListener listener);
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java
index 1126b03..b7ddf6f 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java
@@ -2,7 +2,6 @@
 
 import java.util.List;
 import java.util.TreeMap;
-
 import javax.swing.event.EventListenerList;
 
 import org.apache.commons.logging.Log;
@@ -13,11 +12,10 @@
 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.MultiLineString;
-import com.vividsolutions.jts.geom.CoordinateArrays;
 import com.vividsolutions.jts.geom.CoordinateList;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.MultiLineString;
 
 import com.ximple.eofms.util.DefaultColorTable;
 import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -71,7 +69,7 @@
         return typeBuilders.get(featureName).getFeatureType();
     }
 
-    public Feature createFeature(FeatureType featureType, Element element) throws IllegalAttributeException
+    public Feature createFeature(FeatureType featureType, Element element, boolean useTransform) throws IllegalAttributeException
     {
         DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
         FrammeAttributeData fLinkage = getFeatureLinkage(element);
@@ -80,25 +78,39 @@
         if (element instanceof LineStringElement)
         {
             LineStringElement lineStringElement = (LineStringElement) element;
-            convertDecorator.setConverter(lineStringElement);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(lineStringElement);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else
+            {
+                gobj = lineStringElement.toGeometry(geometryFactory);
+            }
             if (gobj != null)
-            feature = featureType.create(new Object[]{
-                    convertDecorator.toGeometry(geometryFactory),
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    fLinkage.getOccID(),
-                    (short) lineStringElement.getLevelIndex(),
-                    colorTable.getColorCode(lineStringElement.getColorIndex()),
-                    (short) lineStringElement.getWeight(),
-                    (short) lineStringElement.getLineStyle()
-            });
+                feature = featureType.create(new Object[]{
+                        convertDecorator.toGeometry(geometryFactory),
+                        fLinkage.getFsc(),
+                        (long) fLinkage.getUfid(),
+                        (short) fLinkage.getComponentID(),
+                        fLinkage.getOccID(),
+                        (short) lineStringElement.getLevelIndex(),
+                        colorTable.getColorCode(lineStringElement.getColorIndex()),
+                        (short) lineStringElement.getWeight(),
+                        (short) lineStringElement.getLineStyle()
+                });
         } else if (element instanceof ComplexChainElement)
         {
             ComplexChainElement complexChain = (ComplexChainElement) element;
-            convertDecorator.setConverter(complexChain);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(complexChain);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else
+            {
+                gobj = complexChain.toGeometry(geometryFactory);
+            }
             if ((gobj != null) && (gobj instanceof MultiLineString))
             {
                 MultiLineString mline = (MultiLineString) gobj;
@@ -111,52 +123,66 @@
                 gobj = geometryFactory.createLineString(coordinateList.toCoordinateArray());
             }
             if (gobj != null)
-            feature = featureType.create(new Object[]{
-                    gobj,
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    fLinkage.getOccID(),
-                    (short) complexChain.getLevelIndex(),
-                    colorTable.getColorCode(complexChain.getColorIndex()),
-                    (short) complexChain.getWeight(),
-                    (short) complexChain.getLineStyle()
-            });
+                feature = featureType.create(new Object[]{
+                        gobj,
+                        fLinkage.getFsc(),
+                        (long) fLinkage.getUfid(),
+                        (short) fLinkage.getComponentID(),
+                        fLinkage.getOccID(),
+                        (short) complexChain.getLevelIndex(),
+                        colorTable.getColorCode(complexChain.getColorIndex()),
+                        (short) complexChain.getWeight(),
+                        (short) complexChain.getLineStyle()
+                });
         } else if (element instanceof LineElement)
         {
             LineElement lineElement = (LineElement) element;
-            convertDecorator.setConverter(lineElement);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(lineElement);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else
+            {
+                gobj = lineElement.toGeometry(geometryFactory);
+            }
             if (gobj != null)
-            feature = featureType.create(new Object[]{
-                    gobj,
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    fLinkage.getOccID(),
-                    (short) lineElement.getLevelIndex(),
-                    colorTable.getColorCode(lineElement.getColorIndex()),
-                    (short) lineElement.getWeight(),
-                    (short) lineElement.getLineStyle()
-            });
+                feature = featureType.create(new Object[]{
+                        gobj,
+                        fLinkage.getFsc(),
+                        (long) fLinkage.getUfid(),
+                        (short) fLinkage.getComponentID(),
+                        fLinkage.getOccID(),
+                        (short) lineElement.getLevelIndex(),
+                        colorTable.getColorCode(lineElement.getColorIndex()),
+                        (short) lineElement.getWeight(),
+                        (short) lineElement.getLineStyle()
+                });
             return feature;
         } else if (element instanceof ArcElement)
         {
-            ArcElement lineStringElement = (ArcElement) element;
-            convertDecorator.setConverter(lineStringElement);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            ArcElement arcElement = (ArcElement) element;
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(arcElement);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else
+            {
+                gobj = arcElement.toGeometry(geometryFactory);
+            }
             if (gobj != null)
-            feature = featureType.create(new Object[]{
-                    gobj,
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    fLinkage.getOccID(),
-                    (short) lineStringElement.getLevelIndex(),
-                    colorTable.getColorCode(lineStringElement.getColorIndex()),
-                    (short) lineStringElement.getWeight(),
-                    (short) lineStringElement.getLineStyle()
-            });
+                feature = featureType.create(new Object[]{
+                        gobj,
+                        fLinkage.getFsc(),
+                        (long) fLinkage.getUfid(),
+                        (short) fLinkage.getComponentID(),
+                        fLinkage.getOccID(),
+                        (short) arcElement.getLevelIndex(),
+                        colorTable.getColorCode(arcElement.getColorIndex()),
+                        (short) arcElement.getWeight(),
+                        (short) arcElement.getLineStyle()
+                });
         }
 
         return feature;
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java
index 7440df3..924697d 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java
@@ -73,7 +73,7 @@
         return typeBuilders.get(featureName).getFeatureType();
     }
 
-    public Feature createFeature(FeatureType featureType, Element element) throws IllegalAttributeException
+    public Feature createFeature(FeatureType featureType, Element element, boolean useTransform) throws IllegalAttributeException
     {
         DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
         FrammeAttributeData fLinkage = getFeatureLinkage(element);
@@ -82,8 +82,14 @@
         if (element instanceof LineStringElement)
         {
             LineStringElement lineStringElement = (LineStringElement) element;
+            Geometry gobj;
+            if (useTransform)
+            {
             convertDecorator.setConverter(lineStringElement);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            gobj = convertDecorator.toGeometry(geometryFactory);
+            } else {
+                gobj = lineStringElement.toGeometry(geometryFactory);
+            }
             if (gobj != null)
             feature = featureType.create(new Object[]{
                     gobj,
@@ -104,8 +110,14 @@
             ptEnd.x = ptOrigin.x;
             ptEnd.y = ptOrigin.y + txtElement.getTextHeight();
             Coordinate[] vect = new Coordinate[2];
-            vect[0] = TWDDatumConverter.fromTM2ToTWD97(ptOrigin);
-            vect[1] = TWDDatumConverter.fromTM2ToTWD97(ptEnd);
+            if (useTransform)
+            {
+                vect[0] = TWDDatumConverter.fromTM2ToTWD97(ptOrigin);
+                vect[1] = TWDDatumConverter.fromTM2ToTWD97(ptEnd);
+            } else {
+                vect[0] = new Coordinate(ptOrigin);
+                vect[1] = new Coordinate(ptEnd);
+            }
 
             LineString line = geometryFactory.createLineString(vect);
             // convertDecorator.setConverter(txtElement);
@@ -127,8 +139,14 @@
         } else if (element instanceof ComplexChainElement)
         {
             ComplexChainElement complexChain = (ComplexChainElement) element;
+            Geometry gobj;
+            if (useTransform)
+            {
             convertDecorator.setConverter(complexChain);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            gobj = convertDecorator.toGeometry(geometryFactory);
+            } else {
+                gobj = complexChain.toGeometry(geometryFactory);
+            }
             if ((gobj != null) && (gobj instanceof MultiLineString))
             {
                 MultiLineString mline = (MultiLineString) gobj;
@@ -158,9 +176,16 @@
         } else if (element instanceof LineElement)
         {
             LineElement lineElement = (LineElement) element;
-            convertDecorator.setConverter(lineElement);
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(lineElement);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else {
+                gobj = lineElement.toGeometry(geometryFactory);
+            }
             feature = featureType.create(new Object[]{
-                    convertDecorator.toGeometry(geometryFactory),
+                    gobj,
                     fLinkage.getFsc(),
                     (long) fLinkage.getUfid(),
                     (short) fLinkage.getComponentID(),
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 e725739..8340448 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
@@ -71,7 +71,7 @@
         return typeBuilders.get(featureName).getFeatureType();
     }
 
-    public Feature createFeature(FeatureType featureType, Element element) throws IllegalAttributeException
+    public Feature createFeature(FeatureType featureType, Element element, boolean useTransform) throws IllegalAttributeException
     {
         DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
         FrammeAttributeData fLinkage = getFeatureLinkage(element);
@@ -95,8 +95,14 @@
             sb.append("-");
             sb.append(txtElement.getFontIndex());
 
+            Geometry gobj;
+            if (useTransform)
+            {
             convertDecorator.setConverter(txtElement);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            gobj = convertDecorator.toGeometry(geometryFactory);
+            } else {
+                gobj = txtElement.toGeometry(geometryFactory);
+            }
             if (gobj != null)
                 feature = featureType.create(new Object[]{
                         gobj,
@@ -135,8 +141,14 @@
             sb.append("-");
             sb.append(nodeElement.getFontIndex());
 
-            convertDecorator.setConverter(nodeElement);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(nodeElement);
+            gobj = convertDecorator.toGeometry(geometryFactory);
+            } else {
+                gobj = nodeElement.toGeometry(geometryFactory);
+            }
             if (gobj != null)
                 feature = featureType.create(new Object[]{
                         gobj,
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java
index b7f1e84..16de1e8 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java
@@ -2,7 +2,6 @@
 
 import java.util.List;
 import java.util.TreeMap;
-
 import javax.swing.event.EventListenerList;
 
 import org.apache.commons.logging.Log;
@@ -13,8 +12,8 @@
 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.ximple.eofms.util.DefaultColorTable;
 import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -66,7 +65,7 @@
         return typeBuilders.get(featureName).getFeatureType();
     }
 
-    public Feature createFeature(FeatureType featureType, Element element) throws IllegalAttributeException
+    public Feature createFeature(FeatureType featureType, Element element, boolean useTransform) throws IllegalAttributeException
     {
         DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
         FrammeAttributeData fLinkage = getFeatureLinkage(element);
@@ -75,8 +74,16 @@
         if (element instanceof ShapeElement)
         {
             ShapeElement shapeElement = (ShapeElement) element;
-            convertDecorator.setConverter(shapeElement);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(shapeElement);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else
+            {
+                gobj = shapeElement.toGeometry(geometryFactory);
+            }
+
             if (gobj != null)
                 feature = featureType.create(new Object[]{
                         gobj,
@@ -92,8 +99,15 @@
         } else if (element instanceof ComplexShapeElement)
         {
             ComplexShapeElement complexShape = (ComplexShapeElement) element;
-            convertDecorator.setConverter(complexShape);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(complexShape);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else
+            {
+                gobj = complexShape.toGeometry(geometryFactory);
+            }
             if (gobj != null)
                 feature = featureType.create(new Object[]{
                         gobj,
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java
index 9852472..591a390 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java
@@ -4,7 +4,6 @@
 import java.math.RoundingMode;
 import java.util.List;
 import java.util.TreeMap;
-
 import javax.swing.event.EventListenerList;
 
 import org.apache.commons.logging.Log;
@@ -15,8 +14,8 @@
 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.ximple.eofms.util.DefaultColorTable;
 import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -67,7 +66,7 @@
         return typeBuilders.get(featureName).getFeatureType();
     }
 
-    public Feature createFeature(FeatureType featureType, Element element) throws IllegalAttributeException
+    public Feature createFeature(FeatureType featureType, Element element, boolean useTransform) throws IllegalAttributeException
     {
         DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
         FrammeAttributeData fLinkage = getFeatureLinkage(element);
@@ -91,25 +90,32 @@
             sb.append("-");
             sb.append(txtElement.getFontIndex());
 
-            convertDecorator.setConverter(txtElement);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(txtElement);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else
+            {
+                gobj = txtElement.toGeometry(geometryFactory);
+            }
             if (gobj != null)
-            feature = featureType.create(new Object[]{
-                    gobj,
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    fLinkage.getOccID(),
-                    (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(),
+                        fLinkage.getOccID(),
+                        (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
         {
             logger.info("CreateSymbolStrategy cannot conver " + element.toString() + "to Feature");
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java
index 7667761..05e5a2f 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java
@@ -14,8 +14,8 @@
 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.ximple.eofms.util.DefaultColorTable;
 import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -67,7 +67,7 @@
         return typeBuilders.get(featureName).getFeatureType();
     }
 
-    public Feature createFeature(FeatureType featureType, Element element) throws IllegalAttributeException
+    public Feature createFeature(FeatureType featureType, Element element, boolean useTransform) throws IllegalAttributeException
     {
         DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
         FrammeAttributeData fLinkage = getFeatureLinkage(element);
@@ -80,25 +80,32 @@
             angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
             String content = txtElement.getText();
             content = content.replace('\u0000', ' ');
-            convertDecorator.setConverter(txtElement);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(txtElement);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else
+            {
+                gobj = txtElement.toGeometry(geometryFactory);
+            }
             if (gobj != null)
-            feature = featureType.create(new Object[]{
-                    gobj,
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    fLinkage.getOccID(),
-                    (short) txtElement.getLevelIndex(),
-                    colorTable.getColorCode(txtElement.getColorIndex()),
-                    (short) txtElement.getWeight(),
-                    (short) txtElement.getLineStyle(),
-                    (short) txtElement.getJustification(),
-                    (float) txtElement.getTextHeight(),
-                    (float) txtElement.getTextWidth(),
-                    (float) angle,
-                    content
-            });
+                feature = featureType.create(new Object[]{
+                        gobj,
+                        fLinkage.getFsc(),
+                        (long) fLinkage.getUfid(),
+                        (short) fLinkage.getComponentID(),
+                        fLinkage.getOccID(),
+                        (short) txtElement.getLevelIndex(),
+                        colorTable.getColorCode(txtElement.getColorIndex()),
+                        (short) txtElement.getWeight(),
+                        (short) txtElement.getLineStyle(),
+                        (short) txtElement.getJustification(),
+                        (float) txtElement.getTextHeight(),
+                        (float) txtElement.getTextWidth(),
+                        (float) angle,
+                        content
+                });
         } else if (element instanceof TextNodeElement)
         {
             TextNodeElement nodeElement = (TextNodeElement) element;
@@ -114,25 +121,32 @@
 
             double angle = nodeElement.getRotationAngle();
             angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
-            convertDecorator.setConverter(nodeElement);
-            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
+            Geometry gobj;
+            if (useTransform)
+            {
+                convertDecorator.setConverter(nodeElement);
+                gobj = convertDecorator.toGeometry(geometryFactory);
+            } else
+            {
+                gobj = nodeElement.toGeometry(geometryFactory);
+            }
             if (gobj != null)
-            feature = featureType.create(new Object[]{
-                    gobj,
-                    fLinkage.getFsc(),
-                    (long) fLinkage.getUfid(),
-                    (short) fLinkage.getComponentID(),
-                    fLinkage.getOccID(),
-                    (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(),
+                        fLinkage.getOccID(),
+                        (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()
+                });
         }
         return feature;
     }
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java
index 2eb54be..9e750da 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java
@@ -8,7 +8,7 @@
 {
     public boolean isDispatchable(Element element);
 
-    public Feature execute(Element element);
+    public Feature execute(Element element, boolean useTransform);
 
     void setUseLongName(boolean useLongName);
 
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatcher.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatcher.java
index a64d23e..6180e4a 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatcher.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatcher.java
@@ -50,13 +50,13 @@
         }
     }
 
-    public Feature execute(Element element)
+    public Feature execute(Element element, boolean useTransform)
     {
         for (ElementDispatchableFilter rule : rules)
         {
             if (rule.isDispatchable(element))
             {
-                return rule.execute(element);
+                return rule.execute(element, useTransform);
             }
         }
         return null;
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java
index 4810b12..ddbf8c3 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java
@@ -90,13 +90,13 @@
                 (compareType(element) == 0);
     }
 
-    public Feature execute(Element element)
+    public Feature execute(Element element, boolean useTransform)
     {
         try
         {
             String ftName = getFeatureTypeName(element);
             FeatureType ftype = createStrategy.createFeatureElement(ftName);
-            return createStrategy.createFeature(ftype, element);
+            return createStrategy.createFeature(ftype, element, useTransform);
         } catch (SchemaException e)
         {
             logger.error(e.getMessage(), e);
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java
index ab302e4..b590154 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java
@@ -102,13 +102,13 @@
                 (lid == element.getLevelIndex()) && (compareLevel(element) == 0);
     }
 
-    public Feature execute(Element element)
+    public Feature execute(Element element, boolean useTransform)
     {
         try
         {
             String ftName = getFeatureTypeName(element);
             FeatureType ftype = createStrategy.createFeatureElement(ftName);
-            return createStrategy.createFeature(ftype, element);
+            return createStrategy.createFeature(ftype, element, useTransform);
         } catch (SchemaException e)
         {
             logger.error(e.getMessage(), e);
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java
index b683361..bb4b318 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java
@@ -64,13 +64,13 @@
                 (compareType(element) == 0);
     }
 
-    public Feature execute(Element element)
+    public Feature execute(Element element, boolean useTransform)
     {
         try
         {
             String ftName = getFeatureTypeName(element);
             FeatureType ftype = createStrategy.createFeatureElement(ftName);
-            return createStrategy.createFeature(ftype, element);
+            return createStrategy.createFeature(ftype, element, useTransform);
         } catch (SchemaException e)
         {
             logger.error(e.getMessage(), e);
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java
index ba6584d..10f3c5e 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java
@@ -122,7 +122,7 @@
         }
 
         // �P�_�O�_�ũM����
-        Feature feature = elementDispatcher.execute(element);
+        Feature feature = elementDispatcher.execute(element, true);
         if (feature == null)
         {
             FrammeAttributeData linkage =
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java
index d67239c..26d3378 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/DummyFeatureConvertMySQlJobContext.java
@@ -29,7 +29,6 @@
 
 import com.vividsolutions.jts.geom.GeometryFactory;
 
-import com.ximple.eofms.jobs.context.orasdo.AbstractDgnToOraSDOJobContext;
 import com.ximple.eofms.filter.ElementDispatcher;
 import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter;
 import com.ximple.eofms.filter.ElementDispatchableFilter;
@@ -121,7 +120,7 @@
         }
 
         // �P�_�O�_�ũM����
-        Feature feature = elementDispatcher.execute(element);
+        Feature feature = elementDispatcher.execute(element, true);
         if (feature == null)
         {
             FrammeAttributeData linkage =
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java
index 3f5a0f6..6be6908 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/FeatureDgnConvertMySQLJobContext.java
@@ -113,7 +113,7 @@
         }
 
         // �P�_�O�_�ũM����
-        Feature feature = elementDispatcher.execute(element);
+        Feature feature = elementDispatcher.execute(element, true);
         if (feature == null)
         {
             FrammeAttributeData linkage =
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java
index 890fced..7ea7bb5 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java
@@ -128,7 +128,7 @@
     {
         assert elementDispatcher != null;
         // �P�_�O�_�ũM����
-        Feature feature = elementDispatcher.execute(element);
+        Feature feature = elementDispatcher.execute(element, true);
         if (feature == null)
         {
             boolean isEmptySize = false;
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java
index b892399..dcf9d50 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/DummyFeatureConvertOraSDOJobContext.java
@@ -120,7 +120,7 @@
         }
 
         // �P�_�O�_�ũM����
-        Feature feature = elementDispatcher.execute(element);
+        Feature feature = elementDispatcher.execute(element, true);
         if (feature == null)
         {
             FrammeAttributeData linkage =
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java
index 19c149a..4ebf693 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/FeatureDgnConvertOraSDOJobContext.java
@@ -113,7 +113,7 @@
         }
 
         // �P�_�O�_�ũM����
-        Feature feature = elementDispatcher.execute(element);
+        Feature feature = elementDispatcher.execute(element, true);
         if (feature == null)
         {
             FrammeAttributeData linkage =
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java
index f51ec60..847b172 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java
@@ -128,7 +128,7 @@
     {
         assert elementDispatcher != null;
         // �P�_�O�_�ũM����
-        Feature feature = elementDispatcher.execute(element);
+        Feature feature = elementDispatcher.execute(element, true);
         if (feature == null)
         {
             boolean isEmptySize = false;
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java
index a429deb..5071bd1 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java
@@ -119,7 +119,7 @@
         }
 
         // �P�_�O�_�ũM����
-        Feature feature = elementDispatcher.execute(element);
+        Feature feature = elementDispatcher.execute(element, true);
         if (feature == null)
         {
             FrammeAttributeData linkage =
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java
index 4e93c22..bcd4ac6 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java
@@ -113,7 +113,7 @@
         }
 
         // �P�_�O�_�ũM����
-        Feature feature = elementDispatcher.execute(element);
+        Feature feature = elementDispatcher.execute(element, true);
         if (feature == null)
         {
             FrammeAttributeData linkage =
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java
index 0362191..a7388e1 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java
@@ -131,7 +131,7 @@
     {
         assert elementDispatcher != null;
         // �P�_�O�_�ũM����
-        Feature feature = elementDispatcher.execute(element);
+        Feature feature = elementDispatcher.execute(element, true);
         if (feature == null)
         {
             boolean isEmptySize = false;
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java
index fda158f..79a3fd7 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/DummyFeatureConvertShpJobContext.java
@@ -122,7 +122,7 @@
         }
 
         // �P�_�O�_�ũM����
-        Feature feature = elementDispatcher.execute(element);
+        Feature feature = elementDispatcher.execute(element, true);
         if (feature == null)
         {
             FrammeAttributeData linkage =
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java
index 638c328..5bc6067 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/FeatureDgnConvertShpJobContext.java
@@ -118,7 +118,7 @@
         }
 
         // �P�_�O�_�ũM����
-        Feature feature = elementDispatcher.execute(element);
+        Feature feature = elementDispatcher.execute(element, true);
         if (feature == null)
         {
             FrammeAttributeData linkage =
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java
index 697ed62..bee06de 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/shapefile/OracleConvertShapefilesJobContext.java
@@ -135,7 +135,7 @@
     {
         assert elementDispatcher != null;
         // �P�_�O�_�ũM����
-        Feature feature = elementDispatcher.execute(element);
+        Feature feature = elementDispatcher.execute(element, true);
         if (feature == null)
         {
             boolean isEmptySize = false;
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java
index b2a9fa1..7dd10cf 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/FeatureTypeBuilderUtil.java
@@ -13,18 +13,29 @@
 public final class FeatureTypeBuilderUtil
 {
     protected static GeometryFactory _geomFactory = new GeometryFactory();
+    private static boolean notAllowNull = false ;
+
+    public static boolean isNotAllowNull()
+    {
+        return notAllowNull;
+    }
+
+    public static void setNotAllowNull(boolean notAllowNull)
+    {
+        FeatureTypeBuilderUtil.notAllowNull = notAllowNull;
+    }
 
     public static FeatureTypeBuilder createNormalPointFeatureTypeBuilder(String featureName)
     {
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Point.class, true));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12, ""));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("font", Short.class, false, 1, (short) 0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("just", Short.class, false, 1, (short) 0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("height", Float.class, false, 1, (float) 1.0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("width", Float.class, false, 1, (float) 1.0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("angle", Float.class, false, 1, (float) 0.0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("context", String.class, false, 254, ""));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12, ""));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("font", Short.class, notAllowNull, 1, (short) 0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("just", Short.class, notAllowNull, 1, (short) 0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("height", Float.class, notAllowNull, 1, (float) 1.0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("width", Float.class, notAllowNull, 1, (float) 1.0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("angle", Float.class, notAllowNull, 1, (float) 0.0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("context", String.class, notAllowNull, 254, ""));
         return typeBuilder;
     }
 
@@ -32,9 +43,9 @@
     {
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", LineString.class, true));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12, ""));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, false, 1, (short) 0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, false, 1, (short) 0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12, ""));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, notAllowNull, 1, (short) 0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, notAllowNull, 1, (short) 0));
         return typeBuilder;
     }
 
@@ -42,9 +53,9 @@
     {
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", MultiLineString.class, true));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12, ""));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, false, 1, (short) 0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, false, 1, (short) 0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12, ""));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, notAllowNull, 1, (short) 0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, notAllowNull, 1, (short) 0));
         return typeBuilder;
     }
 
@@ -52,9 +63,9 @@
     {
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Polygon.class, true));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12, ""));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, false, 1, (short) 0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, false, 1, (short) 0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12, ""));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, notAllowNull, 1, (short) 0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, notAllowNull, 1, (short) 0));
         return typeBuilder;
     }
 
@@ -64,7 +75,7 @@
         /*
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Geometry.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12));
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, false));
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, false));
         return typeBuilder;
@@ -77,7 +88,7 @@
         /*
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Geometry.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12));
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, false));
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, false));
         return typeBuilder;
@@ -88,14 +99,14 @@
     {
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Polygon.class, true));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("x1", Double.class, false, 1, 0.0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("y1", Double.class, false, 1, 0.0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("x2", Double.class, false, 1, 0.0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("y2", Double.class, false, 1, 0.0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tpclid", String.class, false, 12, ""));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12, ""));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, false, 1, (short) 0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, false, 1, (short) 0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("x1", Double.class, notAllowNull, 1, 0.0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("y1", Double.class, notAllowNull, 1, 0.0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("x2", Double.class, notAllowNull, 1, 0.0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("y2", Double.class, notAllowNull, 1, 0.0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tpclid", String.class, notAllowNull, 12, ""));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12, ""));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, notAllowNull, 1, (short) 0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, notAllowNull, 1, (short) 0));
         return typeBuilder;
     }
 
@@ -104,33 +115,33 @@
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
         typeBuilder = FeatureTypeBuilder.newInstance(featureName);
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Point.class, true));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12, ""));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, false, 1, (short) 0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, false, 1, (short) 0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("just", Short.class, false, 1, (short) 0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("height", Float.class, false, 1, (float) 0.0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("width", Float.class, false, 1, (float) 0.0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("angle", Float.class, false, 1, (float) 0.0));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tpclid", String.class, false, 12, ""));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12, ""));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, notAllowNull, 1, (short) 0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, notAllowNull, 1, (short) 0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("just", Short.class, notAllowNull, 1, (short) 0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("height", Float.class, notAllowNull, 1, (float) 0.0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("width", Float.class, notAllowNull, 1, (float) 0.0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("angle", Float.class, notAllowNull, 1, (float) 0.0));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tpclid", String.class, notAllowNull, 12, ""));
         return typeBuilder;
     }
 
     public static FeatureTypeBuilder createPointFeatureTypeBuilder(String featureName)
     {
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Point.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("oid", Long.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("just", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("height", Float.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("width", Float.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("angle", Float.class, false));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Point.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("oid", Long.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("just", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("height", Float.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("width", Float.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("angle", Float.class, notAllowNull));
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("context", String.class, true, 254));
         return typeBuilder;
     }
@@ -138,65 +149,65 @@
     public static FeatureTypeBuilder createSymbolFeatureTypeBuilder(String featureName)
     {
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Point.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("oid", Long.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("just", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("height", Float.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("width", Float.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("angle", Float.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symbol", String.class, false, 20));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Point.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("oid", Long.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("just", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("height", Float.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("width", Float.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("angle", Float.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symbol", String.class, notAllowNull, 20));
         return typeBuilder;
     }
 
     public static FeatureTypeBuilder createPolygonFeatureTypeBuilder(String featureName)
     {
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Polygon.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, false));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Polygon.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, notAllowNull));
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("oid", Long.class));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, false));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, notAllowNull));
         return typeBuilder;
     }
 
     public static FeatureTypeBuilder createLineFeatureTypeBuilder(String featureName)
     {
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", LineString.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("oid", Long.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, false));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", LineString.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("oid", Long.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, notAllowNull));
         return typeBuilder;
     }
 
     public static FeatureTypeBuilder createMultiLineFeatureTypeBuilder(String featureName)
     {
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", MultiLineString.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("oid", Long.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, false));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", MultiLineString.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("oid", Long.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, notAllowNull));
         return typeBuilder;
     }
 
@@ -205,15 +216,15 @@
         return createPolygonFeatureTypeBuilder(featureName);
         /*
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Geometry.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, false));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Geometry.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, notAllowNull));
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("oid", Long.class));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, false));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, notAllowNull));
         return typeBuilder;
         */
     }
@@ -223,15 +234,15 @@
         return createLineFeatureTypeBuilder(featureName);
         /*
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Geometry.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, false));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", Geometry.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, notAllowNull));
         typeBuilder.addType(AttributeTypeFactory.newAttributeType("oid", Long.class));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, false));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, notAllowNull));
         return typeBuilder;
         */
     }
@@ -239,20 +250,20 @@
     public static FeatureTypeBuilder createMultiSymbolFeatureTypeBuilder(String featureName)
     {
         FeatureTypeBuilder typeBuilder = FeatureTypeBuilder.newInstance(featureName);
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", MultiPoint.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("oid", Long.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, false, 12));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("just", Short.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("height", Float.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("width", Float.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("angle", Float.class, false));
-        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symbol", String.class, false, 20));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("geom", MultiPoint.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("tid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("oid", Long.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("cid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("lid", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("level", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symcolor", String.class, notAllowNull, 12));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symweight", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symstyle", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("just", Short.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("height", Float.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("width", Float.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("angle", Float.class, notAllowNull));
+        typeBuilder.addType(AttributeTypeFactory.newAttributeType("symbol", String.class, notAllowNull, 20));
         return typeBuilder;
     }
 }

--
Gitblit v0.0.0-SNAPSHOT