forked from geodmms/xdgnjobs

?? ?
2008-06-13 78792a3cca250c5d4f91f782c1697d4d9d180936
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.java
@@ -14,6 +14,7 @@
import org.geotools.feature.SchemaException;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Geometry;
import com.ximple.eofms.util.DefaultColorTable;
import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -73,8 +74,10 @@
        {
            ArcElement lineStringElement = (ArcElement) element;
            convertDecorator.setConverter(lineStringElement);
            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    convertDecorator.toGeometry(geometryFactory),
                    gobj,
                    fLinkage.getFsc(),
                    (long) fLinkage.getUfid(),
                    (short) fLinkage.getComponentID(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateComplexChainStrategy.java
@@ -1,33 +1,31 @@
package com.ximple.eofms.filter;
import java.util.TreeMap;
import java.util.List;
import java.util.TreeMap;
import javax.swing.event.EventListenerList;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.geotools.feature.FeatureTypeBuilder;
import org.geotools.feature.FeatureType;
import org.geotools.feature.SchemaException;
import org.geotools.feature.Feature;
import org.geotools.feature.FeatureType;
import org.geotools.feature.FeatureTypeBuilder;
import org.geotools.feature.IllegalAttributeException;
import org.geotools.feature.SchemaException;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.MultiLineString;
import com.vividsolutions.jts.geom.CoordinateList;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.LineString;
import com.ximple.eofms.util.TWD97GeometryConverterDecorator;
import com.ximple.eofms.util.FeatureTypeBuilderUtil;
import com.ximple.eofms.util.DefaultColorTable;
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.LineElement;
import com.ximple.eofms.util.FeatureTypeBuilderUtil;
import com.ximple.eofms.util.TWD97GeometryConverterDecorator;
import com.ximple.io.dgn7.ArcElement;
import com.ximple.io.dgn7.ComplexChainElement;
import com.ximple.io.dgn7.Element;
import com.ximple.io.dgn7.FrammeAttributeData;
import com.ximple.io.dgn7.LineElement;
import com.ximple.io.dgn7.LineStringElement;
import com.ximple.io.dgn7.UserAttributeData;
public class CreateComplexChainStrategy implements CreateFeatureTypeStrategy
{
@@ -85,6 +83,7 @@
            {
                gobj = geometryFactory.createMultiLineString(new LineString[] {(LineString) gobj});
            }
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -105,6 +104,7 @@
            {
                gobj = geometryFactory.createMultiLineString(new LineString[] {(LineString) gobj});
            }
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -125,6 +125,7 @@
            {
                gobj = geometryFactory.createMultiLineString(new LineString[] {(LineString) gobj});
            }
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -146,6 +147,7 @@
            {
                gobj = geometryFactory.createMultiLineString(new LineString[] {(LineString) gobj});
            }
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    gobj,
                    fLinkage.getFsc(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateEllipseShapeStrategy.java
@@ -14,6 +14,7 @@
import org.geotools.feature.SchemaException;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Geometry;
import com.ximple.eofms.util.DefaultColorTable;
import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -73,8 +74,10 @@
        {
            EllipseElement shapeElement = (EllipseElement) element;
            convertDecorator.setConverter(shapeElement);
            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    convertDecorator.toGeometry(geometryFactory),
                    gobj,
                    fLinkage.getFsc(),
                    (long) fLinkage.getUfid(),
                    (short) fLinkage.getComponentID(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java
@@ -81,6 +81,8 @@
        {
            LineStringElement lineStringElement = (LineStringElement) element;
            convertDecorator.setConverter(lineStringElement);
            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    convertDecorator.toGeometry(geometryFactory),
                    fLinkage.getFsc(),
@@ -97,7 +99,7 @@
            ComplexChainElement complexChain = (ComplexChainElement) element;
            convertDecorator.setConverter(complexChain);
            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
            if (gobj instanceof MultiLineString)
            if ((gobj != null) && (gobj instanceof MultiLineString))
            {
                MultiLineString mline = (MultiLineString) gobj;
                CoordinateList coordinateList = new CoordinateList();
@@ -111,6 +113,7 @@
                gobj = geometryFactory.createLineString(coordinateList.toCoordinateArray());
            }
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    gobj,
                    fLinkage.getFsc(),
@@ -126,8 +129,10 @@
        {
            LineElement lineElement = (LineElement) element;
            convertDecorator.setConverter(lineElement);
            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    convertDecorator.toGeometry(geometryFactory),
                    gobj,
                    fLinkage.getFsc(),
                    (long) fLinkage.getUfid(),
                    (short) fLinkage.getComponentID(),
@@ -142,8 +147,10 @@
        {
            ArcElement lineStringElement = (ArcElement) element;
            convertDecorator.setConverter(lineStringElement);
            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    convertDecorator.toGeometry(geometryFactory),
                    gobj,
                    fLinkage.getFsc(),
                    (long) fLinkage.getUfid(),
                    (short) fLinkage.getComponentID(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineTextStrategy.java
@@ -16,6 +16,9 @@
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.LineString;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.MultiLineString;
import com.vividsolutions.jts.geom.CoordinateList;
import com.ximple.eofms.util.DefaultColorTable;
import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -80,8 +83,10 @@
        {
            LineStringElement lineStringElement = (LineStringElement) element;
            convertDecorator.setConverter(lineStringElement);
            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    convertDecorator.toGeometry(geometryFactory),
                    gobj,
                    fLinkage.getFsc(),
                    (long) fLinkage.getUfid(),
                    (short) fLinkage.getComponentID(),
@@ -123,8 +128,24 @@
        {
            ComplexChainElement complexChain = (ComplexChainElement) element;
            convertDecorator.setConverter(complexChain);
            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
            if ((gobj != null) && (gobj instanceof MultiLineString))
            {
                MultiLineString mline = (MultiLineString) gobj;
                CoordinateList coordinateList = new CoordinateList();
                if (mline.getNumGeometries() == 1)
                {
                    for (int i = 0; i < mline.getNumGeometries(); i++)
                    {
                        coordinateList.add(mline.getGeometryN(i).getCoordinates(), true);
                    }
                }
                gobj = geometryFactory.createLineString(coordinateList.toCoordinateArray());
            }
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    convertDecorator.toGeometry(geometryFactory),
                    gobj,
                    fLinkage.getFsc(),
                    (long) fLinkage.getUfid(),
                    (short) fLinkage.getComponentID(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateShapeStrategy.java
@@ -14,6 +14,7 @@
import org.geotools.feature.SchemaException;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Geometry;
import com.ximple.eofms.util.DefaultColorTable;
import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -75,32 +76,36 @@
        {
            ShapeElement shapeElement = (ShapeElement) element;
            convertDecorator.setConverter(shapeElement);
            feature = featureType.create(new Object[]{
                    convertDecorator.toGeometry(geometryFactory),
                    fLinkage.getFsc(),
                    (long) fLinkage.getUfid(),
                    (short) fLinkage.getComponentID(),
                    (short) 0,
                    (short) shapeElement.getLevelIndex(),
                    colorTable.getColorCode(shapeElement.getColorIndex()),
                    (short) shapeElement.getWeight(),
                    (short) shapeElement.getLineStyle()
            });
            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
            if (gobj != null)
                feature = featureType.create(new Object[]{
                        gobj,
                        fLinkage.getFsc(),
                        (long) fLinkage.getUfid(),
                        (short) fLinkage.getComponentID(),
                        (short) 0,
                        (short) shapeElement.getLevelIndex(),
                        colorTable.getColorCode(shapeElement.getColorIndex()),
                        (short) shapeElement.getWeight(),
                        (short) shapeElement.getLineStyle()
                });
        } else if (element instanceof ComplexShapeElement)
        {
            ComplexShapeElement complexShape = (ComplexShapeElement) element;
            convertDecorator.setConverter(complexShape);
            feature = featureType.create(new Object[]{
                    convertDecorator.toGeometry(geometryFactory),
                    fLinkage.getFsc(),
                    (long) fLinkage.getUfid(),
                    (short) fLinkage.getComponentID(),
                    (short) 0,
                    (short) complexShape.getLevelIndex(),
                    colorTable.getColorCode(complexShape.getColorIndex()),
                    (short) complexShape.getWeight(),
                    (short) complexShape.getLineStyle()
            });
            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
            if (gobj != null)
                feature = featureType.create(new Object[]{
                        gobj,
                        fLinkage.getFsc(),
                        (long) fLinkage.getUfid(),
                        (short) fLinkage.getComponentID(),
                        (short) 0,
                        (short) complexShape.getLevelIndex(),
                        colorTable.getColorCode(complexShape.getColorIndex()),
                        (short) complexShape.getWeight(),
                        (short) complexShape.getLineStyle()
                });
        }
        return feature;
    }
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateSymbolStrategy.java
@@ -16,6 +16,7 @@
import org.geotools.feature.SchemaException;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Geometry;
import com.ximple.eofms.util.DefaultColorTable;
import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -91,8 +92,10 @@
            sb.append(txtElement.getFontIndex());
            convertDecorator.setConverter(txtElement);
            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    convertDecorator.toGeometry(geometryFactory),
                    gobj,
                    fLinkage.getFsc(),
                    (long) fLinkage.getUfid(),
                    (short) fLinkage.getComponentID(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java
@@ -15,6 +15,7 @@
import org.geotools.feature.SchemaException;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Geometry;
import com.ximple.eofms.util.DefaultColorTable;
import com.ximple.eofms.util.FeatureTypeBuilderUtil;
@@ -77,11 +78,13 @@
            TextElement txtElement = (TextElement) element;
            double angle = txtElement.getRotationAngle();
            angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
            convertDecorator.setConverter(txtElement);
            String content = txtElement.getText();
            content = content.replace('\u0000', ' ');
            convertDecorator.setConverter(txtElement);
            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    convertDecorator.toGeometry(geometryFactory),
                    gobj,
                    fLinkage.getFsc(),
                    (long) fLinkage.getUfid(),
                    (short) fLinkage.getComponentID(),
@@ -112,8 +115,10 @@
            double angle = nodeElement.getRotationAngle();
            angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
            convertDecorator.setConverter(nodeElement);
            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    convertDecorator.toGeometry(geometryFactory),
                    gobj,
                    fLinkage.getFsc(),
                    (long) fLinkage.getUfid(),
                    (short) fLinkage.getComponentID(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java
@@ -287,6 +287,7 @@
        Statement stmt = connection.createStatement();
        stmt.execute(AbstractOracleJobContext.TRUNCATE_CONNECTIVITY_WEBCHECK);
        stmt.execute(AbstractOracleJobContext.COPY_CONNECTIVITY_TO_WEBCHECK);
        stmt.close();
    }
    private void exetcuteConvert(OracleConvertPostGISJobContext jobContext,
@@ -411,9 +412,9 @@
        Statement stmt = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
        stmt.setFetchSize(FETCHSIZE);
        ResultSet rs = stmt.executeQuery(fetchStmt);
        try
        {
        while (rs.next())
        {
            int size = rs.getMetaData().getColumnCount();
@@ -433,10 +434,11 @@
            else
                pair.second = name;
        }
        } finally
        {
        rs.close();
        stmt.close();
        }
        return orderedMap;
    }
@@ -450,7 +452,6 @@
        Statement stmtSrc = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
        stmtSrc.setFetchSize(FETCHSIZE);
        ResultSet rsSrc = stmtSrc.executeQuery(fetchSrcStmt);
        while (rsSrc.next())
@@ -492,9 +493,10 @@
        Statement stmtDest = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
        stmtDest.setFetchSize(FETCHSIZE);
        ResultSet rsDest = stmtDest.executeQuery(fetchDestStmt);
        try
        {
        while (rsDest.next())
        {
            ARRAY rawsValue = ((OracleResultSet) rsDest).getARRAY(1);
@@ -524,9 +526,11 @@
                logger.warn("Dgn7Exception:" + e.getMessage(), e);
            }
        }
        } finally
        {
        rsDest.close();
        stmtDest.close();
        }
    }
    // Binary to Element
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/DummyFeatureConvertPostGISJobContext.java
@@ -45,7 +45,6 @@
    static final Log logger = LogFactory.getLog(DummyFeatureConvertPostGISJobContext.class);
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    static final String SHPOUTPATH = "shpout";
    private String dataOut = null;
@@ -238,23 +237,6 @@
        {
            logger.error(e.getMessage(), e);
        }
    }
    public String getDataOutPath()
    {
        if (dataOut == null)
        {
            File outPath = new File(getDataPath(), SHPOUTPATH);
            if (!outPath.exists())
            {
                outPath.mkdir();
            } else if (!outPath.isDirectory())
            {
                outPath.mkdir();
            }
            dataOut = outPath.toString();
        }
        return dataOut;
    }
    public void closeFeatureWriter() throws IOException
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/FeatureDgnConvertPostGISJobContext.java
@@ -42,8 +42,6 @@
    static final LoggerFacade sLogger = new CommonsLoggingLogger(logger);
    static final GeometryFactory geometryFactory = new GeometryFactory();
    private String dataOut = null;
    private HashMap<String, ArrayList<Feature>> featuresContext = new HashMap<String, ArrayList<Feature>>();
    private HashMap<String, FeatureWriter> featuresWriterContext = new HashMap<String, FeatureWriter>();
@@ -136,7 +134,7 @@
        {
            txFeaturesContext.put(feature.getFeatureType(), new ArrayList());
        }
        ArrayList arrayList = (ArrayList) txFeaturesContext.get(feature.getFeatureType());
        ArrayList<Feature> arrayList = (ArrayList<Feature>) txFeaturesContext.get(feature.getFeatureType());
        arrayList.add(feature);
    }
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java
@@ -145,7 +145,6 @@
    private void updateDataStore()
    {
        Iterator<FeatureType> it = txFeaturesContext.keySet().iterator();
        String currentStmt = null;
        try
        {
            while (it.hasNext())
@@ -171,24 +170,13 @@
                        pstmt.execute();
                    } catch (PSQLException e)
                    {
                        if (currentStmt != null)
                        if (bindingStmt != null)
                        {
                            logger.error("Execute:" + currentStmt);
                            logger.error("Execute:" + bindingStmt);
                        }
                        logger.error(e.getServerErrorMessage());
                        logger.error(e.getMessage(), e);
                    }
                    /*
                    if ((i % BATCHSIZE) != 0)
                    {
                        stmt.addBatch(feature);
                    } else {
                        stmt.addBatch(feature);
                        stmt.executeBatch();
                    }
                    i++;
                    */
                }
                pstmt.close();
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java
@@ -124,19 +124,15 @@
        {
            updateDataStore();
        }
        txFeaturesContext.clear();
    }
    public void rollbackTransaction()
    {
        txFeaturesContext.clear();
    }
    private void updateDataStore()
    {
        Iterator<FeatureType> it = txFeaturesContext.keySet().iterator();
        String currentStmt = null;
        try
        {
            while (it.hasNext())
@@ -162,9 +158,9 @@
                        pstmt.execute();
                    } catch (PSQLException e)
                    {
                        if (currentStmt != null)
                        if (bindingStmt != null)
                        {
                            logger.error("Execute:" + currentStmt);
                            logger.error("Execute:" + bindingStmt);
                        }
                        logger.error(e.getServerErrorMessage());
                        logger.error(e.getMessage(), e);
@@ -191,10 +187,6 @@
            accumulate = 0;
        } catch (PSQLException e)
        {
            if (currentStmt != null)
            {
                logger.error("Execute:" + currentStmt);
            }
            logger.error(e.getServerErrorMessage());
            logger.error(e.getMessage(), e);
        } catch (SQLException e)
@@ -205,6 +197,7 @@
    public void closeFeatureWriter() throws IOException
    {
        txFeaturesContext.clear();
        /*
        for (FeatureWriter featureWriter : this.featuresWriterContext.values())
        {
@@ -384,12 +377,15 @@
        DefaultColorTable colorTable = (DefaultColorTable) DefaultColorTable.getInstance();
        if (element instanceof TextElement)
        {
            Feature feature = null;
            TextElement txtElement = (TextElement) element;
            double angle = txtElement.getRotationAngle();
            angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
            convertDecorator.setConverter(txtElement);
            Feature feature = featureType.create(new Object[]{
                    convertDecorator.toGeometry(geometryFactory),
            Geometry gobj = convertDecorator.toGeometry(geometryFactory);
            if (gobj != null)
            feature = featureType.create(new Object[]{
                    gobj,
                    colorTable.getColorCode(txtElement.getColorIndex()),
                    txtElement.getWeight(),
                    txtElement.getLineStyle(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java
@@ -240,6 +240,18 @@
                        }
                        logger.error(e.getServerErrorMessage());
                        logger.error(e.getMessage(), e);
                    } catch (ClassCastException e)
                    {
                        if (bindingStmt != null)
                        {
                            logger.error("Execute:" + bindingStmt);
                        }
                        for (int i = 0; i < feature.getNumberOfAttributes(); i++)
                        {
                            logger.info("attr[" + i + "]-" + ((feature.getAttribute(i) == null) ? " NULL" :
                            feature.getAttribute(i).toString()));
                        }
                        logger.error(e.getMessage(), e);
                    }
                }
xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml
@@ -47,6 +47,11 @@
        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
        <set-properties-rule/>
      </pattern>
      <pattern value="ComplexChainCreateStrategy">
        <object-create-rule classname="com.ximple.eofms.filter.CreateComplexChainStrategy"/>
        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
        <set-properties-rule/>
      </pattern>
    </pattern>
    <pattern value="TypeCompFilter">
      <object-create-rule classname="com.ximple.eofms.filter.TypeCompIdDispatchableFilter"/>
@@ -95,6 +100,11 @@
      </pattern>
      <pattern value="EllipseShapeCreateStrategy">
        <object-create-rule classname="com.ximple.eofms.filter.CreateEllipseShapeStrategy"/>
        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
        <set-properties-rule/>
      </pattern>
      <pattern value="ComplexChainCreateStrategy">
        <object-create-rule classname="com.ximple.eofms.filter.CreateComplexChainStrategy"/>
        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
        <set-properties-rule/>
      </pattern>
@@ -156,6 +166,11 @@
        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
        <set-properties-rule/>
      </pattern>
      <pattern value="ComplexChainCreateStrategy">
        <object-create-rule classname="com.ximple.eofms.filter.CreateComplexChainStrategy"/>
        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
        <set-properties-rule/>
      </pattern>
    </pattern>
  </pattern>
</digester-rules>