forked from geodmms/xdgnjobs

?? ?
2008-05-05 cf083f4bab32f6677583dabb3cb46157babea685
update for EOFM-34
4 files modified
1 files added
173 ■■■■■ changed files
.gitattributes 1 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java 20 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java 143 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java 4 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml 5 ●●●●● patch | view | raw | blame | history
.gitattributes
@@ -46,6 +46,7 @@
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractFLinkageDispatchableFilter.java svneol=native#text/plain
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateFeatureTypeStrategy.java svneol=native#text/plain
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java svneol=native#text/plain
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java svneol=native#text/plain
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java svneol=native#text/plain
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java svneol=native#text/plain
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java svneol=native#text/plain
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java
@@ -78,7 +78,7 @@
                    lineStringElement.getLevelIndex(),
                    colorTable.getColor(lineStringElement.getColorIndex()).getRGB(),
                    lineStringElement.getWeight(),
                    lineStringElement.getLineStyle(),
                    lineStringElement.getLineStyle()
            });
            return feature;
        } else if (element instanceof ComplexChainElement)
@@ -94,7 +94,23 @@
                    complexChain.getLevelIndex(),
                    colorTable.getColor(complexChain.getColorIndex()).getRGB(),
                    complexChain.getWeight(),
                    complexChain.getLineStyle(),
                    complexChain.getLineStyle()
            });
            return feature;
        } else if (element instanceof LineElement)
        {
            LineElement lineElement = (LineElement) element;
            convertDecordator.setConverter(lineElement);
            Feature feature = featureType.create(new Object[]{
                    convertDecordator.toGeometry(geometryFactory),
                    (int) fLinkage.getFsc(),
                    (long) fLinkage.getUfid(),
                    (int) fLinkage.getComponentID(),
                    0,
                    lineElement.getLevelIndex(),
                    colorTable.getColor(lineElement.getColorIndex()).getRGB(),
                    lineElement.getWeight(),
                    lineElement.getLineStyle()
            });
            return feature;
        }
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java
New file
@@ -0,0 +1,143 @@
package com.ximple.eofms.filter;
import java.util.List;
import org.geotools.feature.FeatureTypeBuilder;
import org.geotools.feature.FeatureType;
import org.geotools.feature.SchemaException;
import org.geotools.feature.AttributeTypeFactory;
import org.geotools.feature.Feature;
import org.geotools.feature.IllegalAttributeException;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.LineString;
import com.ximple.eofms.jobs.TWD97GeometryConverterDecorator;
import com.ximple.eofms.util.DefaultColorTable;
import com.ximple.eofms.util.TWDDatumConverter;
import com.ximple.io.dgn7.FrammeAttributeData;
import com.ximple.io.dgn7.Element;
import com.ximple.io.dgn7.UserAttributeData;
import com.ximple.io.dgn7.LineStringElement;
import com.ximple.io.dgn7.ComplexChainElement;
import com.ximple.io.dgn7.TextElement;
import com.ximple.io.dgn7.LineElement;
public class CreateLineTextStrategy  implements CreateFeatureTypeStrategy
{
    GeometryFactory geometryFactory = new GeometryFactory();
    FeatureTypeBuilder typeBuilder = null;
    TWD97GeometryConverterDecorator convertDecordator = new TWD97GeometryConverterDecorator();
    public CreateLineTextStrategy()
    {
    }
    protected FrammeAttributeData getFeatureLinkage(Element element)
    {
        if (!element.hasUserAttributeData())
            return null;
        List<UserAttributeData> usrDatas = element.getUserAttributeData();
        for (UserAttributeData anUsrData : usrDatas)
        {
            if (anUsrData instanceof FrammeAttributeData)
            {
                return (FrammeAttributeData) anUsrData;
            }
        }
        return null;
    }
    public FeatureType createFeatureElement(String featureName) throws SchemaException
    {
        if (typeBuilder == null)
        {
            typeBuilder = FeatureTypeBuilder.newInstance(featureName);
            typeBuilder.addType(AttributeTypeFactory.newAttributeType("GEOM", Geometry.class));
            typeBuilder.addType(AttributeTypeFactory.newAttributeType("TID", Integer.class));
            typeBuilder.addType(AttributeTypeFactory.newAttributeType("OID", Long.class));
            typeBuilder.addType(AttributeTypeFactory.newAttributeType("CID", Integer.class));
            typeBuilder.addType(AttributeTypeFactory.newAttributeType("LID", Integer.class));
            typeBuilder.addType(AttributeTypeFactory.newAttributeType("LEVEL", Integer.class));
            typeBuilder.addType(AttributeTypeFactory.newAttributeType("SYMCOLOR", Integer.class));
            typeBuilder.addType(AttributeTypeFactory.newAttributeType("SYMWEIGHT", Integer.class));
            typeBuilder.addType(AttributeTypeFactory.newAttributeType("SYMSTYLE", Integer.class));
        }
        return typeBuilder.getFeatureType();
    }
    public Feature createFeature(FeatureType featureType, Element element) throws IllegalAttributeException
    {
        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
        FrammeAttributeData fLinkage = getFeatureLinkage(element);
        if (fLinkage == null) return null;
        if (element instanceof LineStringElement)
        {
            LineStringElement lineStringElement = (LineStringElement) element;
            convertDecordator.setConverter(lineStringElement);
            Feature feature = featureType.create(new Object[]{
                    convertDecordator.toGeometry(geometryFactory),
                    (int) fLinkage.getFsc(),
                    (long) fLinkage.getUfid(),
                    (int) fLinkage.getComponentID(),
                    0,
                    lineStringElement.getLevelIndex(),
                    colorTable.getColor(lineStringElement.getColorIndex()).getRGB(),
                    lineStringElement.getWeight(),
                    lineStringElement.getLineStyle()
            });
            return feature;
        } else if (element instanceof TextElement)
        {
            TextElement txtElement = (TextElement) element;
            Coordinate ptOrigin = txtElement.getUserOrigin();
            Coordinate ptEnd = new Coordinate();
            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);
            LineString line = geometryFactory.createLineString(vect);
            // convertDecordator.setConverter(txtElement);
            // Geometry geom = convertDecordator.toGeometry(geometryFactory);
            txtElement.getRotationAngle();
            Feature feature = featureType.create(new Object[]{
                    line,
                    (int) fLinkage.getFsc(),
                    (long) fLinkage.getUfid(),
                    (int) fLinkage.getComponentID(),
                    0,
                    txtElement.getLevelIndex(),
                    colorTable.getColor(txtElement.getColorIndex()).getRGB(),
                    txtElement.getWeight(),
                    txtElement.getLineStyle()
            });
            return feature;
        } else if (element instanceof LineElement)
        {
            LineElement lineElement = (LineElement) element;
            convertDecordator.setConverter(lineElement);
            Feature feature = featureType.create(new Object[]{
                    convertDecordator.toGeometry(geometryFactory),
                    (int) fLinkage.getFsc(),
                    (long) fLinkage.getUfid(),
                    (int) fLinkage.getComponentID(),
                    0,
                    lineElement.getLevelIndex(),
                    colorTable.getColor(lineElement.getColorIndex()).getRGB(),
                    lineElement.getWeight(),
                    lineElement.getLineStyle()
            });
            return feature;
        }
        return null;
    }
}
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java
@@ -84,7 +84,7 @@
                    shapeElement.getLevelIndex(),
                    colorTable.getColor(shapeElement.getColorIndex()).getRGB(),
                    shapeElement.getWeight(),
                    shapeElement.getLineStyle(),
                    shapeElement.getLineStyle()
            });
            return feature;
        } else if (element instanceof ComplexShapeElement)
@@ -100,7 +100,7 @@
                    complexShape.getLevelIndex(),
                    colorTable.getColor(complexShape.getColorIndex()).getRGB(),
                    complexShape.getWeight(),
                    complexShape.getLineStyle(),
                    complexShape.getLineStyle()
            });
            return feature;
        }
xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml
@@ -81,6 +81,11 @@
        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
        <set-properties-rule/>
      </pattern>
      <pattern value="LineTextCreateStrategy">
        <object-create-rule classname="com.ximple.eofms.filter.CreateLineTextStrategy"/>
        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
        <set-properties-rule/>
      </pattern>
    </pattern>
  </pattern>
</digester-rules>