From 6dad7ef53ebc83b4dc81af67079f3290c27fca98 Mon Sep 17 00:00:00 2001
From: ?? ? <neonhuang@hotmail.com>
Date: Thu, 10 Apr 2008 21:01:10 +0800
Subject: [PATCH] 

---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractDispatchableFilter.java        |   25 +++++-
 /dev/null                                                                                               |   48 ------------
 .gitattributes                                                                                          |    3 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleJobContext.java            |   29 +++++++
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementLevelCriterion.java             |   48 ++++++++++++
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java             |    2 
 xdgnjobs/ximple-spatialjob/src/main/resources/conf/DefaultConvertShpFilter.xml                          |    1 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java             |   17 +++
 xdgnjobs/ximple-spatialjob/src/main/resources/conf/ConvertShpFilterForLayer.xml                         |   17 ++++
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java          |    4 -
 xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml        |   24 ++++-
 12 files changed, 153 insertions(+), 67 deletions(-)

diff --git a/.gitattributes b/.gitattributes
index 08dc250..07b16d5 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -49,7 +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/ElementLayerCriterion.java svneol=native#text/plain
+xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementLevelCriterion.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
@@ -69,6 +69,7 @@
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/PrintfFormat.java svneol=native#text/plain
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TWDDatumConverter.java svneol=native#text/plain
 xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml svneol=native#text/xml
