forked from geodmms/xdgnjobs

?? ?
2008-04-10 6dad7ef53ebc83b4dc81af67079f3290c27fca98
.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
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;
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(),
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementLayerCriterion.java
File was deleted
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementLevelCriterion.java
New file
@@ -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);
    }
}
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)
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 ";
    /**
     *
     */
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);
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)
        {
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>
xdgnjobs/ximple-spatialjob/src/main/resources/conf/ConvertShpFilterForLayer.xml
New file
@@ -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>
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>