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