+xdgnjobs/ximple-spatialjob/src/main/resources/conf/ConvertShpFilterForLayer.xml svneol=native#text/xml
 xdgnjobs/ximple-spatialjob/src/main/resources/conf/DefaultConvertShpFilter.xml svneol=native#text/xml
 xdgnjobs/ximple-spatialjob/src/test/java/com/ximple/eofms/filter/ElementDispatcherTest.java svneol=native#text/plain
 xdgnjobs/ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testElementFilter.xml svneol=native#text/xml
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 d0fbe6c..b39643c 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
@@ -11,13 +11,15 @@
 {
     private String name;
     private String description;
-    private LinkedList<ElementTypeCriterion> criterions;
+    private LinkedList<ElementTypeCriterion> typeIdCriterions;
+    private LinkedList<ElementLevelCriterion> levelCriterions;
 
     protected Log logger = LogFactory.getLog(AbstractFLinkageDispatchableFilter.class);
 
     public AbstractDispatchableFilter()
     {
-        criterions = new LinkedList<ElementTypeCriterion>();
+        typeIdCriterions = new LinkedList<ElementTypeCriterion>();
+        levelCriterions = new LinkedList<ElementLevelCriterion>();
     }
 
     public String getName()
@@ -42,12 +44,27 @@
 
     public void addCriterion(ElementTypeCriterion criterion)
     {
-        criterions.add(criterion);
+        typeIdCriterions.add(criterion);
+    }
+
+    public void addLevelCriterion(ElementLevelCriterion criterion)
+    {
+        levelCriterions.add(criterion);
     }
 
     protected int compareType(Element element)
     {
-        for (ElementTypeCriterion criterion : criterions)
+        for (ElementTypeCriterion criterion : typeIdCriterions)
+        {
+            if (criterion.compareTo(element) == 0)
+                return 0;
+        }
+        return -1;
+    }
+
+    protected int compareLevel(Element element)
+    {
+        for (ElementLevelCriterion criterion : levelCriterions)
         {
             if (criterion.compareTo(element) == 0)
                 return 0;
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 64d4400..a9a731c 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
@@ -79,10 +79,6 @@
         } else if (element instanceof ComplexChainElement)
         {
             ComplexChainElement complexChain = (ComplexChainElement) element;
-            System.out.println("-----ComplexChainElement Element:" + element.getElementType().toString() +
-                    ":type=" + element.getType() + ":lv=" + element.getLevelIndex() + ":id=" +
-                    (fLinkage == null ? "NULL" : (fLinkage.getFsc() + "|" +fLinkage.getUfid() + "|" + fLinkage.getComponentID())));
-
             Feature feature = featureType.create(new Object[]{
                     complexChain.toGeometry(geometryFactory),
                     (int) fLinkage.getFsc(),
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementLayerCriterion.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementLayerCriterion.java
deleted file mode 100644
index 5772e88..0000000
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementLayerCriterion.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.ximple.eofms.filter;
-
-import com.ximple.io.dgn7.Element;
-
-import java.util.ArrayList;
-
-public class ElementLayerCriterion implements Comparable
-{
-    private int elementLayer;
-    private ArrayList<Integer> elementLayerArray  ;
-
-    public ElementLayerCriterion()
-    {
-            elementLayerArray = new ArrayList<Integer>();
-    }
-
-    public int compareTo(Object o)
-    {
-        if (o instanceof Element)
-        {
-            Element elm = (Element) o;
-
-            for(Integer etype : getElementLayerArray())
-            {
-             if (elm.getElementType().id == etype.intValue())
-                return 0;
-            }
-
-        }
-        return -1;
-    }
-
-    public int getElementLayer()
-    {
-        return elementLayer;
-    }
-
-     public ArrayList<Integer> getElementLayerArray()
-    {
-        return elementLayerArray;
-    }
-
-    public void setElementLayer(int iLayer)
-    {
-        this.elementLayer =  iLayer ;
-        this.elementLayerArray.add(iLayer);
-    }
-}
\ No newline at end of file
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementLevelCriterion.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementLevelCriterion.java
new file mode 100644
index 0000000..187bcc5
--- /dev/null
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementLevelCriterion.java
@@ -0,0 +1,48 @@
+package com.ximple.eofms.filter;
+
+import com.ximple.io.dgn7.Element;
+
+import java.util.ArrayList;
+
+public class ElementLevelCriterion implements Comparable
+{
+    private int elementLevel;
+    private ArrayList<Integer> elementLevelArray  ;
+
+    public ElementLevelCriterion()
+    {
+            elementLevelArray = new ArrayList<Integer>();
+    }
+
+    public int compareTo(Object o)
+    {
+        if (o instanceof Element)
+        {
+            Element elm = (Element) o;
+
+            for(Integer elevel : getElementLevelArray())
+            {
+             if (elm.getElementType().id == elevel.intValue())
+                return 0;
+            }
+
+        }
+        return -1;
+    }
+
+    public int getElementLevel()
+    {
+        return elementLevel;
+    }
+
+     public ArrayList<Integer> getElementLevelArray()
+    {
+        return elementLevelArray;
+    }
+
+    public void setElementLevel(int iLevel)
+    {
+        this.elementLevel =  iLevel ;
+        this.elementLevelArray.add(iLevel);
+    }
+}
\ No newline at end of file
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 d6b0e03..ecc6534 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
@@ -75,7 +75,7 @@
         FrammeAttributeData featureLinkage = getFeatureLinkage(element);
         return featureLinkage != null && tid == featureLinkage.getFsc() &&
                 (cid == featureLinkage.getComponentID()) &&
-                (lid == element.getLevelIndex()) && (compareType(element) == 0);
+                (lid == element.getLevelIndex()) && (compareLevel(element) == 0);
     }
 
     public Feature execute(Element element)
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleJobContext.java
index 1cf6f27..4be207f 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleJobContext.java
@@ -170,6 +170,35 @@
                     + "            SET XLOW = :new.XLOW, YLOW = :new.YLOW, XHIGH = :new.XHIGH, YHIGH = :new.YHIGH\n"
                     + "            WHERE FSC = :new.FSC AND UFID = :new.UFID AND COMPID = :new.COMPID AND OCCID = :new.OCCID;\n"
                     + "        END IF;\n" + "    END;";
+
+    /**
+     * copy connectivity to connectivity_webcheck sql
+     */
+    protected static final String TRUNCATE_CONNECTIVITY_WEBCHECK = "TRUNCATE TABLE  BASEDB.CONNECTIVITY_WEBCHECK";
+    protected static final String CREATE_CONNECTIVITY_WEBCHECK = "CREATE TABLE BASEDB.CONNECTIVITY_WEBCHECK\n" +
+            "( FSC      NUMBER(5) NOT NULL," +
+            "  UFID     NUMBER(10) NOT NULL," +
+            "  N1       NUMBER(10)," +
+            "  N2       NUMBER(10)," +
+            "  FDR1     NUMBER(5)," +
+            "  FDR2     NUMBER(5)," +
+            "  DIR      NUMBER(3)," +
+            "  OHUG     NUMBER(3)," +
+            "  OSTATUS  NUMBER(3)," +
+            "  PHASE    NUMBER(3)," +
+            "  X        NUMBER(10,3) NOT NULL," +
+            "  Y        NUMBER(10,3) NOT NULL" +
+            ")\n" +
+            "TABLESPACE BASE_DATA PCTUSED 40 PCTFREE 10 INITRANS 1 MAXTRANS 255\n" +
+            "STORAGE    (INITIAL 19120K MINEXTENTS 1 MAXEXTENTS 2147483645 \n" +
+            "PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT )\n" +
+            "LOGGING NOCOMPRESS NOCACHE NOPARALLEL MONITORING;";
+
+     protected static final String COPY_CONNECTIVITY_TO_WEBCHECK = "INSERT /*+ APPEND */ INTO BASEDB.CONNECTIVITY_WEBCHECK\n" +
+             "(FSC, UFID, N1, N2, FDR1, FDR2, DIR, OHUG,OSTATUS, PHASE, X, Y)\n" +
+             "SELECT FSC, UFID, N1, N2, FDR1, FDR2, DIR, OHUG, OSTATUS, PHASE, X, Y FROM BASEDB.CONNECTIVITY ";
+
+
     /**
      *
      */
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java
index 30cd470..73ad22e 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java
@@ -87,11 +87,12 @@
         jobContext.setLogin(_username, _password);
         jobContext.setShapeData(_dataPath);
         jobContext.setExecutionContext(context);
-
+     
         try
         {
-            //exetcuteConvert(jobContext, _orgSchema, _dataPath);
-            exetcuteConvert(jobContext, "CMMS_SPATIALDB", _dataPath);
+            copyConnectivity(jobContext);
+            exetcuteConvert(jobContext, _orgSchema, _dataPath);
+            //exetcuteConvert(jobContext, "CMMS_SPATIALDB", _dataPath);
 
             //close all open filewriter instance
             jobContext.closeFeatureWrite();
@@ -103,6 +104,15 @@
             ex.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
         }
 
+    }
+
+    //Connectivity�ƻs�@�Ӫ����A�b�d�߹q�y��V�ɥΨӤ��OMS��Ʈw���q���s����(Connectivity)
+    private void copyConnectivity(OracleConvertJobContext jobContext)  throws SQLException
+    {
+       OracleConnection connection =  jobContext.getOracleConnection() ;
+       Statement stmt = connection.createStatement();
+       stmt.execute(OracleConvertJobContext.TRUNCATE_CONNECTIVITY_WEBCHECK);
+       stmt.execute(OracleConvertJobContext.COPY_CONNECTIVITY_TO_WEBCHECK);
     }
 
     private void exetcuteConvert(OracleConvertJobContext jobContext,
@@ -332,6 +342,7 @@
         stmtDest.close();
     }
 
+    // Binary to Element
     private Element fetchBinaryElement(byte[] raws) throws Dgn7fileException
     {
         ByteBuffer buffer = ByteBuffer.wrap(raws);
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java
index a9b627b..749cb89 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java
@@ -93,6 +93,7 @@
             {
                 // config = new File("conf/DefaultConvertShpFilter.xml");
                 filterURL = this.getClass().getResource("/conf/DefaultConvertShpFilter.xml");
+               //filterURL = this.getClass().getResource("/conf/ConvertShpFilterForLevel.xml");
             }
             assert filterURL != null;
             return (ElementDispatcher) digester.parse(filterURL);
@@ -117,6 +118,7 @@
 
     public void putFeatureCollection(Element element)
     {
+        //�P�_�O�_�ũM����
         Feature feature = elementDispatcher.execute(element);
         if (feature == null)
         {
diff --git a/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml
index bd136dc..6c3924e 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml
+++ b/xdgnjobs/ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml
@@ -55,20 +55,32 @@
       <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"/>
       <bean-property-setter-rule pattern="cid"/>
-      <bean-property-setter-rule pattern="lid"/>
-        <pattern value="LineCreateStrategy">
+      <!-- <bean-property-setter-rule pattern="lid"/> -->
+      <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="elementLayerCriterion">
+        <object-create-rule classname="com.ximple.eofms.filter.ElementLevelCriterion"/>
+        <set-next-rule methodname="addLayerCriterion" paramtype="com.ximple.eofms.filter.ElementLevelCriterion"/>
+        <set-properties-rule/>
+       <bean-property-setter-rule pattern="elementLayer"/>
+      </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">
+      </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>
   </pattern>
 </digester-rules>
\ No newline at end of file
diff --git a/xdgnjobs/ximple-spatialjob/src/main/resources/conf/ConvertShpFilterForLayer.xml b/xdgnjobs/ximple-spatialjob/src/main/resources/conf/ConvertShpFilterForLayer.xml
new file mode 100644
index 0000000..d8d863a
--- /dev/null
+++ b/xdgnjobs/ximple-spatialjob/src/main/resources/conf/ConvertShpFilterForLayer.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="big5" ?>
+<ElementDispatcherRules>
+<!-- High Voltage Features -->
+				<TypeCompLevelFilter name="FSC-106.C-0">
+								<tid>106</tid>
+								<cid>0</cid>
+								<description>�D�����u</description>
+								<elementCriterion>
+												<elementType>12</elementType>
+								</elementCriterion>
+                                <elementLevelCriterion>
+												<elementLevel>1</elementLevel>
+								</elementLevelCriterion>
+                                <LineCreateStrategy/>
+				</TypeCompLevelFilter>
+
+</ElementDispatcherRules>
diff --git a/xdgnjobs/ximple-spatialjob/src/main/resources/conf/DefaultConvertShpFilter.xml b/xdgnjobs/ximple-spatialjob/src/main/resources/conf/DefaultConvertShpFilter.xml
index 2ad9637..e5a1b5a 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/resources/conf/DefaultConvertShpFilter.xml
+++ b/xdgnjobs/ximple-spatialjob/src/main/resources/conf/DefaultConvertShpFilter.xml
@@ -367,6 +367,7 @@
 								</elementCriterion>
 								<TextCreateStrategy/>
 				</TypeCompFilter>
+				<!-- *****�C��****** -->
 				<TypeCompFilter name="FSC-201.C-0">
 								<tid>201</tid>
 								<cid>0</cid>

--
Gitblit v0.0.0-SNAPSHOT