From 0bdcece216e0d3b51760ded614b420eff503abef Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Thu, 27 Mar 2008 17:06:11 +0800
Subject: [PATCH] update for EOFM-34

---
 xdgnjobs/ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testElementFilter.xml |    5 +
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractDispatchableFilter.java      |   21 +++++-
 .gitattributes                                                                                        |    1 
 xdgnjobs/ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testRules.xml         |   68 ++++++++++++----------
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementTypeCriterion.java            |   33 +++++++++++
 5 files changed, 91 insertions(+), 37 deletions(-)

diff --git a/.gitattributes b/.gitattributes
index a1e8922..ff97118 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -49,6 +49,7 @@
 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/ElementDispatcher.java svneol=native#text/plain
+xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementTypeCriterion.java svneol=native#text/plain
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java svneol=native#text/plain
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java svneol=native#text/plain
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java svneol=native#text/plain
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractDispatchableFilter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractDispatchableFilter.java
index 70c9922..d0fbe6c 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractDispatchableFilter.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractDispatchableFilter.java
@@ -1,18 +1,23 @@
 package com.ximple.eofms.filter;
 
+import java.util.LinkedList;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+
+import com.ximple.io.dgn7.Element;
 
 public abstract class AbstractDispatchableFilter implements ElementDispatchableFilter
 {
     private String name;
     private String description;
-    private int elmtype;
+    private LinkedList<ElementTypeCriterion> criterions;
 
     protected Log logger = LogFactory.getLog(AbstractFLinkageDispatchableFilter.class);
 
     public AbstractDispatchableFilter()
     {
+        criterions = new LinkedList<ElementTypeCriterion>();
     }
 
     public String getName()
@@ -35,13 +40,19 @@
         this.description = description;
     }
 
-    public int getElmtype()
+    public void addCriterion(ElementTypeCriterion criterion)
     {
-        return elmtype;
+        criterions.add(criterion);
     }
 
-    public void setElmtype(int elmtype)
+    protected int compareType(Element element)
     {
-        this.elmtype = elmtype;
+        for (ElementTypeCriterion criterion : criterions)
+        {
+            if (criterion.compareTo(element) == 0)
+                return 0;
+        }
+        return -1;
     }
+
 }
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementTypeCriterion.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementTypeCriterion.java
new file mode 100644
index 0000000..4f6c1ad
--- /dev/null
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementTypeCriterion.java
@@ -0,0 +1,33 @@
+package com.ximple.eofms.filter;
+
+import com.ximple.io.dgn7.Element;
+
+public class ElementTypeCriterion implements Comparable
+{
+    private int elementTypeId;
+
+    public ElementTypeCriterion()
+    {
+    }
+
+    public int compareTo(Object o)
+    {
+        if (o instanceof Element)
+        {
+            Element elm = (Element) o;
+            if (elm.getElementType().id == elementTypeId)
+                return 0;
+        }
+        return -1;
+    }
+
+    public int getElementTypeId()
+    {
+        return elementTypeId;
+    }
+
+    public void setElementTypeId(int elementTypeId)
+    {
+        this.elementTypeId = elementTypeId;
+    }
+}
diff --git a/xdgnjobs/ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testElementFilter.xml b/xdgnjobs/ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testElementFilter.xml
index d6cd66f..c8c4897 100644
--- a/xdgnjobs/ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testElementFilter.xml
+++ b/xdgnjobs/ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testElementFilter.xml
@@ -3,7 +3,10 @@
   <TypeFilter name="DemoFeature1">
     <tid>106</tid>
     <description>DemoFilter for DemoFeature</description>
-    <elmtype>7</elmtype>
+    <elementCriterion>
+      <elementtype>7</elementtype>
+      <elementtype>17</elementtype>
+    </elementCriterion>
     <LineCreateStrategy/>
   </TypeFilter>
   <TypeCompFilter name="DemoFeature2">
diff --git a/xdgnjobs/ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testRules.xml b/xdgnjobs/ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testRules.xml
index 707a720..e9da319 100644
--- a/xdgnjobs/ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testRules.xml
+++ b/xdgnjobs/ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testRules.xml
@@ -10,18 +10,24 @@
       <set-properties-rule/>
       <bean-property-setter-rule pattern="name"/>
       <bean-property-setter-rule pattern="description"/>
-      <bean-property-setter-rule pattern="elmtype"/>
+      <!-- <bean-property-setter-rule pattern="elmtype"/> -->
       <bean-property-setter-rule pattern="tid"/>
-        <pattern value="LineCreateStrategy">
-            <object-create-rule classname="com.ximple.eofms.filter.CreateLineStringStrategy"/>
-            <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
-            <set-properties-rule/>
-        </pattern>
-        <pattern value="TextCreateStrategy">
-            <object-create-rule classname="com.ximple.eofms.filter.CreateTextStrategy"/>
-            <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
-            <set-properties-rule/>
-        </pattern>
+      <pattern value="elementCriterion">
+        <object-create-rule classname="com.ximple.eofms.filter.ElementTypeCriterion"/>
+        <set-next-rule methodname="addCriterion" paramtype="com.ximple.eofms.filter.ElementTypeCriterion"/>
+        <set-properties-rule/>
+        <bean-property-setter-rule pattern="elementType"/>
+      </pattern>
+      <pattern value="LineCreateStrategy">
+        <object-create-rule classname="com.ximple.eofms.filter.CreateLineStringStrategy"/>
+        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
+        <set-properties-rule/>
+      </pattern>
+      <pattern value="TextCreateStrategy">
+        <object-create-rule classname="com.ximple.eofms.filter.CreateTextStrategy"/>
+        <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"/>
@@ -32,16 +38,16 @@
       <bean-property-setter-rule pattern="elmtype"/>
       <bean-property-setter-rule pattern="tid"/>
       <bean-property-setter-rule pattern="cid"/>
-        <pattern value="LineCreateStrategy">
-            <object-create-rule classname="com.ximple.eofms.filter.CreateLineStringStrategy"/>
-            <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
-            <set-properties-rule/>
-        </pattern>
-        <pattern value="TextCreateStrategy">
-            <object-create-rule classname="com.ximple.eofms.filter.CreateTextStrategy"/>
-            <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
-            <set-properties-rule/>
-        </pattern>
+      <pattern value="LineCreateStrategy">
+        <object-create-rule classname="com.ximple.eofms.filter.CreateLineStringStrategy"/>
+        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
+        <set-properties-rule/>
+      </pattern>
+      <pattern value="TextCreateStrategy">
+        <object-create-rule classname="com.ximple.eofms.filter.CreateTextStrategy"/>
+        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
+        <set-properties-rule/>
+      </pattern>
     </pattern>
     <pattern value="TypeCompLevelFilter">
       <object-create-rule classname="com.ximple.eofms.filter.TypeCompLevelIdDispatchableFilter"/>
@@ -53,16 +59,16 @@
       <bean-property-setter-rule pattern="tid"/>
       <bean-property-setter-rule pattern="cid"/>
       <bean-property-setter-rule pattern="lid"/>
-        <pattern value="LineCreateStrategy">
-            <object-create-rule classname="com.ximple.eofms.filter.CreateLineStringStrategy"/>
-            <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
-            <set-properties-rule/>
-        </pattern>
-        <pattern value="TextCreateStrategy">
-            <object-create-rule classname="com.ximple.eofms.filter.CreateTextStrategy"/>
-            <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
-            <set-properties-rule/>
-        </pattern>
+      <pattern value="LineCreateStrategy">
+        <object-create-rule classname="com.ximple.eofms.filter.CreateLineStringStrategy"/>
+        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
+        <set-properties-rule/>
+      </pattern>
+      <pattern value="TextCreateStrategy">
+        <object-create-rule classname="com.ximple.eofms.filter.CreateTextStrategy"/>
+        <set-next-rule methodname="setCreateStrategy" paramtype="com.ximple.eofms.filter.CreateFeatureTypeStrategy"/>
+        <set-properties-rule/>
+      </pattern>
     </pattern>
   </pattern>
 </digester-rules>
\ No newline at end of file

--
Gitblit v0.0.0-SNAPSHOT