update for EOFM-111, EOFM-112
1 files copied
21 files modified
9 files added
8 files renamed
| | |
| | | xdgnjobs/ximple-jobcarrier/src/main/resources/log4j.properties svneol=native#text/plain |
| | | xdgnjobs/ximple-jobcarrier/src/main/resources/quartz.properties svneol=native#text/plain |
| | | xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml svneol=native#text/xml |
| | | xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs_shapefiles.xml svneol=native#text/xml |
| | | xdgnjobs/ximple-jobcarrier/src/test/java/com/ximple/eofms/XQuartzJobCarrierTest.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/pom.xml svneol=native#text/xml |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/collector/FeatureClassification.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/collector/FeatureTypeCollector.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractDispatchableFilter.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractFLinkageDispatchableFilter.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateArcLineStringStrategy.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 |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractDgnFileJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/DummyFeatureConvertJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/FeatureDgnConvertJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeneralDgnConvertJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleElementLogger.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/TWD97GeometryConverterDecorator.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractDgnFileJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/AbstractOracleJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/FeatureDgnConvertJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/GeneralDgnConvertJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/IndexDgnConvertJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertOraSDOJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertPostGISJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleConvertShapefilesJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/OracleUpgradeJobContext.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/Base64.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/BinConverter.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/Bits.java svneol=native#text/plain |
| | |
| | | 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/StringUtils.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TPCLIDConverter.java svneol=native#text/plain |
| | | xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/TWD97GeometryConverterDecorator.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/com/ximple/eofms/filter/FeatureClassificationRules.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/main/resources/conf/DefaultMapGroups.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/test/resources/com/ximple/eofms/filter/test-data/testRules.xml svneol=native#text/xml |
| | |
| | | <test.maxHeapSize>512M</test.maxHeapSize> |
| | | <src.output>${basedir}/target</src.output> |
| | | <java5>1.5</java5> |
| | | <xdgnio.version>0.3.0</xdgnio.version> |
| | | <gt.version>2.4.2</gt.version> |
| | | <xdgnio.version>0.6.0</xdgnio.version> |
| | | <gt.version>2.4.4</gt.version> |
| | | <failIfNoTests>false</failIfNoTests> |
| | | </properties> |
| | | |
| | |
| | | <groupId>com.ximple.eofms</groupId> |
| | | <artifactId>ximple-dgnjobs</artifactId> |
| | | <packaging>pom</packaging> |
| | | <version>0.3.0</version> |
| | | <version>0.6.0</version> |
| | | <name>ximple-dgnjobs</name> |
| | | <url>http://www.ximple.com.tw</url> |
| | | |
| | |
| | | <artifactId>gt2-data</artifactId> |
| | | <version>${gt.version}</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.geotools</groupId> |
| | | <artifactId>gt2-oracle-spatial</artifactId> |
| | | <version>${gt.version}</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.geotools</groupId> |
| | | <artifactId>gt2-postgis</artifactId> |
| | | <version>${gt.version}</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.geotools</groupId> |
| | | <artifactId>gt2-mysql</artifactId> |
| | | <version>${gt.version}</version> |
| | | </dependency> |
| | | |
| | | <!-- because main and sample-data depend on referencing we need a tie breaker --> |
| | | <dependency> |
| | |
| | | <dependency> |
| | | <groupId>org.testng</groupId> |
| | | <artifactId>testng</artifactId> |
| | | <version>5.7</version> |
| | | <version>5.8</version> |
| | | <scope>test</scope> |
| | | </dependency> |
| | | </dependencies> |
| | |
| | | <parent> |
| | | <groupId>com.ximple.eofms</groupId> |
| | | <artifactId>ximple-dgnjobs</artifactId> |
| | | <version>0.3.0</version> |
| | | <version>0.6.0</version> |
| | | </parent> |
| | | |
| | | <!-- =========================================================== --> |
| | |
| | | <!-- =========================================================== --> |
| | | <groupId>com.ximple.eofms</groupId> |
| | | <artifactId>ximple-dgnio</artifactId> |
| | | <version>0.3.0</version> |
| | | <version>0.6.0</version> |
| | | <packaging>jar</packaging> |
| | | <name>ximple-dgnio-1.0.x</name> |
| | | <url>http://www.ximple.com.tw</url> |
| | |
| | | <parent> |
| | | <groupId>com.ximple.eofms</groupId> |
| | | <artifactId>ximple-dgnjobs</artifactId> |
| | | <version>0.3.0</version> |
| | | <version>0.6.0</version> |
| | | </parent> |
| | | |
| | | |
| | | <groupId>com.ximple.eofms</groupId> |
| | | <artifactId>ximple-jobcarrier</artifactId> |
| | | <version>0.3.0</version> |
| | | <version>0.6.0</version> |
| | | <packaging>jar</packaging> |
| | | <name>ximple-jobcarrier</name> |
| | | <url>http://maven.apache.org</url> |
| | | |
| | | <properties> |
| | | <xdgnio.version>0.3.0</xdgnio.version> |
| | | <xdgnio.version>0.6.0</xdgnio.version> |
| | | </properties> |
| | | |
| | | <scm> |
| | |
| | | |
| | | <job> |
| | | <job-detail> |
| | | <name>ConvertDgn2ShpIntoDirectory</name> |
| | | <name>ConvertDgn2PostGisIntoPostgre</name> |
| | | <group>DEFAULT</group> |
| | | <description>A job that convert dgn to shapefiles</description> |
| | | <job-class>com.ximple.eofms.jobs.OracleConvertDgn2ShpJob</job-class> |
| | | <job-class>com.ximple.eofms.jobs.OracleConvertDgn2PostGISJob</job-class> |
| | | <volatility>false</volatility> |
| | | <durability>false</durability> |
| | | <recover>false</recover> |
| | | <job-data-map allows-transient-data="true"> |
| | | <entry> |
| | | <key>SHPDATA_DIR</key> |
| | | <key>JOBDATA_DIR</key> |
| | | <value>g:\temp\data</value> |
| | | </entry> |
| | | <!-- |
| | | <entry> |
| | | <key>SHPFILTER_CONF</key> |
| | | <key>ELMSFILTER_CONF</key> |
| | | <value></value> |
| | | </entry> |
| | | --> |
| | | <entry> |
| | | <key>PGHOST</key> |
| | | <value>192.168.11.200</value> |
| | | </entry> |
| | | <entry> |
| | | <key>PGDDATBASE</key> |
| | | <value>nstpc</value> |
| | | </entry> |
| | | <entry> |
| | | <key>PGPORT</key> |
| | | <value>5432</value> |
| | | </entry> |
| | | <entry> |
| | | <key>PGSCHEMA</key> |
| | | <value>public</value> |
| | | </entry> |
| | | <entry> |
| | | <key>PGUSER</key> |
| | | <value>spatialdb</value> |
| | | </entry> |
| | | <entry> |
| | | <key>PGPASS</key> |
| | | <value>spatialdb000</value> |
| | | </entry> |
| | | <entry> |
| | | <key>ORAHOST</key> |
| | | <value>192.168.11.200</value> |
| | |
| | | <value>true</value> |
| | | </entry> |
| | | <entry> |
| | | <key>USEWKB</key> |
| | | <value>true</value> |
| | | </entry> |
| | | <entry> |
| | | <key>TESTMODE</key> |
| | | <value>FALSE</value> |
| | | <value>false</value> |
| | | </entry> |
| | | <entry> |
| | | <key>TESTCOUNT</key> |
| | |
| | | <simple> |
| | | <name>convertTrigger</name> |
| | | <group>DEFAULT</group> |
| | | <job-name>ConvertDgn2ShpIntoDirectory</job-name> |
| | | <job-name>ConvertDgn2PostGisIntoPostgre</job-name> |
| | | <job-group>DEFAULT</job-group> |
| | | <start-time>2008-03-01T18:10:00</start-time> |
| | | <!-- repeat indefinitely every 10 seconds --> |
New file |
| | |
| | | <?xml version='1.0' encoding='utf-8'?> |
| | | |
| | | <quartz xmlns="http://www.opensymphony.com/quartz/JobSchedulingData" |
| | | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://www.opensymphony.com/quartz/JobSchedulingData |
| | | http://www.opensymphony.com/quartz/xml/job_scheduling_data_1_5.xsd" |
| | | version="1.5"> |
| | | |
| | | <job> |
| | | <job-detail> |
| | | <name>ConvertDgn2ShpIntoDirectory</name> |
| | | <group>DEFAULT</group> |
| | | <description>A job that convert dgn to shapefiles</description> |
| | | <job-class>com.ximple.eofms.jobs.OracleConvertDgn2ShpJob</job-class> |
| | | <volatility>false</volatility> |
| | | <durability>false</durability> |
| | | <recover>false</recover> |
| | | <job-data-map allows-transient-data="true"> |
| | | <entry> |
| | | <key>SHPDATA_DIR</key> |
| | | <value>g:\temp\data</value> |
| | | </entry> |
| | | <!-- |
| | | <entry> |
| | | <key>ELMSFILTER_CONF</key> |
| | | <value></value> |
| | | </entry> |
| | | --> |
| | | <entry> |
| | | <key>ORAHOST</key> |
| | | <value>192.168.11.200</value> |
| | | </entry> |
| | | <entry> |
| | | <key>ORAINST</key> |
| | | <value>nntpc</value> |
| | | </entry> |
| | | <entry> |
| | | <key>ORAPORT</key> |
| | | <value>1521</value> |
| | | </entry> |
| | | <entry> |
| | | <key>ORAUSER</key> |
| | | <value>spatialdb</value> |
| | | </entry> |
| | | <entry> |
| | | <key>ORAPASS</key> |
| | | <value>spatialdb000</value> |
| | | </entry> |
| | | <entry> |
| | | <key>ORGSCHEMA</key> |
| | | <value>SPATIALDB, CMMS_SPATIALDB</value> |
| | | </entry> |
| | | <entry> |
| | | <key>CONVERTDB</key> |
| | | <value>false</value> |
| | | </entry> |
| | | <entry> |
| | | <key>CONVERTFILE</key> |
| | | <value>false</value> |
| | | </entry> |
| | | <entry> |
| | | <key>CONVERTELEMIN</key> |
| | | <value>false</value> |
| | | </entry> |
| | | <entry> |
| | | <key>CREATEDUMMY</key> |
| | | <value>true</value> |
| | | </entry> |
| | | <entry> |
| | | <key>ELEMLOG</key> |
| | | <value>true</value> |
| | | </entry> |
| | | <entry> |
| | | <key>TESTMODE</key> |
| | | <value>FALSE</value> |
| | | </entry> |
| | | <entry> |
| | | <key>TESTCOUNT</key> |
| | | <value>2</value> |
| | | </entry> |
| | | </job-data-map> |
| | | </job-detail> |
| | | |
| | | <trigger> |
| | | <simple> |
| | | <name>convertTrigger</name> |
| | | <group>DEFAULT</group> |
| | | <job-name>ConvertDgn2ShpIntoDirectory</job-name> |
| | | <job-group>DEFAULT</job-group> |
| | | <start-time>2008-03-01T18:10:00</start-time> |
| | | <!-- repeat indefinitely every 10 seconds --> |
| | | <repeat-count>0</repeat-count> |
| | | <repeat-interval>500</repeat-interval> |
| | | <!-- <repeat-interval>72000000</repeat-interval> --> |
| | | </simple> |
| | | </trigger> |
| | | |
| | | </job> |
| | | </quartz> |
| | |
| | | <parent> |
| | | <groupId>com.ximple.eofms</groupId> |
| | | <artifactId>ximple-dgnjobs</artifactId> |
| | | <version>0.3.0</version> |
| | | <version>0.6.0</version> |
| | | </parent> |
| | | |
| | | <groupId>com.ximple.eofms</groupId> |
| | | <artifactId>ximple-spatialjob</artifactId> |
| | | <version>0.3.0</version> |
| | | <version>0.6.0</version> |
| | | <packaging>jar</packaging> |
| | | <name>ximple-spatialjob</name> |
| | | <url>http://www.ximple.com.tw</url> |
| | | |
| | | <properties> |
| | | <xdgnio.version>0.3.0</xdgnio.version> |
| | | <xdgnio.version>0.6.0</xdgnio.version> |
| | | </properties> |
| | | |
| | | <description> |
New file |
| | |
| | | package com.ximple.eofms.collector; |
| | | |
| | | import java.util.TreeMap; |
| | | |
| | | public class FeatureClassification |
| | | { |
| | | private TreeMap<String, FeatureTypeCollector> clasificationRules; |
| | | |
| | | public FeatureClassification() |
| | | { |
| | | clasificationRules = new TreeMap<String, FeatureTypeCollector>(); |
| | | } |
| | | |
| | | public void addCollector(FeatureTypeCollector collector) |
| | | { |
| | | collector.getName(); |
| | | } |
| | | |
| | | public boolean containsKey(String typeName) |
| | | { |
| | | return clasificationRules.containsKey(typeName); |
| | | } |
| | | |
| | | public TreeMap<String, FeatureTypeCollector> getClasificationRules() |
| | | { |
| | | return clasificationRules; |
| | | } |
| | | } |
New file |
| | |
| | | package com.ximple.eofms.collector; |
| | | |
| | | import java.util.ArrayList; |
| | | |
| | | import com.ximple.eofms.util.StringUtils; |
| | | |
| | | public class FeatureTypeCollector |
| | | { |
| | | private String name; |
| | | private String description; |
| | | private String featuretypeList; |
| | | private ArrayList<String> featureTypeNameList; |
| | | |
| | | public FeatureTypeCollector() |
| | | { |
| | | } |
| | | |
| | | public String getName() |
| | | { |
| | | return name; |
| | | } |
| | | |
| | | public void setName(String name) |
| | | { |
| | | this.name = name; |
| | | } |
| | | |
| | | public String getDescription() |
| | | { |
| | | return description; |
| | | } |
| | | |
| | | public void setDescription(String description) |
| | | { |
| | | this.description = description; |
| | | } |
| | | |
| | | public String getFeaturetypeList() |
| | | { |
| | | return featuretypeList; |
| | | } |
| | | |
| | | public void setFeaturetypeList(String featuretypeList) |
| | | { |
| | | featureTypeNameList = StringUtils.split(featuretypeList, ","); |
| | | this.featuretypeList = featuretypeList; |
| | | } |
| | | } |
| | |
| | | import com.vividsolutions.jts.geom.Geometry; |
| | | import com.vividsolutions.jts.geom.GeometryFactory; |
| | | |
| | | import com.ximple.eofms.jobs.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.util.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.util.DefaultColorTable; |
| | | import com.ximple.io.dgn7.ArcElement; |
| | | import com.ximple.io.dgn7.Element; |
| | |
| | | import com.vividsolutions.jts.geom.Geometry; |
| | | import com.vividsolutions.jts.geom.GeometryFactory; |
| | | |
| | | import com.ximple.eofms.jobs.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.util.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.util.DefaultColorTable; |
| | | import com.ximple.io.dgn7.Element; |
| | | import com.ximple.io.dgn7.EllipseElement; |
| | |
| | | import com.vividsolutions.jts.geom.Geometry; |
| | | import com.vividsolutions.jts.geom.GeometryFactory; |
| | | |
| | | import com.ximple.eofms.jobs.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.util.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.util.DefaultColorTable; |
| | | import com.ximple.io.dgn7.ComplexChainElement; |
| | | import com.ximple.io.dgn7.Element; |
| | |
| | | import com.vividsolutions.jts.geom.GeometryFactory; |
| | | import com.vividsolutions.jts.geom.LineString; |
| | | |
| | | import com.ximple.eofms.jobs.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.util.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.util.DefaultColorTable; |
| | | import com.ximple.eofms.util.TWDDatumConverter; |
| | | import com.ximple.io.dgn7.ComplexChainElement; |
| | |
| | | import com.vividsolutions.jts.geom.Geometry; |
| | | import com.vividsolutions.jts.geom.GeometryFactory; |
| | | |
| | | import com.ximple.eofms.jobs.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.util.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.util.DefaultColorTable; |
| | | import com.ximple.io.dgn7.ComplexShapeElement; |
| | | import com.ximple.io.dgn7.Element; |
| | |
| | | import com.vividsolutions.jts.geom.Geometry; |
| | | import com.vividsolutions.jts.geom.GeometryFactory; |
| | | |
| | | import com.ximple.eofms.jobs.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.util.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.util.DefaultColorTable; |
| | | import com.ximple.io.dgn7.Element; |
| | | import com.ximple.io.dgn7.FrammeAttributeData; |
| | |
| | | import com.vividsolutions.jts.geom.Geometry; |
| | | import com.vividsolutions.jts.geom.GeometryFactory; |
| | | |
| | | import com.ximple.eofms.jobs.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.util.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.util.DefaultColorTable; |
| | | import com.ximple.io.dgn7.Element; |
| | | import com.ximple.io.dgn7.FrammeAttributeData; |
| | |
| | | public boolean isDispatchable(Element element); |
| | | |
| | | public Feature execute(Element element); |
| | | |
| | | void setUseLongName(boolean useLongName); |
| | | } |
| | |
| | | public class ElementDispatcher |
| | | { |
| | | private LinkedList<ElementDispatchableFilter> rules; |
| | | private boolean useLongName = false; |
| | | |
| | | public ElementDispatcher() |
| | | { |
| | |
| | | |
| | | public void addRule(ElementDispatchableFilter rule) |
| | | { |
| | | rule.setUseLongName(useLongName); |
| | | rules.add(rule); |
| | | } |
| | | |
| | | public boolean isUseLongName() |
| | | { |
| | | return useLongName; |
| | | } |
| | | |
| | | public void setUseLongName(boolean useLongName) |
| | | { |
| | | if (this.useLongName != useLongName) |
| | | { |
| | | this.useLongName = useLongName; |
| | | for (ElementDispatchableFilter filter : rules) |
| | | { |
| | | filter.setUseLongName(useLongName); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public Feature execute(Element element) |
| | | { |
| | | for (ElementDispatchableFilter rule : rules) |
| | |
| | | private int tid; |
| | | private int cid; |
| | | private CreateFeatureTypeStrategy createStrategy; |
| | | private boolean useLongName = false; |
| | | |
| | | public TypeCompIdDispatchableFilter() |
| | | { |
| | |
| | | this.createStrategy = createStrategy; |
| | | } |
| | | |
| | | public boolean isUseLongName() |
| | | { |
| | | return useLongName; |
| | | } |
| | | |
| | | public void setUseLongName(boolean useLongName) |
| | | { |
| | | this.useLongName = useLongName; |
| | | } |
| | | |
| | | //§PÂ_¬O§_²Å©M±ø¥ó |
| | | public boolean isDispatchable(Element element) |
| | |
| | | { |
| | | StringBuilder sb= new StringBuilder(); |
| | | sb.append(getName()); |
| | | sb.append("_"); |
| | | sb.append(element.getLevelIndex()); |
| | | sb.append("_"); |
| | | sb.append(element.getWeight()); |
| | | if (useLongName) |
| | | { |
| | | sb.append("_"); |
| | | sb.append(element.getLevelIndex()); |
| | | sb.append("_"); |
| | | sb.append(element.getWeight()); |
| | | } |
| | | return sb.toString(); |
| | | } |
| | | } |
| | |
| | | private int cid; |
| | | private int lid; |
| | | private CreateFeatureTypeStrategy createStrategy; |
| | | private boolean useLongName = false; |
| | | |
| | | public TypeCompLevelIdDispatchableFilter() |
| | | { |
| | |
| | | this.createStrategy = createStrategy; |
| | | } |
| | | |
| | | |
| | | public boolean isUseLongName() |
| | | { |
| | | return useLongName; |
| | | } |
| | | |
| | | public void setUseLongName(boolean useLongName) |
| | | { |
| | | this.useLongName = useLongName; |
| | | } |
| | | |
| | | public boolean isDispatchable(Element element) |
| | | { |
| | | FrammeAttributeData featureLinkage = getFeatureLinkage(element); |
| | |
| | | { |
| | | StringBuilder sb= new StringBuilder(); |
| | | sb.append(getName()); |
| | | sb.append("_"); |
| | | sb.append(element.getLevelIndex()); |
| | | sb.append("_"); |
| | | sb.append(element.getWeight()); |
| | | if (useLongName) |
| | | { |
| | | sb.append("_"); |
| | | sb.append(element.getLevelIndex()); |
| | | sb.append("_"); |
| | | sb.append(element.getWeight()); |
| | | } |
| | | return sb.toString(); |
| | | } |
| | | } |
| | |
| | | { |
| | | private int tid; |
| | | private CreateFeatureTypeStrategy createStrategy; |
| | | private boolean useLongName = false; |
| | | |
| | | public TypeIdDispatchableFilter() |
| | | { |
| | |
| | | return null; |
| | | } |
| | | |
| | | public boolean isUseLongName() |
| | | { |
| | | return useLongName; |
| | | } |
| | | |
| | | public void setUseLongName(boolean useLongName) |
| | | { |
| | | this.useLongName = useLongName; |
| | | } |
| | | |
| | | public String getFeatureTypeName(Element element) |
| | | { |
| | | StringBuilder sb= new StringBuilder(); |
| | | sb.append(getName()); |
| | | sb.append("_"); |
| | | sb.append(element.getLevelIndex()); |
| | | sb.append("_"); |
| | | sb.append(element.getWeight()); |
| | | if (useLongName) |
| | | { |
| | | sb.append("_"); |
| | | sb.append(element.getLevelIndex()); |
| | | sb.append("_"); |
| | | sb.append(element.getWeight()); |
| | | } |
| | | return sb.toString(); |
| | | } |
| | | } |
| | |
| | | |
| | | import oracle.sql.BLOB; |
| | | |
| | | import com.ximple.eofms.jobs.context.AbstractOracleJobContext; |
| | | |
| | | public abstract class AbstractOracleDatabaseJob implements Job |
| | | { |
| | | private static final String SHPDATA_DIR = "SHPDATA_DIR"; |
| | | private static final String CONFSHPFILTER = "SHPFILTER_CONF"; |
| | | private static final String JOBDATA_DIR = "JOBDATA_DIR"; |
| | | private static final String CONFELMSFILTER = "ELMSFILTER_CONF"; |
| | | private static final String SPATAILSCHEMA = "ORGSCHEMA"; |
| | | private static final String CONVERTDB = "CONVERTDB"; |
| | | private static final String CONVERTFILE = "CONVERTFILE"; |
| | |
| | | { |
| | | // The directory to scan is stored in the job map |
| | | JobDataMap dataMap = jobDetail.getJobDataMap(); |
| | | _dataPath = dataMap.getString(SHPDATA_DIR); |
| | | _filterPath = dataMap.getString(CONFSHPFILTER); |
| | | _dataPath = dataMap.getString(JOBDATA_DIR); |
| | | _filterPath = dataMap.getString(CONFELMSFILTER); |
| | | _oracleHost = dataMap.getString(ORAHOST); |
| | | _oracleInstance = dataMap.getString(ORAINST); |
| | | _oraclePort = dataMap.getString(ORAPORT); |
| | |
| | | _createDummy = dataMap.getString(CREATEDUMMY); |
| | | |
| | | Log logger = getLogger(); |
| | | logger.info("SHPDATA_DIR=" + _dataPath); |
| | | logger.info("CONFSHPFILTER=" + _filterPath); |
| | | logger.info("JOBDATA_DIR=" + _dataPath); |
| | | logger.info("CONFELMSFILTER=" + _filterPath); |
| | | logger.info("ORAHOST=" + _oracleHost); |
| | | logger.info("ORAINST=" + _oracleInstance); |
| | | logger.info("ORAPORT=" + _oraclePort); |
New file |
| | |
| | | package com.ximple.eofms.jobs; |
| | | |
| | | import java.util.Date; |
| | | import java.sql.SQLException; |
| | | import java.sql.Statement; |
| | | import java.sql.ResultSet; |
| | | import java.sql.Types; |
| | | import java.io.IOException; |
| | | import java.io.File; |
| | | import java.io.FilenameFilter; |
| | | import java.io.FileInputStream; |
| | | import java.io.FileNotFoundException; |
| | | import java.math.BigDecimal; |
| | | import java.nio.ByteBuffer; |
| | | import java.nio.ByteOrder; |
| | | import java.nio.channels.FileChannel; |
| | | |
| | | import org.apache.commons.logging.Log; |
| | | import org.apache.commons.logging.LogFactory; |
| | | import org.apache.commons.collections.OrderedMap; |
| | | import org.apache.commons.collections.OrderedMapIterator; |
| | | import org.apache.commons.collections.map.LinkedMap; |
| | | import org.quartz.JobExecutionContext; |
| | | import org.quartz.JobExecutionException; |
| | | import org.quartz.JobDetail; |
| | | import org.geotools.feature.IllegalAttributeException; |
| | | import org.geotools.feature.SchemaException; |
| | | |
| | | import com.vividsolutions.jts.geom.GeometryFactory; |
| | | |
| | | import oracle.jdbc.OracleConnection; |
| | | import oracle.jdbc.OracleResultSet; |
| | | import oracle.sql.BLOB; |
| | | import oracle.sql.ARRAY; |
| | | |
| | | import com.ximple.util.PrintfFormat; |
| | | import com.ximple.io.dgn7.Element; |
| | | import com.ximple.io.dgn7.Dgn7fileException; |
| | | import com.ximple.io.dgn7.ElementType; |
| | | import com.ximple.io.dgn7.IElementHandler; |
| | | import com.ximple.io.dgn7.ComplexElement; |
| | | import com.ximple.io.dgn7.Dgn7fileReader; |
| | | import com.ximple.io.dgn7.Lock; |
| | | import com.ximple.io.dgn7.TextElement; |
| | | import com.ximple.eofms.util.BinConverter; |
| | | import com.ximple.eofms.util.ByteArrayCompressor; |
| | | import com.ximple.eofms.util.StringUtils; |
| | | import com.ximple.eofms.jobs.context.AbstractOracleJobContext; |
| | | import com.ximple.eofms.jobs.context.FeatureDgnConvertJobContext; |
| | | import com.ximple.eofms.jobs.context.GeneralDgnConvertJobContext; |
| | | import com.ximple.eofms.jobs.context.IndexDgnConvertJobContext; |
| | | import com.ximple.eofms.jobs.context.OracleConvertShapefilesJobContext; |
| | | |
| | | public class OracleConvertDgn2OraSDOJob extends AbstractOracleDatabaseJob |
| | | { |
| | | final static Log logger = LogFactory.getLog(OracleConvertDgn2OraSDOJob.class); |
| | | |
| | | /** The Oracle driver class name */ |
| | | private static final String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver"; |
| | | |
| | | private static final int FETCHSIZE = 30; |
| | | private static final int BATCHSIZE = 25; |
| | | private static final int COMMITSIZE = 20; |
| | | |
| | | class Pair |
| | | { |
| | | Object first; |
| | | Object second; |
| | | |
| | | public Pair(Object first, Object second) |
| | | { |
| | | this.first = first; |
| | | this.second = second; |
| | | } |
| | | } |
| | | |
| | | GeometryFactory _geomFactory = new GeometryFactory(); |
| | | |
| | | public Log getLogger() |
| | | { |
| | | return logger; |
| | | } |
| | | |
| | | // OracleDataStoreFactory factory = new OracleDataStoreFactory(); |
| | | /* |
| | | Map map = new HashMap(); |
| | | map.put("host", fixture.getProperty("host")); |
| | | map.put("port", fixture.getProperty("port")); |
| | | map.put("instance", fixture.getProperty("instance")); |
| | | map.put("user", fixture.getProperty("user")); |
| | | map.put("passwd", fixture.getProperty("passwd")); |
| | | map.put("dbtype", "oracle"); |
| | | map.put("alias", fixture.getProperty("instance")); |
| | | map.put("namespace", null); |
| | | |
| | | assertTrue(factory.canProcess(map)); |
| | | |
| | | OracleDataStore store = (OracleDataStore) factory.createDataStore(map); |
| | | assertNull(store.getNameSpace()); |
| | | |
| | | map.put("schema", fixture.getProperty("user").toUpperCase()); |
| | | store = (OracleDataStore) factory.createDataStore(map); |
| | | assertNull(store.getNameSpace()); |
| | | |
| | | map.put("namespace", "topp"); |
| | | store = (OracleDataStore) factory.createDataStore(map); |
| | | assertEquals(new URI("topp"), store.getNameSpace()); |
| | | */ |
| | | |
| | | /* |
| | | FeatureWriter writer = dstore.getFeatureWriter("ORA_TEST_POINTS", Filter.INCLUDE, |
| | | Transaction.AUTO_COMMIT); |
| | | assertNotNull(writer); |
| | | |
| | | Feature feature = writer.next(); |
| | | System.out.println(feature); |
| | | feature.setAttribute(0, "Changed Feature"); |
| | | System.out.println(feature); |
| | | writer.write(); |
| | | writer.close(); |
| | | */ |
| | | |
| | | /* |
| | | Map fidGen = new HashMap(); |
| | | fidGen.put("ORA_TEST_POINTS", JDBCDataStoreConfig.FID_GEN_MANUAL_INC); |
| | | |
| | | JDBCDataStoreConfig config = JDBCDataStoreConfig.createWithSchemaNameAndFIDGenMap(schemaName, |
| | | fidGen); |
| | | |
| | | String name = "add_name"; |
| | | BigDecimal intval = new BigDecimal(70); |
| | | Point point = jtsFactory.createPoint(new Coordinate(-15.0, -25)); |
| | | Feature feature = dstore.getSchema("ORA_TEST_POINTS") |
| | | .create(new Object[] { name, intval, point }); |
| | | |
| | | FeatureStore fs = (FeatureStore) dstore.getFeatureSource("ORA_TEST_POINTS"); |
| | | fs.addFeatures(DataUtilities.collection(feature)); |
| | | */ |
| | | |
| | | protected AbstractOracleJobContext prepareJobContext(String filterPath) |
| | | { |
| | | return new OracleConvertShapefilesJobContext(filterPath); |
| | | } |
| | | |
| | | public void execute(JobExecutionContext context) throws JobExecutionException |
| | | { |
| | | // Every job has its own job detail |
| | | JobDetail jobDetail = context.getJobDetail(); |
| | | |
| | | // The name is defined in the job definition |
| | | String jobName = jobDetail.getName(); |
| | | |
| | | // Log the time the job started |
| | | logger.info(jobName + " fired at " + new Date()); |
| | | extractJobConfiguration(jobDetail); |
| | | |
| | | try |
| | | { |
| | | logger.info("-- step:clearOutputDirectory --"); |
| | | clearOutputDirectory(); |
| | | boolean bFirst = true; |
| | | if (checkConvertDB()) |
| | | { |
| | | logger.info("-- step:convertOracleDB --"); |
| | | |
| | | for (String orgSchema : _orgSchema) |
| | | { |
| | | OracleConvertShapefilesJobContext jobContext = (OracleConvertShapefilesJobContext) prepareJobContext(_filterPath); |
| | | jobContext.setConnectionInfo(_oracleHost, _oraclePort, _oracleInstance); |
| | | jobContext.setLogin(_username, _password); |
| | | jobContext.setShapeData(_dataPath); |
| | | jobContext.setConvertDB(_convertDB); |
| | | jobContext.setConvertFile(_convertFile); |
| | | jobContext.setConvertElementIn(_convertElementIn); |
| | | jobContext.setElementLogging(checkElementLogging()); |
| | | jobContext.setExecutionContext(context); |
| | | |
| | | if (bFirst) |
| | | copyConnectivity(jobContext); |
| | | else |
| | | bFirst = false; |
| | | |
| | | logger.info("----- start schema:" + orgSchema + " -----"); |
| | | exetcuteConvert(jobContext, orgSchema, _dataPath); |
| | | |
| | | //close all open filewriter instance |
| | | jobContext.closeFeatureWriter(); |
| | | } |
| | | } |
| | | |
| | | if (checkConvertFile()) |
| | | { |
| | | logger.info("-- step:convertIndexDesignFile --"); |
| | | convertIndexDesignFile(context); |
| | | logger.info("-- step:convertOtherDesignFile --"); |
| | | convertOtherDesignFile(context); |
| | | } |
| | | |
| | | if (checkConvertElementIn()) |
| | | { |
| | | logger.info("-- step:convertFeatureDesignFile --"); |
| | | convertFeatureDesignFile(context); |
| | | } |
| | | |
| | | if (checkCreateDummy()) |
| | | { |
| | | logger.info("-- step:createDummyFeatureFile --"); |
| | | createDummyFeatureFile(context); |
| | | } |
| | | } catch (SQLException e) |
| | | { |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException("Database error. " + e.getMessage(), e); |
| | | } catch (IOException ex) |
| | | { |
| | | logger.warn(ex.getMessage(), ex); |
| | | throw new JobExecutionException("IO error. " + ex.getMessage(), ex); |
| | | } |
| | | logger.info(jobName + " end at " + new Date()); |
| | | } |
| | | |
| | | /** |
| | | * Connectivity½Æ»s¤@Óª©¥»¡A¦b¬d¸ß¹q¬y¤è¦V®É¥Î¨Ó¤ñ¹ïOMS¸ê®Æ®wªº¹q¾¹³s±µ©Ê(Connectivity) |
| | | * |
| | | * @param jobContext job context |
| | | * @throws SQLException sql exception |
| | | */ |
| | | private void copyConnectivity(OracleConvertShapefilesJobContext jobContext) throws SQLException |
| | | { |
| | | OracleConnection connection = jobContext.getOracleConnection(); |
| | | Statement stmt = connection.createStatement(); |
| | | stmt.execute(OracleConvertShapefilesJobContext.TRUNCATE_CONNECTIVITY_WEBCHECK); |
| | | stmt.execute(OracleConvertShapefilesJobContext.COPY_CONNECTIVITY_TO_WEBCHECK); |
| | | } |
| | | |
| | | private void exetcuteConvert(OracleConvertShapefilesJobContext jobContext, |
| | | String querySchema, String dataPath) throws SQLException |
| | | { |
| | | int order = 0; |
| | | OrderedMap map = getBlobStorageList(jobContext.getOracleConnection(), querySchema, "SD$SPACENODES" |
| | | , null); |
| | | |
| | | logger.info("begin convert job:[" + map.size() + "]:testmode=" + _testMode); |
| | | |
| | | int total = map.size(); //spacenodes count |
| | | int step = total / 100; |
| | | int current = 0; |
| | | |
| | | //jobContext.startTransaction(); |
| | | jobContext.setCurrentSchema(querySchema); |
| | | jobContext.getExecutionContext().put("ConvertDgn2ShpJobProgress", 0); |
| | | for (OrderedMapIterator it = map.orderedMapIterator(); it.hasNext();) |
| | | { |
| | | it.next(); |
| | | |
| | | Pair pair = (Pair) it.getValue(); |
| | | String tableSrc = (String) pair.first; |
| | | |
| | | logger.info("begin convert:[" + order + "]-" + tableSrc); |
| | | queryIgsetElement(jobContext, querySchema, tableSrc); |
| | | |
| | | order++; |
| | | |
| | | if (_testMode) |
| | | { |
| | | if ((_testCount < 0) || (order >= _testCount)) |
| | | break; |
| | | } |
| | | |
| | | if ((order % COMMITSIZE) == 0) |
| | | { |
| | | // OracleConnection connection = jobContext.getOracleConnection(); |
| | | // connection.commitTransaction(); |
| | | jobContext.commitTransaction(); |
| | | //jobContext.startTransaction(); |
| | | System.gc(); |
| | | } |
| | | |
| | | int now = order % step; |
| | | if (now != current) |
| | | { |
| | | current = now; |
| | | jobContext.getExecutionContext().put("ConvertDgn2ShpJobProgress", current); |
| | | |
| | | } |
| | | } |
| | | jobContext.getExecutionContext().put("ConvertDgn2ShpJobProgress", 100); |
| | | |
| | | jobContext.commitTransaction(); |
| | | |
| | | logger.info("end convert job:[" + order + "]"); |
| | | System.gc(); |
| | | } |
| | | |
| | | protected OrderedMap getBlobStorageList(OracleConnection connection, String schemaSrc, String tableSrc, |
| | | OrderedMap orderedMap) throws SQLException |
| | | { |
| | | if (orderedMap == null) |
| | | orderedMap = new LinkedMap(99); |
| | | String fetchStmtFmt = "SELECT SNID, SPACETABLE FROM \"%s\".\"%s\""; |
| | | PrintfFormat spf = new PrintfFormat(fetchStmtFmt); |
| | | String fetchStmt = spf.sprintf(new Object[]{schemaSrc, tableSrc}); |
| | | Statement stmt = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); |
| | | ResultSet rs = null; |
| | | |
| | | stmt.setFetchSize(FETCHSIZE); |
| | | |
| | | try |
| | | { |
| | | rs = stmt.executeQuery(fetchStmt); |
| | | |
| | | while (rs.next()) |
| | | { |
| | | int size = rs.getMetaData().getColumnCount(); |
| | | Object[] values = new Object[size]; |
| | | |
| | | for (int i = 0; i < size; i++) |
| | | { |
| | | values[i] = rs.getObject(i + 1); |
| | | } |
| | | |
| | | Integer key = ((BigDecimal) values[0]).intValue(); |
| | | String name = (String) values[1]; |
| | | |
| | | Pair pair = (Pair) orderedMap.get(key); |
| | | if (pair == null) |
| | | orderedMap.put(key, new Pair(name, null)); |
| | | else |
| | | pair.first = name; |
| | | } |
| | | } catch (SQLException e) |
| | | { |
| | | logger.error(e.toString(), e); |
| | | logger.error("stmt=" + fetchStmt); |
| | | throw e; |
| | | } finally |
| | | { |
| | | if (rs != null) rs.close(); |
| | | stmt.close(); |
| | | } |
| | | |
| | | return orderedMap; |
| | | } |
| | | |
| | | protected OrderedMap getRawFormatStorageList(OracleConnection connection, String schemaSrc, String tableSrc, |
| | | OrderedMap orderedMap) throws SQLException |
| | | { |
| | | if (orderedMap == null) |
| | | orderedMap = new LinkedMap(99); |
| | | String fetchStmtFmt = "SELECT RNID, SPACETABLE FROM \"%s\".\"%s\""; |
| | | PrintfFormat spf = new PrintfFormat(fetchStmtFmt); |
| | | String fetchStmt = spf.sprintf(new Object[]{schemaSrc, tableSrc}); |
| | | Statement stmt = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); |
| | | |
| | | stmt.setFetchSize(FETCHSIZE); |
| | | |
| | | ResultSet rs = stmt.executeQuery(fetchStmt); |
| | | |
| | | while (rs.next()) |
| | | { |
| | | int size = rs.getMetaData().getColumnCount(); |
| | | Object[] values = new Object[size]; |
| | | |
| | | for (int i = 0; i < size; i++) |
| | | { |
| | | values[i] = rs.getObject(i + 1); |
| | | } |
| | | |
| | | Integer key = ((BigDecimal) values[0]).intValue(); |
| | | String name = (String) values[1]; |
| | | |
| | | Pair pair = (Pair) orderedMap.get(key); |
| | | if (pair == null) |
| | | orderedMap.put(key, new Pair(null, name)); |
| | | else |
| | | pair.second = name; |
| | | } |
| | | |
| | | rs.close(); |
| | | stmt.close(); |
| | | |
| | | return orderedMap; |
| | | } |
| | | |
| | | protected void queryIgsetElement(OracleConvertShapefilesJobContext jobContext, |
| | | String srcschema, String srctable) throws SQLException |
| | | { |
| | | OracleConnection connection = jobContext.getOracleConnection(); |
| | | String fetchSrcStmtFmt = "SELECT IGDSELM FROM \"%s\".\"%s\" ORDER BY ROWID"; |
| | | PrintfFormat spf = new PrintfFormat(fetchSrcStmtFmt); |
| | | String fetchSrcStmt = spf.sprintf(new Object[]{srcschema, srctable}); |
| | | Statement stmtSrc = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); |
| | | |
| | | stmtSrc.setFetchSize(FETCHSIZE); |
| | | |
| | | ResultSet rsSrc = stmtSrc.executeQuery(fetchSrcStmt); |
| | | |
| | | while (rsSrc.next()) |
| | | { |
| | | byte[] raw = null; |
| | | |
| | | if (rsSrc.getMetaData().getColumnType(1) == Types.BLOB) |
| | | { |
| | | BLOB blob = (BLOB) rsSrc.getBlob(1); |
| | | |
| | | raw = getBytesFromBLOB(blob); |
| | | blob.close(); |
| | | } else |
| | | { |
| | | raw = rsSrc.getBytes(1); |
| | | } |
| | | |
| | | try |
| | | { |
| | | Element element = fetchBinaryElement(raw); |
| | | jobContext.putFeatureCollection(element); |
| | | } catch (Dgn7fileException e) |
| | | { |
| | | logger.warn("Dgn7Exception", e); |
| | | } |
| | | } |
| | | |
| | | rsSrc.close(); |
| | | stmtSrc.close(); |
| | | } |
| | | |
| | | protected void queryRawElement(OracleConvertShapefilesJobContext jobContext, |
| | | String srcschema, String srctable) throws SQLException |
| | | { |
| | | OracleConnection connection = jobContext.getOracleConnection(); |
| | | String fetchDestStmtFmt = "SELECT ELEMENT FROM \"%s\".\"%s\" ORDER BY ROWID"; |
| | | PrintfFormat spf = new PrintfFormat(fetchDestStmtFmt); |
| | | String fetchDestStmt = spf.sprintf(new Object[]{srcschema, srctable}); |
| | | Statement stmtDest = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); |
| | | |
| | | stmtDest.setFetchSize(FETCHSIZE); |
| | | |
| | | ResultSet rsDest = stmtDest.executeQuery(fetchDestStmt); |
| | | |
| | | while (rsDest.next()) |
| | | { |
| | | ARRAY rawsValue = ((OracleResultSet) rsDest).getARRAY(1); |
| | | long[] rawData = rawsValue.getLongArray(); |
| | | byte[] comparessedValue; |
| | | |
| | | /* |
| | | if (dataMode == TransferTask.DataMode.Normal) |
| | | { |
| | | comparessedValue = BinConverter.unmarshalByteArray(rawData, true); |
| | | } else |
| | | { |
| | | comparessedValue = BinConverter.unmarshalCompactByteArray(rawData); |
| | | } |
| | | */ |
| | | comparessedValue = BinConverter.unmarshalByteArray(rawData, true); |
| | | |
| | | byte[] rawDest = ByteArrayCompressor.decompressByteArray(comparessedValue); |
| | | |
| | | |
| | | try |
| | | { |
| | | Element element = fetchBinaryElement(rawDest); |
| | | jobContext.putFeatureCollection(element); |
| | | } catch (Dgn7fileException e) |
| | | { |
| | | logger.warn("Dgn7Exception:" + e.getMessage(), e); |
| | | } |
| | | } |
| | | |
| | | rsDest.close(); |
| | | stmtDest.close(); |
| | | } |
| | | |
| | | // Binary to Element |
| | | private Element fetchBinaryElement(byte[] raws) throws Dgn7fileException |
| | | { |
| | | ByteBuffer buffer = ByteBuffer.wrap(raws); |
| | | buffer.order(ByteOrder.LITTLE_ENDIAN); |
| | | short signature = buffer.getShort(); |
| | | |
| | | // byte type = (byte) (buffer.get() & 0x7f); |
| | | byte type = (byte) ((signature >>> 8) & 0x007f); |
| | | |
| | | // silly Bentley say contentLength is in 2-byte words |
| | | // and ByteByffer uses raws. |
| | | // track the record location |
| | | int elementLength = (buffer.getShort() * 2) + 4; |
| | | ElementType recordType = ElementType.forID(type); |
| | | IElementHandler handler; |
| | | |
| | | handler = recordType.getElementHandler(); |
| | | |
| | | Element dgnElement = (Element) handler.read(buffer, signature, elementLength); |
| | | if (recordType.isComplexElement() && (elementLength < raws.length)) |
| | | { |
| | | int offset = elementLength; |
| | | while (offset < (raws.length - 4)) |
| | | { |
| | | buffer.position(offset); |
| | | signature = buffer.getShort(); |
| | | type = (byte) ((signature >>> 8) & 0x007f); |
| | | elementLength = (buffer.getShort() * 2) + 4; |
| | | if (raws.length < (offset + elementLength)) |
| | | { |
| | | System.out.println("Length not match:" + offset + ":" + buffer.position() + ":" + buffer.limit()); |
| | | break; |
| | | } |
| | | recordType = ElementType.forID(type); |
| | | handler = recordType.getElementHandler(); |
| | | if (handler != null) |
| | | { |
| | | Element subElement = (Element) handler.read(buffer, signature, elementLength); |
| | | ((ComplexElement) dgnElement).add(subElement); |
| | | offset += elementLength; |
| | | } else |
| | | { |
| | | byte[] remain = new byte[buffer.remaining()]; |
| | | System.arraycopy(raws, offset, remain, 0, buffer.remaining()); |
| | | for (int i = 0; i < remain.length; i++) |
| | | { |
| | | if (remain[i] != 0) |
| | | { |
| | | logger.info("fetch element has some error. index=" + (offset + i) + ":value=" + remain[i]); |
| | | System.out.println("fetch element has some error. index=" + (offset + i) + ":value=" + remain[i]); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return dgnElement; |
| | | } |
| | | |
| | | /** |
| | | * °õ¦æÂà´«¯Á¤Þ¹ÏÀɪº¤u§@ |
| | | * |
| | | * @param context ¤u§@°õ¦æÀô¹Ò |
| | | * @throws org.quartz.JobExecutionException exception |
| | | */ |
| | | private void convertIndexDesignFile(JobExecutionContext context) throws JobExecutionException |
| | | { |
| | | File indexDir = new File(getDataPath(), "index"); |
| | | if (!indexDir.exists()) |
| | | { |
| | | logger.info("index dir=" + indexDir + " not exist."); |
| | | return; |
| | | } |
| | | |
| | | if (!indexDir.isDirectory()) |
| | | { |
| | | logger.info("index dir=" + indexDir + " is not a directory."); |
| | | } |
| | | |
| | | File[] dgnFiles = indexDir.listFiles(new FilenameFilter() |
| | | { |
| | | public boolean accept(File dir, String name) |
| | | { |
| | | return name.toLowerCase().endsWith(".dgn"); |
| | | } |
| | | }); |
| | | |
| | | for (File dgnFile : dgnFiles) |
| | | { |
| | | IndexDgnConvertJobContext convertContext = new IndexDgnConvertJobContext(getDataPath()); |
| | | logger.debug("--- start dgnfile-" + dgnFile.toString() + " ---"); |
| | | try |
| | | { |
| | | convertContext.setExecutionContext(context); |
| | | String dgnPaths[] = StringUtils.splitToArray(dgnFile.toString(), File.separator); |
| | | convertContext.setFilename(dgnPaths[dgnPaths.length - 1]); |
| | | |
| | | FileInputStream fs = new FileInputStream(dgnFile); |
| | | FileChannel fc = fs.getChannel(); |
| | | Dgn7fileReader reader = new Dgn7fileReader(fc, new Lock()); |
| | | convertContext.setReader(reader); |
| | | |
| | | scanIndexDgnElement(convertContext); |
| | | |
| | | convertContext.commitTransaction(); |
| | | convertContext.closeFeatureWriter(); |
| | | System.gc(); |
| | | } catch (FileNotFoundException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (Dgn7fileException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (IOException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (IllegalAttributeException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (SchemaException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } |
| | | } |
| | | } |
| | | |
| | | protected void scanIndexDgnElement(IndexDgnConvertJobContext convertContext) |
| | | throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException |
| | | { |
| | | Dgn7fileReader reader = convertContext.getReader(); |
| | | int count = 0; |
| | | Element lastComplex = null; |
| | | while (reader.hasNext()) |
| | | { |
| | | Dgn7fileReader.Record record = reader.nextElement(); |
| | | if (record.element() != null) |
| | | { |
| | | Element element = (Element) record.element(); |
| | | ElementType type = element.getElementType(); |
| | | |
| | | if ((!type.isComplexElement()) && (!element.isComponentElement())) |
| | | { |
| | | lastComplex = null; |
| | | |
| | | processIndexElement(element, convertContext); |
| | | } else if (element.isComponentElement()) |
| | | { |
| | | if (lastComplex != null) |
| | | { |
| | | ((ComplexElement) lastComplex).add(element); |
| | | } |
| | | } else if (type.isComplexElement()) |
| | | { |
| | | if (lastComplex == null) |
| | | { |
| | | lastComplex = element; |
| | | } else |
| | | { |
| | | processIndexElement(element, convertContext); |
| | | lastComplex = element; |
| | | } |
| | | } |
| | | } |
| | | count++; |
| | | } |
| | | |
| | | logger.debug("ElementRecord Count=" + count); |
| | | } |
| | | |
| | | private void processIndexElement(Element element, IndexDgnConvertJobContext convertContext) throws IllegalAttributeException, SchemaException |
| | | { |
| | | if (element instanceof TextElement) |
| | | { |
| | | convertContext.putFeatureCollection(element); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * °õ¦æÂà´«¨ä¥L³]p¹ÏÀɪº¤u§@ |
| | | * |
| | | * @param context jobContext |
| | | * @throws org.quartz.JobExecutionException exception |
| | | */ |
| | | private void convertOtherDesignFile(JobExecutionContext context) throws JobExecutionException |
| | | { |
| | | File otherDir = new File(getDataPath(), "other"); |
| | | if (!otherDir.exists()) |
| | | { |
| | | logger.info("other dir=" + otherDir + " not exist."); |
| | | return; |
| | | } |
| | | |
| | | if (!otherDir.isDirectory()) |
| | | { |
| | | logger.info("other dir=" + otherDir + " is not a directory."); |
| | | } |
| | | |
| | | File[] dgnFiles = otherDir.listFiles(new FilenameFilter() |
| | | { |
| | | public boolean accept(File dir, String name) |
| | | { |
| | | return name.toLowerCase().endsWith(".dgn"); |
| | | } |
| | | }); |
| | | |
| | | for (File dgnFile : dgnFiles) |
| | | { |
| | | GeneralDgnConvertJobContext convertContext = new GeneralDgnConvertJobContext(getDataPath()); |
| | | logger.info("--- start dgnfile-" + dgnFile.toString() + " ---"); |
| | | try |
| | | { |
| | | convertContext.setExecutionContext(context); |
| | | String dgnPaths[] = StringUtils.splitToArray(dgnFile.toString(), File.separator); |
| | | convertContext.setFilename(dgnPaths[dgnPaths.length - 1]); |
| | | |
| | | FileInputStream fs = new FileInputStream(dgnFile); |
| | | FileChannel fc = fs.getChannel(); |
| | | Dgn7fileReader reader = new Dgn7fileReader(fc, new Lock()); |
| | | convertContext.setReader(reader); |
| | | |
| | | scanOtherDgnElement(convertContext); |
| | | |
| | | convertContext.commitTransaction(); |
| | | convertContext.closeFeatureWriter(); |
| | | System.gc(); |
| | | } catch (FileNotFoundException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (Dgn7fileException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (IOException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (IllegalAttributeException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (SchemaException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public void scanOtherDgnElement(GeneralDgnConvertJobContext convertContext) |
| | | throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException |
| | | { |
| | | Dgn7fileReader reader = convertContext.getReader(); |
| | | int count = 0; |
| | | Element lastComplex = null; |
| | | while (reader.hasNext()) |
| | | { |
| | | Dgn7fileReader.Record record = reader.nextElement(); |
| | | if (record.element() != null) |
| | | { |
| | | Element element = (Element) record.element(); |
| | | ElementType type = element.getElementType(); |
| | | |
| | | if ((!type.isComplexElement()) && (!element.isComponentElement())) |
| | | { |
| | | lastComplex = null; |
| | | |
| | | processOtherElement(element, convertContext); |
| | | } else if (element.isComponentElement()) |
| | | { |
| | | if (lastComplex != null) |
| | | { |
| | | ((ComplexElement) lastComplex).add(element); |
| | | } |
| | | } else if (type.isComplexElement()) |
| | | { |
| | | if (lastComplex == null) |
| | | { |
| | | lastComplex = element; |
| | | } else |
| | | { |
| | | processOtherElement(element, convertContext); |
| | | lastComplex = element; |
| | | } |
| | | } |
| | | } |
| | | count++; |
| | | } |
| | | |
| | | logger.debug("ElementRecord Count=" + count); |
| | | } |
| | | |
| | | private void processOtherElement(Element element, GeneralDgnConvertJobContext convertContext) |
| | | throws IllegalAttributeException, SchemaException |
| | | { |
| | | convertContext.putFeatureCollection(element); |
| | | } |
| | | |
| | | private void clearOutputDirectory() |
| | | { |
| | | File outDataPath = new File(getDataPath(), OracleConvertShapefilesJobContext.SHPOUTPATH); |
| | | if (outDataPath.exists() && outDataPath.isDirectory()) |
| | | { |
| | | deleteFilesInPath(outDataPath); |
| | | } |
| | | outDataPath = new File(getDataPath(), IndexDgnConvertJobContext.SHPOUTPATH); |
| | | if (outDataPath.exists() && outDataPath.isDirectory()) |
| | | { |
| | | deleteFilesInPath(outDataPath); |
| | | } |
| | | outDataPath = new File(getDataPath(), GeneralDgnConvertJobContext.SHPOUTPATH); |
| | | if (outDataPath.exists() && outDataPath.isDirectory()) |
| | | { |
| | | deleteFilesInPath(outDataPath); |
| | | } |
| | | } |
| | | |
| | | private void deleteFilesInPath(File outDataPath) |
| | | { |
| | | deleteFilesInPath(outDataPath, true); |
| | | } |
| | | |
| | | private void deleteFilesInPath(File outDataPath, boolean removeSubDir) |
| | | { |
| | | if (!outDataPath.isDirectory()) |
| | | { |
| | | return; |
| | | } |
| | | File[] files = outDataPath.listFiles(); |
| | | for (File file : files) |
| | | { |
| | | if (file.isFile()) |
| | | { |
| | | if (!file.delete()) |
| | | { |
| | | logger.info("Cannot delete file-" + file.toString()); |
| | | } |
| | | } else if (file.isDirectory()) |
| | | { |
| | | deleteFilesInPath(file, removeSubDir); |
| | | if (removeSubDir) |
| | | { |
| | | if (file.delete()) |
| | | { |
| | | logger.info("Cannot delete dir-" + file.toString()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void convertFeatureDesignFile(JobExecutionContext context) throws JobExecutionException |
| | | { |
| | | File elminDir = new File(getDataPath(), "elmin"); |
| | | if (!elminDir.exists()) |
| | | { |
| | | logger.info("elmin dir=" + elminDir + " not exist."); |
| | | return; |
| | | } |
| | | |
| | | if (!elminDir.isDirectory()) |
| | | { |
| | | logger.info("elmin dir=" + elminDir + " is not a directory."); |
| | | } |
| | | |
| | | File[] dgnFiles = elminDir.listFiles(new FilenameFilter() |
| | | { |
| | | public boolean accept(File dir, String name) |
| | | { |
| | | return name.toLowerCase().endsWith(".dgn"); |
| | | } |
| | | }); |
| | | |
| | | for (File dgnFile : dgnFiles) |
| | | { |
| | | FeatureDgnConvertJobContext convertContext = new FeatureDgnConvertJobContext(getDataPath(), _filterPath); |
| | | logger.info("--- start dgnfile-" + dgnFile.toString() + " ---"); |
| | | try |
| | | { |
| | | convertContext.setExecutionContext(context); |
| | | String dgnPaths[] = StringUtils.splitToArray(dgnFile.toString(), File.separator); |
| | | convertContext.setFilename(dgnPaths[dgnPaths.length - 1]); |
| | | |
| | | FileInputStream fs = new FileInputStream(dgnFile); |
| | | FileChannel fc = fs.getChannel(); |
| | | Dgn7fileReader reader = new Dgn7fileReader(fc, new Lock()); |
| | | convertContext.setReader(reader); |
| | | |
| | | scanFeatureDgnElement(convertContext); |
| | | |
| | | convertContext.commitTransaction(); |
| | | convertContext.closeFeatureWriter(); |
| | | System.gc(); |
| | | } catch (FileNotFoundException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (Dgn7fileException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (IOException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (IllegalAttributeException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (SchemaException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public void scanFeatureDgnElement(FeatureDgnConvertJobContext convertContext) |
| | | throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException |
| | | { |
| | | Dgn7fileReader reader = convertContext.getReader(); |
| | | int count = 0; |
| | | Element lastComplex = null; |
| | | while (reader.hasNext()) |
| | | { |
| | | Dgn7fileReader.Record record = reader.nextElement(); |
| | | if (record.element() != null) |
| | | { |
| | | Element element = (Element) record.element(); |
| | | ElementType type = element.getElementType(); |
| | | |
| | | if ((!type.isComplexElement()) && (!element.isComponentElement())) |
| | | { |
| | | lastComplex = null; |
| | | |
| | | processFeatureElement(element, convertContext); |
| | | } else if (element.isComponentElement()) |
| | | { |
| | | if (lastComplex != null) |
| | | { |
| | | ((ComplexElement) lastComplex).add(element); |
| | | } |
| | | } else if (type.isComplexElement()) |
| | | { |
| | | if (lastComplex == null) |
| | | { |
| | | lastComplex = element; |
| | | } else |
| | | { |
| | | processFeatureElement(element, convertContext); |
| | | lastComplex = element; |
| | | } |
| | | } |
| | | } |
| | | count++; |
| | | } |
| | | |
| | | logger.debug("ElementRecord Count=" + count); |
| | | } |
| | | |
| | | private void processFeatureElement(Element element, FeatureDgnConvertJobContext convertContext) |
| | | throws IllegalAttributeException, SchemaException |
| | | { |
| | | convertContext.putFeatureCollection(element); |
| | | } |
| | | |
| | | private void createDummyFeatureFile(JobExecutionContext context) throws JobExecutionException |
| | | { |
| | | /* |
| | | DummyFeatureConvertJobContext convertContext = new DummyFeatureConvertJobContext(getDataPath(), _filterPath); |
| | | try { |
| | | convertContext.startTransaction(); |
| | | convertContext.commitTransaction(); |
| | | convertContext.closeFeatureWriter(); |
| | | } catch (IOException e) |
| | | { |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } |
| | | */ |
| | | } |
| | | } |
New file |
| | |
| | | package com.ximple.eofms.jobs; |
| | | |
| | | import java.util.Date; |
| | | import java.sql.SQLException; |
| | | import java.sql.Statement; |
| | | import java.sql.ResultSet; |
| | | import java.sql.Types; |
| | | import java.io.IOException; |
| | | import java.io.File; |
| | | import java.io.FilenameFilter; |
| | | import java.io.FileInputStream; |
| | | import java.io.FileNotFoundException; |
| | | import java.math.BigDecimal; |
| | | import java.nio.ByteBuffer; |
| | | import java.nio.ByteOrder; |
| | | import java.nio.channels.FileChannel; |
| | | |
| | | import org.apache.commons.logging.Log; |
| | | import org.apache.commons.logging.LogFactory; |
| | | import org.apache.commons.collections.OrderedMap; |
| | | import org.apache.commons.collections.OrderedMapIterator; |
| | | import org.apache.commons.collections.map.LinkedMap; |
| | | import org.quartz.JobExecutionContext; |
| | | import org.quartz.JobExecutionException; |
| | | import org.quartz.JobDetail; |
| | | import org.quartz.JobDataMap; |
| | | import org.geotools.feature.IllegalAttributeException; |
| | | import org.geotools.feature.SchemaException; |
| | | |
| | | import com.vividsolutions.jts.geom.GeometryFactory; |
| | | |
| | | import oracle.jdbc.OracleConnection; |
| | | import oracle.jdbc.OracleResultSet; |
| | | import oracle.sql.BLOB; |
| | | import oracle.sql.ARRAY; |
| | | |
| | | import com.ximple.util.PrintfFormat; |
| | | import com.ximple.io.dgn7.Element; |
| | | import com.ximple.io.dgn7.Dgn7fileException; |
| | | import com.ximple.io.dgn7.ElementType; |
| | | import com.ximple.io.dgn7.IElementHandler; |
| | | import com.ximple.io.dgn7.ComplexElement; |
| | | import com.ximple.io.dgn7.Dgn7fileReader; |
| | | import com.ximple.io.dgn7.Lock; |
| | | import com.ximple.io.dgn7.TextElement; |
| | | import com.ximple.eofms.util.BinConverter; |
| | | import com.ximple.eofms.util.ByteArrayCompressor; |
| | | import com.ximple.eofms.util.StringUtils; |
| | | import com.ximple.eofms.jobs.context.AbstractOracleJobContext; |
| | | import com.ximple.eofms.jobs.context.FeatureDgnConvertJobContext; |
| | | import com.ximple.eofms.jobs.context.GeneralDgnConvertJobContext; |
| | | import com.ximple.eofms.jobs.context.IndexDgnConvertJobContext; |
| | | import com.ximple.eofms.jobs.context.OracleConvertShapefilesJobContext; |
| | | |
| | | public class OracleConvertDgn2PostGISJob extends AbstractOracleDatabaseJob |
| | | { |
| | | final static Log logger = LogFactory.getLog(OracleConvertDgn2PostGISJob.class); |
| | | |
| | | private static final String PGHOST = "PGHOST"; |
| | | private static final String PGDDATBASE = "PGDDATBASE"; |
| | | private static final String PGPORT = "PGPORT"; |
| | | private static final String PGSCHEMA = "PGSCHEMA"; |
| | | private static final String PGUSER = "PGUSER"; |
| | | private static final String PGPASS = " PGPASS"; |
| | | private static final String USEWKB = "USEWKB"; |
| | | |
| | | private static final int FETCHSIZE = 30; |
| | | private static final int BATCHSIZE = 25; |
| | | private static final int COMMITSIZE = 20; |
| | | |
| | | class Pair |
| | | { |
| | | Object first; |
| | | Object second; |
| | | |
| | | public Pair(Object first, Object second) |
| | | { |
| | | this.first = first; |
| | | this.second = second; |
| | | } |
| | | } |
| | | |
| | | GeometryFactory _geomFactory = new GeometryFactory(); |
| | | protected String _pgHost; |
| | | protected String _pgDatabase; |
| | | protected String _pgPort; |
| | | protected String _pgSchema; |
| | | protected String _pgUsername; |
| | | protected String _pgPassword; |
| | | protected String _pgUseWKB; |
| | | |
| | | // static PostgisDataStoreFactory factory = new PostgisDataStoreFactory(); |
| | | /* |
| | | f = PostgisTests.newFixture(); |
| | | remote = new HashMap(); |
| | | remote.put("dbtype", "postgis"); |
| | | remote.put("charset", ""); |
| | | remote.put("host", f.host); |
| | | remote.put("port", f.port); |
| | | remote.put("database", f.database); |
| | | remote.put("user", f.user); |
| | | remote.put("passwd", f.password); |
| | | remote.put("namespace", f.namespace); |
| | | */ |
| | | /* |
| | | PostgisDataStore pg = new PostgisDataStore(pool, f.schema, getName(), |
| | | PostgisDataStore.OPTIMIZE_SQL); |
| | | pg.setWKBEnabled(WKB_ENABLED); |
| | | pg.setEstimatedExtent(true); |
| | | pg.setFIDMapper("road", new TypedFIDMapper(new BasicFIDMapper("fid", 255, false), "road")); |
| | | pg.setFIDMapper("river", new TypedFIDMapper(new BasicFIDMapper("fid", 255, false), "river")); |
| | | pg.setFIDMapper("testset", |
| | | new TypedFIDMapper(new BasicFIDMapper("gid", 255, true), "testset")); |
| | | |
| | | */ |
| | | /* |
| | | Transaction transaction = new DefaultTransaction("attemptWriteFW"); |
| | | FeatureWriter writer = ds.getFeatureWriter(table, transaction); |
| | | Feature feature; |
| | | |
| | | while (writer.hasNext()) { |
| | | feature = (Feature) writer.next(); |
| | | } |
| | | |
| | | feature = (Feature) writer.next(); |
| | | feature.setAttribute(0, "test"); |
| | | writer.write(); |
| | | |
| | | String id = feature.getID(); |
| | | transaction.commit(); |
| | | transaction.close(); |
| | | |
| | | */ |
| | | |
| | | public Log getLogger() |
| | | { |
| | | return logger; |
| | | } |
| | | |
| | | protected AbstractOracleJobContext prepareJobContext(String filterPath) |
| | | { |
| | | return new OracleConvertShapefilesJobContext(filterPath); |
| | | } |
| | | |
| | | protected void extractJobConfiguration(JobDetail jobDetail) throws JobExecutionException |
| | | { |
| | | super.extractJobConfiguration(jobDetail); |
| | | JobDataMap dataMap = jobDetail.getJobDataMap(); |
| | | _pgHost = dataMap.getString(PGHOST); |
| | | _pgDatabase = dataMap.getString(PGDDATBASE); |
| | | _pgPort = dataMap.getString(PGPORT); |
| | | _pgSchema = dataMap.getString(PGSCHEMA); |
| | | _pgUsername = dataMap.getString(PGUSER); |
| | | _pgPassword = dataMap.getString(PGPASS); |
| | | _pgUseWKB = dataMap.getString(USEWKB); |
| | | |
| | | Log logger = getLogger(); |
| | | logger.info("PGHOST=" + _pgHost); |
| | | logger.info("PGDDATBASE=" + _pgDatabase); |
| | | logger.info("PGPORT=" + _pgPort); |
| | | logger.info("PGSCHEMA=" + _pgSchema); |
| | | logger.info("PGUSER=" + _pgUsername); |
| | | logger.info("PGPASS=" + _pgPassword); |
| | | logger.info("USEWKB=" + _pgUseWKB); |
| | | |
| | | if (_pgHost == null) |
| | | { |
| | | throw new JobExecutionException("Unknown PostGIS host."); |
| | | } |
| | | if (_pgDatabase == null) |
| | | { |
| | | throw new JobExecutionException("Unknown PostGIS database."); |
| | | } |
| | | if (_pgPort == null) |
| | | { |
| | | throw new JobExecutionException("Unknown PostGIS port."); |
| | | } |
| | | if (_pgSchema == null) |
| | | { |
| | | throw new JobExecutionException("Unknown PostGIS schema."); |
| | | } |
| | | if (_pgUsername == null) |
| | | { |
| | | throw new JobExecutionException("Unknown PostGIS username."); |
| | | } |
| | | if (_pgPassword == null) |
| | | { |
| | | throw new JobExecutionException("Unknown PostGIS password."); |
| | | } |
| | | } |
| | | |
| | | public void execute(JobExecutionContext context) throws JobExecutionException |
| | | { |
| | | // Every job has its own job detail |
| | | JobDetail jobDetail = context.getJobDetail(); |
| | | |
| | | // The name is defined in the job definition |
| | | String jobName = jobDetail.getName(); |
| | | |
| | | // Log the time the job started |
| | | logger.info(jobName + " fired at " + new Date()); |
| | | extractJobConfiguration(jobDetail); |
| | | |
| | | try |
| | | { |
| | | logger.info("-- step:clearOutputDirectory --"); |
| | | clearOutputDirectory(); |
| | | boolean bFirst = true; |
| | | if (checkConvertDB()) |
| | | { |
| | | logger.info("-- step:convertOracleDB --"); |
| | | |
| | | for (String orgSchema : _orgSchema) |
| | | { |
| | | OracleConvertShapefilesJobContext jobContext = (OracleConvertShapefilesJobContext) prepareJobContext(_filterPath); |
| | | jobContext.setConnectionInfo(_oracleHost, _oraclePort, _oracleInstance); |
| | | jobContext.setLogin(_username, _password); |
| | | jobContext.setShapeData(_dataPath); |
| | | jobContext.setConvertDB(_convertDB); |
| | | jobContext.setConvertFile(_convertFile); |
| | | jobContext.setConvertElementIn(_convertElementIn); |
| | | jobContext.setElementLogging(checkElementLogging()); |
| | | jobContext.setExecutionContext(context); |
| | | |
| | | if (bFirst) |
| | | copyConnectivity(jobContext); |
| | | else |
| | | bFirst = false; |
| | | |
| | | logger.info("----- start schema:" + orgSchema + " -----"); |
| | | exetcuteConvert(jobContext, orgSchema, _dataPath); |
| | | |
| | | //close all open filewriter instance |
| | | jobContext.closeFeatureWriter(); |
| | | } |
| | | } |
| | | |
| | | if (checkConvertFile()) |
| | | { |
| | | logger.info("-- step:convertIndexDesignFile --"); |
| | | convertIndexDesignFile(context); |
| | | logger.info("-- step:convertOtherDesignFile --"); |
| | | convertOtherDesignFile(context); |
| | | } |
| | | |
| | | if (checkConvertElementIn()) |
| | | { |
| | | logger.info("-- step:convertFeatureDesignFile --"); |
| | | convertFeatureDesignFile(context); |
| | | } |
| | | |
| | | if (checkCreateDummy()) |
| | | { |
| | | logger.info("-- step:createDummyFeatureFile --"); |
| | | createDummyFeatureFile(context); |
| | | } |
| | | } catch (SQLException e) |
| | | { |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException("Database error. " + e.getMessage(), e); |
| | | } catch (IOException ex) |
| | | { |
| | | logger.warn(ex.getMessage(), ex); |
| | | throw new JobExecutionException("IO error. " + ex.getMessage(), ex); |
| | | } |
| | | logger.info(jobName + " end at " + new Date()); |
| | | } |
| | | |
| | | /** |
| | | * Connectivity½Æ»s¤@Óª©¥»¡A¦b¬d¸ß¹q¬y¤è¦V®É¥Î¨Ó¤ñ¹ïOMS¸ê®Æ®wªº¹q¾¹³s±µ©Ê(Connectivity) |
| | | * |
| | | * @param jobContext job context |
| | | * @throws SQLException sql exception |
| | | */ |
| | | private void copyConnectivity(OracleConvertShapefilesJobContext jobContext) throws SQLException |
| | | { |
| | | OracleConnection connection = jobContext.getOracleConnection(); |
| | | Statement stmt = connection.createStatement(); |
| | | stmt.execute(OracleConvertShapefilesJobContext.TRUNCATE_CONNECTIVITY_WEBCHECK); |
| | | stmt.execute(OracleConvertShapefilesJobContext.COPY_CONNECTIVITY_TO_WEBCHECK); |
| | | } |
| | | |
| | | private void exetcuteConvert(OracleConvertShapefilesJobContext jobContext, |
| | | String querySchema, String dataPath) throws SQLException |
| | | { |
| | | int order = 0; |
| | | OrderedMap map = getBlobStorageList(jobContext.getOracleConnection(), querySchema, "SD$SPACENODES" |
| | | , null); |
| | | |
| | | logger.info("begin convert job:[" + map.size() + "]:testmode=" + _testMode); |
| | | |
| | | int total = map.size(); //spacenodes count |
| | | int step = total / 100; |
| | | int current = 0; |
| | | |
| | | //jobContext.startTransaction(); |
| | | jobContext.setCurrentSchema(querySchema); |
| | | jobContext.getExecutionContext().put("ConvertDgn2PostGISJobProgress", 0); |
| | | for (OrderedMapIterator it = map.orderedMapIterator(); it.hasNext();) |
| | | { |
| | | it.next(); |
| | | |
| | | Pair pair = (Pair) it.getValue(); |
| | | String tableSrc = (String) pair.first; |
| | | |
| | | logger.info("begin convert:[" + order + "]-" + tableSrc); |
| | | queryIgsetElement(jobContext, querySchema, tableSrc); |
| | | |
| | | order++; |
| | | |
| | | if (_testMode) |
| | | { |
| | | if ((_testCount < 0) || (order >= _testCount)) |
| | | break; |
| | | } |
| | | |
| | | if ((order % COMMITSIZE) == 0) |
| | | { |
| | | // OracleConnection connection = jobContext.getOracleConnection(); |
| | | // connection.commitTransaction(); |
| | | jobContext.commitTransaction(); |
| | | //jobContext.startTransaction(); |
| | | System.gc(); |
| | | } |
| | | |
| | | int now = order % step; |
| | | if (now != current) |
| | | { |
| | | current = now; |
| | | jobContext.getExecutionContext().put("ConvertDgn2PostGISJobProgress", current); |
| | | |
| | | } |
| | | } |
| | | jobContext.getExecutionContext().put("ConvertDgn2PostGISJobProgress", 100); |
| | | |
| | | jobContext.commitTransaction(); |
| | | |
| | | logger.info("end convert job:[" + order + "]"); |
| | | System.gc(); |
| | | } |
| | | |
| | | protected OrderedMap getBlobStorageList(OracleConnection connection, String schemaSrc, String tableSrc, |
| | | OrderedMap orderedMap) throws SQLException |
| | | { |
| | | if (orderedMap == null) |
| | | orderedMap = new LinkedMap(99); |
| | | String fetchStmtFmt = "SELECT SNID, SPACETABLE FROM \"%s\".\"%s\""; |
| | | PrintfFormat spf = new PrintfFormat(fetchStmtFmt); |
| | | String fetchStmt = spf.sprintf(new Object[]{schemaSrc, tableSrc}); |
| | | Statement stmt = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); |
| | | ResultSet rs = null; |
| | | |
| | | stmt.setFetchSize(FETCHSIZE); |
| | | |
| | | try |
| | | { |
| | | rs = stmt.executeQuery(fetchStmt); |
| | | |
| | | while (rs.next()) |
| | | { |
| | | int size = rs.getMetaData().getColumnCount(); |
| | | Object[] values = new Object[size]; |
| | | |
| | | for (int i = 0; i < size; i++) |
| | | { |
| | | values[i] = rs.getObject(i + 1); |
| | | } |
| | | |
| | | Integer key = ((BigDecimal) values[0]).intValue(); |
| | | String name = (String) values[1]; |
| | | |
| | | Pair pair = (Pair) orderedMap.get(key); |
| | | if (pair == null) |
| | | orderedMap.put(key, new Pair(name, null)); |
| | | else |
| | | pair.first = name; |
| | | } |
| | | } catch (SQLException e) |
| | | { |
| | | logger.error(e.toString(), e); |
| | | logger.error("stmt=" + fetchStmt); |
| | | throw e; |
| | | } finally |
| | | { |
| | | if (rs != null) rs.close(); |
| | | stmt.close(); |
| | | } |
| | | |
| | | return orderedMap; |
| | | } |
| | | |
| | | protected OrderedMap getRawFormatStorageList(OracleConnection connection, String schemaSrc, String tableSrc, |
| | | OrderedMap orderedMap) throws SQLException |
| | | { |
| | | if (orderedMap == null) |
| | | orderedMap = new LinkedMap(99); |
| | | String fetchStmtFmt = "SELECT RNID, SPACETABLE FROM \"%s\".\"%s\""; |
| | | PrintfFormat spf = new PrintfFormat(fetchStmtFmt); |
| | | String fetchStmt = spf.sprintf(new Object[]{schemaSrc, tableSrc}); |
| | | Statement stmt = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); |
| | | |
| | | stmt.setFetchSize(FETCHSIZE); |
| | | |
| | | ResultSet rs = stmt.executeQuery(fetchStmt); |
| | | |
| | | while (rs.next()) |
| | | { |
| | | int size = rs.getMetaData().getColumnCount(); |
| | | Object[] values = new Object[size]; |
| | | |
| | | for (int i = 0; i < size; i++) |
| | | { |
| | | values[i] = rs.getObject(i + 1); |
| | | } |
| | | |
| | | Integer key = ((BigDecimal) values[0]).intValue(); |
| | | String name = (String) values[1]; |
| | | |
| | | Pair pair = (Pair) orderedMap.get(key); |
| | | if (pair == null) |
| | | orderedMap.put(key, new Pair(null, name)); |
| | | else |
| | | pair.second = name; |
| | | } |
| | | |
| | | rs.close(); |
| | | stmt.close(); |
| | | |
| | | return orderedMap; |
| | | } |
| | | |
| | | protected void queryIgsetElement(OracleConvertShapefilesJobContext jobContext, |
| | | String srcschema, String srctable) throws SQLException |
| | | { |
| | | OracleConnection connection = jobContext.getOracleConnection(); |
| | | String fetchSrcStmtFmt = "SELECT IGDSELM FROM \"%s\".\"%s\" ORDER BY ROWID"; |
| | | PrintfFormat spf = new PrintfFormat(fetchSrcStmtFmt); |
| | | String fetchSrcStmt = spf.sprintf(new Object[]{srcschema, srctable}); |
| | | Statement stmtSrc = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); |
| | | |
| | | stmtSrc.setFetchSize(FETCHSIZE); |
| | | |
| | | ResultSet rsSrc = stmtSrc.executeQuery(fetchSrcStmt); |
| | | |
| | | while (rsSrc.next()) |
| | | { |
| | | byte[] raw = null; |
| | | |
| | | if (rsSrc.getMetaData().getColumnType(1) == Types.BLOB) |
| | | { |
| | | BLOB blob = (BLOB) rsSrc.getBlob(1); |
| | | |
| | | raw = getBytesFromBLOB(blob); |
| | | blob.close(); |
| | | } else |
| | | { |
| | | raw = rsSrc.getBytes(1); |
| | | } |
| | | |
| | | try |
| | | { |
| | | Element element = fetchBinaryElement(raw); |
| | | jobContext.putFeatureCollection(element); |
| | | } catch (Dgn7fileException e) |
| | | { |
| | | logger.warn("Dgn7Exception", e); |
| | | } |
| | | } |
| | | |
| | | rsSrc.close(); |
| | | stmtSrc.close(); |
| | | } |
| | | |
| | | protected void queryRawElement(OracleConvertShapefilesJobContext jobContext, |
| | | String srcschema, String srctable) throws SQLException |
| | | { |
| | | OracleConnection connection = jobContext.getOracleConnection(); |
| | | String fetchDestStmtFmt = "SELECT ELEMENT FROM \"%s\".\"%s\" ORDER BY ROWID"; |
| | | PrintfFormat spf = new PrintfFormat(fetchDestStmtFmt); |
| | | String fetchDestStmt = spf.sprintf(new Object[]{srcschema, srctable}); |
| | | Statement stmtDest = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); |
| | | |
| | | stmtDest.setFetchSize(FETCHSIZE); |
| | | |
| | | ResultSet rsDest = stmtDest.executeQuery(fetchDestStmt); |
| | | |
| | | while (rsDest.next()) |
| | | { |
| | | ARRAY rawsValue = ((OracleResultSet) rsDest).getARRAY(1); |
| | | long[] rawData = rawsValue.getLongArray(); |
| | | byte[] comparessedValue; |
| | | |
| | | /* |
| | | if (dataMode == TransferTask.DataMode.Normal) |
| | | { |
| | | comparessedValue = BinConverter.unmarshalByteArray(rawData, true); |
| | | } else |
| | | { |
| | | comparessedValue = BinConverter.unmarshalCompactByteArray(rawData); |
| | | } |
| | | */ |
| | | comparessedValue = BinConverter.unmarshalByteArray(rawData, true); |
| | | |
| | | byte[] rawDest = ByteArrayCompressor.decompressByteArray(comparessedValue); |
| | | |
| | | |
| | | try |
| | | { |
| | | Element element = fetchBinaryElement(rawDest); |
| | | jobContext.putFeatureCollection(element); |
| | | } catch (Dgn7fileException e) |
| | | { |
| | | logger.warn("Dgn7Exception:" + e.getMessage(), e); |
| | | } |
| | | } |
| | | |
| | | rsDest.close(); |
| | | stmtDest.close(); |
| | | } |
| | | |
| | | // Binary to Element |
| | | private Element fetchBinaryElement(byte[] raws) throws Dgn7fileException |
| | | { |
| | | ByteBuffer buffer = ByteBuffer.wrap(raws); |
| | | buffer.order(ByteOrder.LITTLE_ENDIAN); |
| | | short signature = buffer.getShort(); |
| | | |
| | | // byte type = (byte) (buffer.get() & 0x7f); |
| | | byte type = (byte) ((signature >>> 8) & 0x007f); |
| | | |
| | | // silly Bentley say contentLength is in 2-byte words |
| | | // and ByteByffer uses raws. |
| | | // track the record location |
| | | int elementLength = (buffer.getShort() * 2) + 4; |
| | | ElementType recordType = ElementType.forID(type); |
| | | IElementHandler handler; |
| | | |
| | | handler = recordType.getElementHandler(); |
| | | |
| | | Element dgnElement = (Element) handler.read(buffer, signature, elementLength); |
| | | if (recordType.isComplexElement() && (elementLength < raws.length)) |
| | | { |
| | | int offset = elementLength; |
| | | while (offset < (raws.length - 4)) |
| | | { |
| | | buffer.position(offset); |
| | | signature = buffer.getShort(); |
| | | type = (byte) ((signature >>> 8) & 0x007f); |
| | | elementLength = (buffer.getShort() * 2) + 4; |
| | | if (raws.length < (offset + elementLength)) |
| | | { |
| | | System.out.println("Length not match:" + offset + ":" + buffer.position() + ":" + buffer.limit()); |
| | | break; |
| | | } |
| | | recordType = ElementType.forID(type); |
| | | handler = recordType.getElementHandler(); |
| | | if (handler != null) |
| | | { |
| | | Element subElement = (Element) handler.read(buffer, signature, elementLength); |
| | | ((ComplexElement) dgnElement).add(subElement); |
| | | offset += elementLength; |
| | | } else |
| | | { |
| | | byte[] remain = new byte[buffer.remaining()]; |
| | | System.arraycopy(raws, offset, remain, 0, buffer.remaining()); |
| | | for (int i = 0; i < remain.length; i++) |
| | | { |
| | | if (remain[i] != 0) |
| | | { |
| | | logger.info("fetch element has some error. index=" + (offset + i) + ":value=" + remain[i]); |
| | | System.out.println("fetch element has some error. index=" + (offset + i) + ":value=" + remain[i]); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return dgnElement; |
| | | } |
| | | |
| | | /** |
| | | * °õ¦æÂà´«¯Á¤Þ¹ÏÀɪº¤u§@ |
| | | * |
| | | * @param context ¤u§@°õ¦æÀô¹Ò |
| | | * @throws org.quartz.JobExecutionException exception |
| | | */ |
| | | private void convertIndexDesignFile(JobExecutionContext context) throws JobExecutionException |
| | | { |
| | | File indexDir = new File(getDataPath(), "index"); |
| | | if (!indexDir.exists()) |
| | | { |
| | | logger.info("index dir=" + indexDir + " not exist."); |
| | | return; |
| | | } |
| | | |
| | | if (!indexDir.isDirectory()) |
| | | { |
| | | logger.info("index dir=" + indexDir + " is not a directory."); |
| | | } |
| | | |
| | | File[] dgnFiles = indexDir.listFiles(new FilenameFilter() |
| | | { |
| | | public boolean accept(File dir, String name) |
| | | { |
| | | return name.toLowerCase().endsWith(".dgn"); |
| | | } |
| | | }); |
| | | |
| | | for (File dgnFile : dgnFiles) |
| | | { |
| | | IndexDgnConvertJobContext convertContext = new IndexDgnConvertJobContext(getDataPath()); |
| | | logger.debug("--- start dgnfile-" + dgnFile.toString() + " ---"); |
| | | try |
| | | { |
| | | convertContext.setExecutionContext(context); |
| | | String dgnPaths[] = StringUtils.splitToArray(dgnFile.toString(), File.separator); |
| | | convertContext.setFilename(dgnPaths[dgnPaths.length - 1]); |
| | | |
| | | FileInputStream fs = new FileInputStream(dgnFile); |
| | | FileChannel fc = fs.getChannel(); |
| | | Dgn7fileReader reader = new Dgn7fileReader(fc, new Lock()); |
| | | convertContext.setReader(reader); |
| | | |
| | | scanIndexDgnElement(convertContext); |
| | | |
| | | convertContext.commitTransaction(); |
| | | convertContext.closeFeatureWriter(); |
| | | System.gc(); |
| | | } catch (FileNotFoundException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (Dgn7fileException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (IOException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (IllegalAttributeException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (SchemaException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } |
| | | } |
| | | } |
| | | |
| | | protected void scanIndexDgnElement(IndexDgnConvertJobContext convertContext) |
| | | throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException |
| | | { |
| | | Dgn7fileReader reader = convertContext.getReader(); |
| | | int count = 0; |
| | | Element lastComplex = null; |
| | | while (reader.hasNext()) |
| | | { |
| | | Dgn7fileReader.Record record = reader.nextElement(); |
| | | if (record.element() != null) |
| | | { |
| | | Element element = (Element) record.element(); |
| | | ElementType type = element.getElementType(); |
| | | |
| | | if ((!type.isComplexElement()) && (!element.isComponentElement())) |
| | | { |
| | | lastComplex = null; |
| | | |
| | | processIndexElement(element, convertContext); |
| | | } else if (element.isComponentElement()) |
| | | { |
| | | if (lastComplex != null) |
| | | { |
| | | ((ComplexElement) lastComplex).add(element); |
| | | } |
| | | } else if (type.isComplexElement()) |
| | | { |
| | | if (lastComplex == null) |
| | | { |
| | | lastComplex = element; |
| | | } else |
| | | { |
| | | processIndexElement(element, convertContext); |
| | | lastComplex = element; |
| | | } |
| | | } |
| | | } |
| | | count++; |
| | | } |
| | | |
| | | logger.debug("ElementRecord Count=" + count); |
| | | } |
| | | |
| | | private void processIndexElement(Element element, IndexDgnConvertJobContext convertContext) throws IllegalAttributeException, SchemaException |
| | | { |
| | | if (element instanceof TextElement) |
| | | { |
| | | convertContext.putFeatureCollection(element); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * °õ¦æÂà´«¨ä¥L³]p¹ÏÀɪº¤u§@ |
| | | * |
| | | * @param context jobContext |
| | | * @throws org.quartz.JobExecutionException exception |
| | | */ |
| | | private void convertOtherDesignFile(JobExecutionContext context) throws JobExecutionException |
| | | { |
| | | File otherDir = new File(getDataPath(), "other"); |
| | | if (!otherDir.exists()) |
| | | { |
| | | logger.info("other dir=" + otherDir + " not exist."); |
| | | return; |
| | | } |
| | | |
| | | if (!otherDir.isDirectory()) |
| | | { |
| | | logger.info("other dir=" + otherDir + " is not a directory."); |
| | | } |
| | | |
| | | File[] dgnFiles = otherDir.listFiles(new FilenameFilter() |
| | | { |
| | | public boolean accept(File dir, String name) |
| | | { |
| | | return name.toLowerCase().endsWith(".dgn"); |
| | | } |
| | | }); |
| | | |
| | | for (File dgnFile : dgnFiles) |
| | | { |
| | | GeneralDgnConvertJobContext convertContext = new GeneralDgnConvertJobContext(getDataPath()); |
| | | logger.info("--- start dgnfile-" + dgnFile.toString() + " ---"); |
| | | try |
| | | { |
| | | convertContext.setExecutionContext(context); |
| | | String dgnPaths[] = StringUtils.splitToArray(dgnFile.toString(), File.separator); |
| | | convertContext.setFilename(dgnPaths[dgnPaths.length - 1]); |
| | | |
| | | FileInputStream fs = new FileInputStream(dgnFile); |
| | | FileChannel fc = fs.getChannel(); |
| | | Dgn7fileReader reader = new Dgn7fileReader(fc, new Lock()); |
| | | convertContext.setReader(reader); |
| | | |
| | | scanOtherDgnElement(convertContext); |
| | | |
| | | convertContext.commitTransaction(); |
| | | convertContext.closeFeatureWriter(); |
| | | System.gc(); |
| | | } catch (FileNotFoundException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (Dgn7fileException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (IOException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (IllegalAttributeException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (SchemaException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public void scanOtherDgnElement(GeneralDgnConvertJobContext convertContext) |
| | | throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException |
| | | { |
| | | Dgn7fileReader reader = convertContext.getReader(); |
| | | int count = 0; |
| | | Element lastComplex = null; |
| | | while (reader.hasNext()) |
| | | { |
| | | Dgn7fileReader.Record record = reader.nextElement(); |
| | | if (record.element() != null) |
| | | { |
| | | Element element = (Element) record.element(); |
| | | ElementType type = element.getElementType(); |
| | | |
| | | if ((!type.isComplexElement()) && (!element.isComponentElement())) |
| | | { |
| | | lastComplex = null; |
| | | |
| | | processOtherElement(element, convertContext); |
| | | } else if (element.isComponentElement()) |
| | | { |
| | | if (lastComplex != null) |
| | | { |
| | | ((ComplexElement) lastComplex).add(element); |
| | | } |
| | | } else if (type.isComplexElement()) |
| | | { |
| | | if (lastComplex == null) |
| | | { |
| | | lastComplex = element; |
| | | } else |
| | | { |
| | | processOtherElement(element, convertContext); |
| | | lastComplex = element; |
| | | } |
| | | } |
| | | } |
| | | count++; |
| | | } |
| | | |
| | | logger.debug("ElementRecord Count=" + count); |
| | | } |
| | | |
| | | private void processOtherElement(Element element, GeneralDgnConvertJobContext convertContext) |
| | | throws IllegalAttributeException, SchemaException |
| | | { |
| | | convertContext.putFeatureCollection(element); |
| | | } |
| | | |
| | | private void clearOutputDirectory() |
| | | { |
| | | File outDataPath = new File(getDataPath(), OracleConvertShapefilesJobContext.SHPOUTPATH); |
| | | if (outDataPath.exists() && outDataPath.isDirectory()) |
| | | { |
| | | deleteFilesInPath(outDataPath); |
| | | } |
| | | outDataPath = new File(getDataPath(), IndexDgnConvertJobContext.SHPOUTPATH); |
| | | if (outDataPath.exists() && outDataPath.isDirectory()) |
| | | { |
| | | deleteFilesInPath(outDataPath); |
| | | } |
| | | outDataPath = new File(getDataPath(), GeneralDgnConvertJobContext.SHPOUTPATH); |
| | | if (outDataPath.exists() && outDataPath.isDirectory()) |
| | | { |
| | | deleteFilesInPath(outDataPath); |
| | | } |
| | | } |
| | | |
| | | private void deleteFilesInPath(File outDataPath) |
| | | { |
| | | deleteFilesInPath(outDataPath, true); |
| | | } |
| | | |
| | | private void deleteFilesInPath(File outDataPath, boolean removeSubDir) |
| | | { |
| | | if (!outDataPath.isDirectory()) |
| | | { |
| | | return; |
| | | } |
| | | File[] files = outDataPath.listFiles(); |
| | | for (File file : files) |
| | | { |
| | | if (file.isFile()) |
| | | { |
| | | if (!file.delete()) |
| | | { |
| | | logger.info("Cannot delete file-" + file.toString()); |
| | | } |
| | | } else if (file.isDirectory()) |
| | | { |
| | | deleteFilesInPath(file, removeSubDir); |
| | | if (removeSubDir) |
| | | { |
| | | if (file.delete()) |
| | | { |
| | | logger.info("Cannot delete dir-" + file.toString()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void convertFeatureDesignFile(JobExecutionContext context) throws JobExecutionException |
| | | { |
| | | File elminDir = new File(getDataPath(), "elmin"); |
| | | if (!elminDir.exists()) |
| | | { |
| | | logger.info("elmin dir=" + elminDir + " not exist."); |
| | | return; |
| | | } |
| | | |
| | | if (!elminDir.isDirectory()) |
| | | { |
| | | logger.info("elmin dir=" + elminDir + " is not a directory."); |
| | | } |
| | | |
| | | File[] dgnFiles = elminDir.listFiles(new FilenameFilter() |
| | | { |
| | | public boolean accept(File dir, String name) |
| | | { |
| | | return name.toLowerCase().endsWith(".dgn"); |
| | | } |
| | | }); |
| | | |
| | | for (File dgnFile : dgnFiles) |
| | | { |
| | | FeatureDgnConvertJobContext convertContext = new FeatureDgnConvertJobContext(getDataPath(), _filterPath); |
| | | logger.info("--- start dgnfile-" + dgnFile.toString() + " ---"); |
| | | try |
| | | { |
| | | convertContext.setExecutionContext(context); |
| | | String dgnPaths[] = StringUtils.splitToArray(dgnFile.toString(), File.separator); |
| | | convertContext.setFilename(dgnPaths[dgnPaths.length - 1]); |
| | | |
| | | FileInputStream fs = new FileInputStream(dgnFile); |
| | | FileChannel fc = fs.getChannel(); |
| | | Dgn7fileReader reader = new Dgn7fileReader(fc, new Lock()); |
| | | convertContext.setReader(reader); |
| | | |
| | | scanFeatureDgnElement(convertContext); |
| | | |
| | | convertContext.commitTransaction(); |
| | | convertContext.closeFeatureWriter(); |
| | | System.gc(); |
| | | } catch (FileNotFoundException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (Dgn7fileException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (IOException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (IllegalAttributeException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } catch (SchemaException e) |
| | | { |
| | | convertContext.rollbackTransaction(); |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public void scanFeatureDgnElement(FeatureDgnConvertJobContext convertContext) |
| | | throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException |
| | | { |
| | | Dgn7fileReader reader = convertContext.getReader(); |
| | | int count = 0; |
| | | Element lastComplex = null; |
| | | while (reader.hasNext()) |
| | | { |
| | | Dgn7fileReader.Record record = reader.nextElement(); |
| | | if (record.element() != null) |
| | | { |
| | | Element element = (Element) record.element(); |
| | | ElementType type = element.getElementType(); |
| | | |
| | | if ((!type.isComplexElement()) && (!element.isComponentElement())) |
| | | { |
| | | lastComplex = null; |
| | | |
| | | processFeatureElement(element, convertContext); |
| | | } else if (element.isComponentElement()) |
| | | { |
| | | if (lastComplex != null) |
| | | { |
| | | ((ComplexElement) lastComplex).add(element); |
| | | } |
| | | } else if (type.isComplexElement()) |
| | | { |
| | | if (lastComplex == null) |
| | | { |
| | | lastComplex = element; |
| | | } else |
| | | { |
| | | processFeatureElement(element, convertContext); |
| | | lastComplex = element; |
| | | } |
| | | } |
| | | } |
| | | count++; |
| | | } |
| | | |
| | | logger.debug("ElementRecord Count=" + count); |
| | | } |
| | | |
| | | private void processFeatureElement(Element element, FeatureDgnConvertJobContext convertContext) |
| | | throws IllegalAttributeException, SchemaException |
| | | { |
| | | convertContext.putFeatureCollection(element); |
| | | } |
| | | |
| | | private void createDummyFeatureFile(JobExecutionContext context) throws JobExecutionException |
| | | { |
| | | /* |
| | | DummyFeatureConvertJobContext convertContext = new DummyFeatureConvertJobContext(getDataPath(), _filterPath); |
| | | try { |
| | | convertContext.startTransaction(); |
| | | convertContext.commitTransaction(); |
| | | convertContext.closeFeatureWriter(); |
| | | } catch (IOException e) |
| | | { |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException(e.getMessage(), e); |
| | | } |
| | | */ |
| | | } |
| | | } |
| | |
| | | import com.ximple.eofms.util.BinConverter; |
| | | import com.ximple.eofms.util.ByteArrayCompressor; |
| | | import com.ximple.eofms.util.StringUtils; |
| | | import com.ximple.eofms.jobs.context.AbstractOracleJobContext; |
| | | import com.ximple.eofms.jobs.context.FeatureDgnConvertJobContext; |
| | | import com.ximple.eofms.jobs.context.GeneralDgnConvertJobContext; |
| | | import com.ximple.eofms.jobs.context.IndexDgnConvertJobContext; |
| | | import com.ximple.eofms.jobs.context.OracleConvertShapefilesJobContext; |
| | | import com.ximple.io.dgn7.ComplexElement; |
| | | import com.ximple.io.dgn7.Dgn7fileException; |
| | | import com.ximple.io.dgn7.Dgn7fileReader; |
| | |
| | | |
| | | protected AbstractOracleJobContext prepareJobContext(String filterPath) |
| | | { |
| | | return new OracleConvertJobContext(filterPath); |
| | | return new OracleConvertShapefilesJobContext(filterPath); |
| | | } |
| | | |
| | | protected void extractJobConfiguration(JobDetail jobDetail) throws JobExecutionException |
| | | { |
| | | super.extractJobConfiguration(jobDetail); |
| | | } |
| | | |
| | | public void execute(JobExecutionContext context) throws JobExecutionException |
| | |
| | | |
| | | for (String orgSchema : _orgSchema) |
| | | { |
| | | OracleConvertJobContext jobContext = (OracleConvertJobContext) prepareJobContext(_filterPath); |
| | | OracleConvertShapefilesJobContext jobContext = (OracleConvertShapefilesJobContext) prepareJobContext(_filterPath); |
| | | jobContext.setConnectionInfo(_oracleHost, _oraclePort, _oracleInstance); |
| | | jobContext.setLogin(_username, _password); |
| | | jobContext.setShapeData(_dataPath); |
| | |
| | | * @param jobContext job context |
| | | * @throws SQLException sql exception |
| | | */ |
| | | private void copyConnectivity(OracleConvertJobContext jobContext) throws SQLException |
| | | private void copyConnectivity(OracleConvertShapefilesJobContext jobContext) throws SQLException |
| | | { |
| | | OracleConnection connection = jobContext.getOracleConnection(); |
| | | Statement stmt = connection.createStatement(); |
| | | stmt.execute(OracleConvertJobContext.TRUNCATE_CONNECTIVITY_WEBCHECK); |
| | | stmt.execute(OracleConvertJobContext.COPY_CONNECTIVITY_TO_WEBCHECK); |
| | | stmt.execute(OracleConvertShapefilesJobContext.TRUNCATE_CONNECTIVITY_WEBCHECK); |
| | | stmt.execute(OracleConvertShapefilesJobContext.COPY_CONNECTIVITY_TO_WEBCHECK); |
| | | } |
| | | |
| | | private void exetcuteConvert(OracleConvertJobContext jobContext, |
| | | private void exetcuteConvert(OracleConvertShapefilesJobContext jobContext, |
| | | String querySchema, String dataPath) throws SQLException |
| | | { |
| | | int order = 0; |
| | |
| | | return orderedMap; |
| | | } |
| | | |
| | | protected void queryIgsetElement(OracleConvertJobContext jobContext, |
| | | protected void queryIgsetElement(OracleConvertShapefilesJobContext jobContext, |
| | | String srcschema, String srctable) throws SQLException |
| | | { |
| | | OracleConnection connection = jobContext.getOracleConnection(); |
| | |
| | | stmtSrc.close(); |
| | | } |
| | | |
| | | protected void queryRawElement(OracleConvertJobContext jobContext, |
| | | protected void queryRawElement(OracleConvertShapefilesJobContext jobContext, |
| | | String srcschema, String srctable) throws SQLException |
| | | { |
| | | OracleConnection connection = jobContext.getOracleConnection(); |
| | |
| | | |
| | | private void clearOutputDirectory() |
| | | { |
| | | File outDataPath = new File(getDataPath(), OracleConvertJobContext.SHPOUTPATH); |
| | | File outDataPath = new File(getDataPath(), OracleConvertShapefilesJobContext.SHPOUTPATH); |
| | | if (outDataPath.exists() && outDataPath.isDirectory()) |
| | | { |
| | | deleteFilesInPath(outDataPath); |
| | |
| | | import oracle.jdbc.OracleDatabaseMetaData; |
| | | import oracle.jdbc.OracleStatement; |
| | | |
| | | import com.ximple.eofms.jobs.context.AbstractOracleJobContext; |
| | | import com.ximple.eofms.jobs.context.OracleUpgradeJobContext; |
| | | |
| | | public class OracleUpgradeBlob2UDTJob extends AbstractOracleDatabaseJob |
| | | { |
| | | static Log logger = LogFactory.getLog(OracleUpgradeBlob2UDTJob.class); |
File was renamed from xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractDgnFileJobContext.java |
| | |
| | | package com.ximple.eofms.jobs; |
| | | package com.ximple.eofms.jobs.context; |
| | | |
| | | import java.util.Properties; |
| | | |
File was renamed from xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleJobContext.java |
| | |
| | | package com.ximple.eofms.jobs; |
| | | package com.ximple.eofms.jobs.context; |
| | | |
| | | import java.sql.DriverManager; |
| | | import java.sql.SQLException; |
| | | import java.util.Properties; |
| | | |
| | | import oracle.jdbc.OracleConnection; |
| | | |
| | | import com.ximple.eofms.jobs.context.OracleConvertShapefilesJobContext; |
| | | |
| | | public abstract class AbstractOracleJobContext |
| | | { |
| | |
| | | /** |
| | | * copy connectivity to connectivity_webcheck sql |
| | | */ |
| | | protected static final String TRUNCATE_CONNECTIVITY_WEBCHECK = "TRUNCATE TABLE BASEDB.CONNECTIVITY_WEBCHECK"; |
| | | public 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," + |
| | |
| | | "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" + |
| | | public 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 "; |
| | | |
| | |
| | | return oracleConnection; |
| | | } catch (SQLException e) |
| | | { |
| | | OracleConvertJobContext.logger.warn(e.getMessage(), e); |
| | | OracleConvertShapefilesJobContext.logger.warn(e.getMessage(), e); |
| | | } |
| | | |
| | | oracleConnection = null; |
| | |
| | | } |
| | | } catch (SQLException e) |
| | | { |
| | | OracleConvertJobContext.logger.warn(e.getMessage(), e); |
| | | OracleConvertShapefilesJobContext.logger.warn(e.getMessage(), e); |
| | | } |
| | | } |
| | | |
copy from xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/FeatureDgnConvertJobContext.java
copy to xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/DummyFeatureConvertJobContext.java
File was copied from xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/FeatureDgnConvertJobContext.java |
| | |
| | | package com.ximple.eofms.jobs; |
| | | package com.ximple.eofms.jobs.context; |
| | | |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.net.MalformedURLException; |
| | | import java.net.URL; |
| | | import java.nio.charset.Charset; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | import java.net.URL; |
| | | import java.net.MalformedURLException; |
| | | import java.io.File; |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.io.IOException; |
| | | import java.nio.charset.Charset; |
| | | |
| | | import org.apache.commons.digester.Digester; |
| | | import org.apache.commons.digester.xmlrules.DigesterLoader; |
| | | import org.apache.commons.logging.Log; |
| | | import org.apache.commons.logging.LogFactory; |
| | | import org.apache.commons.transaction.memory.PessimisticMapWrapper; |
| | | import org.apache.commons.transaction.util.CommonsLoggingLogger; |
| | | import org.apache.commons.transaction.util.LoggerFacade; |
| | | import org.apache.commons.transaction.util.CommonsLoggingLogger; |
| | | import org.apache.commons.transaction.memory.PessimisticMapWrapper; |
| | | import org.apache.commons.digester.Digester; |
| | | import org.apache.commons.digester.xmlrules.DigesterLoader; |
| | | import org.geotools.feature.Feature; |
| | | import org.geotools.feature.IllegalAttributeException; |
| | | import org.geotools.feature.SchemaException; |
| | | import org.geotools.feature.FeatureType; |
| | | import org.geotools.feature.SimpleFeature; |
| | | import org.geotools.data.FeatureWriter; |
| | | import org.geotools.data.Transaction; |
| | | import org.geotools.data.shapefile.ShapefileDataStore; |
| | | import org.geotools.data.shapefile.indexed.IndexedShapefileDataStore; |
| | | import org.geotools.feature.Feature; |
| | | import org.geotools.feature.FeatureType; |
| | | import org.geotools.feature.IllegalAttributeException; |
| | | import org.geotools.feature.SchemaException; |
| | | import org.geotools.feature.SimpleFeature; |
| | | import org.xml.sax.SAXException; |
| | | |
| | | import com.vividsolutions.jts.geom.GeometryFactory; |
| | | |
| | | import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; |
| | | import com.ximple.eofms.filter.ElementDispatcher; |
| | | import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; |
| | | import com.ximple.eofms.filter.ElementDispatchableFilter; |
| | | import com.ximple.eofms.filter.TypeCompIdDispatchableFilter; |
| | | import com.ximple.eofms.filter.TypeCompLevelIdDispatchableFilter; |
| | | import com.ximple.eofms.filter.TypeIdDispatchableFilter; |
| | | import com.ximple.io.dgn7.Element; |
| | | import com.ximple.io.dgn7.FrammeAttributeData; |
| | | import com.ximple.io.dgn7.UserAttributeData; |
| | | import com.ximple.io.dgn7.ComplexElement; |
| | | import com.ximple.io.dgn7.UserAttributeData; |
| | | |
| | | public class FeatureDgnConvertJobContext extends AbstractDgnFileJobContext |
| | | public class DummyFeatureConvertJobContext extends AbstractDgnFileJobContext |
| | | { |
| | | static final Log logger = LogFactory.getLog(FeatureDgnConvertJobContext.class); |
| | | static final Log logger = LogFactory.getLog(DummyFeatureConvertJobContext.class); |
| | | static final LoggerFacade sLogger = new CommonsLoggingLogger(logger); |
| | | static final GeometryFactory geometryFactory = new GeometryFactory(); |
| | | static final String SHPOUTPATH = "shpout"; |
| | |
| | | |
| | | private ElementDispatcher elementDispatcher; |
| | | private String _filterConfig; |
| | | private boolean withIndex = false; |
| | | |
| | | public FeatureDgnConvertJobContext(String dataPath, String filterConfig) |
| | | public DummyFeatureConvertJobContext(String dataPath, String filterConfig) |
| | | { |
| | | super(dataPath); |
| | | txFeaturesContext = new PessimisticMapWrapper(featuresContext, sLogger); |
| | |
| | | |
| | | public void startTransaction() |
| | | { |
| | | assert elementDispatcher != null; |
| | | for (ElementDispatchableFilter filter : elementDispatcher.getRules()) |
| | | { |
| | | if (filter instanceof TypeCompIdDispatchableFilter) |
| | | { |
| | | ((TypeCompIdDispatchableFilter) filter).getCreateStrategy(); |
| | | } else if (filter instanceof TypeCompLevelIdDispatchableFilter) |
| | | { |
| | | ((TypeCompIdDispatchableFilter) filter).getCreateStrategy(); |
| | | } else if(filter instanceof TypeIdDispatchableFilter) |
| | | { |
| | | ((TypeCompIdDispatchableFilter) filter).getCreateStrategy(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public void commitTransaction() |
| | |
| | | writer = featuresWriterContext.get(featureType.getTypeName()); |
| | | } else |
| | | { |
| | | // ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL()); |
| | | /* |
| | | ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL(), |
| | | true, Charset.forName("UTF-8")); |
| | | */ |
| | | if (!sfile.exists()) |
| | | ShapefileDataStore shapefileDataStore = null; |
| | | boolean existFile = sfile.exists(); |
| | | |
| | | if (!withIndex) |
| | | { |
| | | ShapefileDataStore shapefileDataStore = new IndexedShapefileDataStore(sfile.toURI().toURL(), |
| | | shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL(), |
| | | true, Charset.forName("UTF-8")); |
| | | } else |
| | | { |
| | | shapefileDataStore = new IndexedShapefileDataStore(sfile.toURI().toURL(), |
| | | null, true, true, IndexedShapefileDataStore.TREE_QIX, Charset.forName("UTF-8")); |
| | | } |
| | | |
| | | if (!existFile) |
| | | { |
| | | shapefileDataStore.createSchema(featureType); |
| | | writer = shapefileDataStore.getFeatureWriter(featureType.getTypeName(), |
| | | Transaction.AUTO_COMMIT); |
| | | } else { |
| | | ShapefileDataStore shapefileDataStore = new IndexedShapefileDataStore(sfile.toURI().toURL(), |
| | | null, true, true, IndexedShapefileDataStore.TREE_QIX, Charset.forName("UTF-8")); |
| | | writer = shapefileDataStore.getFeatureWriterAppend(featureType.getTypeName(), |
| | | Transaction.AUTO_COMMIT); |
| | | } |
| | |
| | | } |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | |
| | | public boolean isWithIndex() |
| | | { |
| | | return withIndex; |
| | | } |
| | | |
| | | public void setWithIndex(boolean withIndex) |
| | | { |
| | | this.withIndex = withIndex; |
| | | } |
| | | } |
File was renamed from xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/FeatureDgnConvertJobContext.java |
| | |
| | | package com.ximple.eofms.jobs; |
| | | package com.ximple.eofms.jobs.context; |
| | | |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | |
| | | |
| | | import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; |
| | | import com.ximple.eofms.filter.ElementDispatcher; |
| | | import com.ximple.eofms.jobs.context.AbstractDgnFileJobContext; |
| | | import com.ximple.io.dgn7.Element; |
| | | import com.ximple.io.dgn7.FrammeAttributeData; |
| | | import com.ximple.io.dgn7.UserAttributeData; |
| | |
| | | |
| | | private ElementDispatcher elementDispatcher; |
| | | private String _filterConfig; |
| | | private boolean withIndex = false; |
| | | |
| | | public FeatureDgnConvertJobContext(String dataPath, String filterConfig) |
| | | { |
| | |
| | | writer = featuresWriterContext.get(featureType.getTypeName()); |
| | | } else |
| | | { |
| | | // ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL()); |
| | | /* |
| | | ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL(), |
| | | true, Charset.forName("UTF-8")); |
| | | */ |
| | | if (!sfile.exists()) |
| | | ShapefileDataStore shapefileDataStore = null; |
| | | boolean existFile = sfile.exists(); |
| | | |
| | | if (!withIndex) |
| | | { |
| | | ShapefileDataStore shapefileDataStore = new IndexedShapefileDataStore(sfile.toURI().toURL(), |
| | | shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL(), |
| | | true, Charset.forName("UTF-8")); |
| | | } else |
| | | { |
| | | shapefileDataStore = new IndexedShapefileDataStore(sfile.toURI().toURL(), |
| | | null, true, true, IndexedShapefileDataStore.TREE_QIX, Charset.forName("UTF-8")); |
| | | } |
| | | |
| | | if (!existFile) |
| | | { |
| | | shapefileDataStore.createSchema(featureType); |
| | | writer = shapefileDataStore.getFeatureWriter(featureType.getTypeName(), |
| | | Transaction.AUTO_COMMIT); |
| | | } else { |
| | | ShapefileDataStore shapefileDataStore = new IndexedShapefileDataStore(sfile.toURI().toURL(), |
| | | null, true, true, IndexedShapefileDataStore.TREE_QIX, Charset.forName("UTF-8")); |
| | | writer = shapefileDataStore.getFeatureWriterAppend(featureType.getTypeName(), |
| | | Transaction.AUTO_COMMIT); |
| | | } |
| | |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | public boolean isWithIndex() |
| | | { |
| | | return withIndex; |
| | | } |
| | | |
| | | public void setWithIndex(boolean withIndex) |
| | | { |
| | | this.withIndex = withIndex; |
| | | } |
| | | } |
| | | |
File was renamed from xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeneralDgnConvertJobContext.java |
| | |
| | | package com.ximple.eofms.jobs; |
| | | package com.ximple.eofms.jobs.context; |
| | | |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | |
| | | import com.vividsolutions.jts.geom.GeometryFactory; |
| | | |
| | | import com.ximple.eofms.util.DefaultColorTable; |
| | | import com.ximple.eofms.util.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.jobs.context.AbstractDgnFileJobContext; |
| | | import com.ximple.io.dgn7.ArcElement; |
| | | import com.ximple.io.dgn7.ComplexChainElement; |
| | | import com.ximple.io.dgn7.Element; |
| | |
| | | static final Log logger = LogFactory.getLog(GeneralDgnConvertJobContext.class); |
| | | static final LoggerFacade sLogger = new CommonsLoggingLogger(logger); |
| | | static final GeometryFactory geometryFactory = new GeometryFactory(); |
| | | static final String SHPOUTPATH = "shpout"; |
| | | public static final String SHPOUTPATH = "shpout"; |
| | | |
| | | private String dataOut = null; |
| | | |
| | |
| | | |
| | | private TWD97GeometryConverterDecorator convertDecorator = null; |
| | | private String featureBaseName = null; |
| | | private boolean withIndex = false; |
| | | |
| | | public GeneralDgnConvertJobContext(String dataPath) |
| | | { |
| | |
| | | writer = featuresWriterContext.get(featureType.getTypeName()); |
| | | } else |
| | | { |
| | | // ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL()); |
| | | /* |
| | | ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL(), |
| | | true, Charset.forName("UTF-8")); |
| | | */ |
| | | if (!sfile.exists()) |
| | | ShapefileDataStore shapefileDataStore = null; |
| | | boolean existFile = sfile.exists(); |
| | | |
| | | if (!withIndex) |
| | | { |
| | | ShapefileDataStore shapefileDataStore = new IndexedShapefileDataStore(sfile.toURI().toURL(), |
| | | shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL(), |
| | | true, Charset.forName("UTF-8")); |
| | | } else |
| | | { |
| | | shapefileDataStore = new IndexedShapefileDataStore(sfile.toURI().toURL(), |
| | | null, true, true, IndexedShapefileDataStore.TREE_QIX, Charset.forName("UTF-8")); |
| | | } |
| | | |
| | | if (!existFile) |
| | | { |
| | | shapefileDataStore.createSchema(featureType); |
| | | writer = shapefileDataStore.getFeatureWriter(featureType.getTypeName(), |
| | | Transaction.AUTO_COMMIT); |
| | | } else |
| | | { |
| | | ShapefileDataStore shapefileDataStore = new IndexedShapefileDataStore(sfile.toURI().toURL(), |
| | | null, true, true, IndexedShapefileDataStore.TREE_QIX, Charset.forName("UTF-8")); |
| | | } else { |
| | | writer = shapefileDataStore.getFeatureWriterAppend(featureType.getTypeName(), |
| | | Transaction.AUTO_COMMIT); |
| | | } |
| | |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | public boolean isWithIndex() |
| | | { |
| | | return withIndex; |
| | | } |
| | | |
| | | public void setWithIndex(boolean withIndex) |
| | | { |
| | | this.withIndex = withIndex; |
| | | } |
| | | } |
File was renamed from xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java |
| | |
| | | package com.ximple.eofms.jobs; |
| | | package com.ximple.eofms.jobs.context; |
| | | |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | |
| | | import com.ximple.eofms.util.DefaultColorTable; |
| | | import com.ximple.eofms.util.TPCLIDConverter; |
| | | import com.ximple.eofms.util.TWDDatumConverter; |
| | | import com.ximple.eofms.util.TWD97GeometryConverterDecorator; |
| | | import com.ximple.eofms.jobs.context.AbstractDgnFileJobContext; |
| | | import com.ximple.io.dgn7.Element; |
| | | import com.ximple.io.dgn7.FrammeAttributeData; |
| | | import com.ximple.io.dgn7.TextElement; |
| | |
| | | static final LoggerFacade sLogger = new CommonsLoggingLogger(logger); |
| | | static final GeometryFactory geometryFactory = new GeometryFactory(); |
| | | TWD97GeometryConverterDecorator convertDecorator = new TWD97GeometryConverterDecorator(); |
| | | static final String SHPOUTPATH = "shpout"; |
| | | public static final String SHPOUTPATH = "shpout"; |
| | | |
| | | private String dataOut = null; |
| | | |
New file |
| | |
| | | package com.ximple.eofms.jobs.context; |
| | | |
| | | public class OracleConvertOraSDOJobContext |
| | | { |
| | | } |
New file |
| | |
| | | package com.ximple.eofms.jobs.context; |
| | | |
| | | public class OracleConvertPostGISJobContext |
| | | { |
| | | } |
File was renamed from xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java |
| | |
| | | package com.ximple.eofms.jobs; |
| | | package com.ximple.eofms.jobs.context; |
| | | |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | |
| | | |
| | | import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; |
| | | import com.ximple.eofms.filter.ElementDispatcher; |
| | | import com.ximple.eofms.jobs.context.AbstractOracleJobContext; |
| | | import com.ximple.eofms.jobs.OracleElementLogger; |
| | | import com.ximple.io.dgn7.Element; |
| | | import com.ximple.io.dgn7.FrammeAttributeData; |
| | | import com.ximple.io.dgn7.ComplexElement; |
| | | |
| | | |
| | | public class OracleConvertJobContext extends AbstractOracleJobContext |
| | | public class OracleConvertShapefilesJobContext extends AbstractOracleJobContext |
| | | { |
| | | static Log logger = LogFactory.getLog(OracleConvertJobContext.class); |
| | | static Log logger = LogFactory.getLog(OracleConvertShapefilesJobContext.class); |
| | | static final LoggerFacade sLogger = new CommonsLoggingLogger(logger); |
| | | |
| | | static final String SHPOUTPATH = "shpout"; |
| | | public static final String SHPOUTPATH = "shpout"; |
| | | |
| | | private OracleElementLogger elmLogger = null; |
| | | |
| | |
| | | private String currentSchema = null; |
| | | private boolean schemaChanged = false; |
| | | private String _convertElementIn = null; |
| | | private boolean withIndex = false; |
| | | |
| | | public OracleConvertJobContext(String filterConfig) |
| | | public OracleConvertShapefilesJobContext(String filterConfig) |
| | | { |
| | | properties = new Properties(); |
| | | _filterConfig = filterConfig; |
| | |
| | | writer = featuresWriterContext.get(featureType.getTypeName()); |
| | | } else |
| | | { |
| | | /* |
| | | ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL(), |
| | | true, Charset.forName("UTF-8")); |
| | | */ |
| | | if (!sfile.exists()) |
| | | ShapefileDataStore shapefileDataStore = null; |
| | | boolean existFile = sfile.exists(); |
| | | |
| | | if (!withIndex) |
| | | { |
| | | ShapefileDataStore shapefileDataStore = new IndexedShapefileDataStore(sfile.toURI().toURL(), |
| | | shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL(), |
| | | true, Charset.forName("UTF-8")); |
| | | } else |
| | | { |
| | | shapefileDataStore = new IndexedShapefileDataStore(sfile.toURI().toURL(), |
| | | null, true, true, IndexedShapefileDataStore.TREE_QIX, Charset.forName("UTF-8")); |
| | | } |
| | | |
| | | if (!existFile) |
| | | { |
| | | shapefileDataStore.createSchema(featureType); |
| | | writer = shapefileDataStore.getFeatureWriter(featureType.getTypeName(), |
| | | Transaction.AUTO_COMMIT); |
| | | } else { |
| | | ShapefileDataStore shapefileDataStore = new IndexedShapefileDataStore(sfile.toURI().toURL(), |
| | | null, true, true, IndexedShapefileDataStore.TREE_QIX, Charset.forName("UTF-8")); |
| | | writer = shapefileDataStore.getFeatureWriterAppend(featureType.getTypeName(), |
| | | Transaction.AUTO_COMMIT); |
| | | } |
| | |
| | | { |
| | | _convertElementIn = convertElementIn; |
| | | } |
| | | |
| | | public boolean isWithIndex() |
| | | { |
| | | return withIndex; |
| | | } |
| | | |
| | | public void setWithIndex(boolean withIndex) |
| | | { |
| | | this.withIndex = withIndex; |
| | | } |
| | | } |
File was renamed from xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeJobContext.java |
| | |
| | | package com.ximple.eofms.jobs; |
| | | package com.ximple.eofms.jobs.context; |
| | | |
| | | import com.ximple.eofms.jobs.context.AbstractOracleJobContext; |
| | | |
| | | public class OracleUpgradeJobContext extends AbstractOracleJobContext |
| | | { |
File was renamed from xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/TWD97GeometryConverterDecorator.java |
| | |
| | | package com.ximple.eofms.jobs; |
| | | package com.ximple.eofms.util; |
| | | |
| | | import com.vividsolutions.jts.geom.Coordinate; |
| | | import com.vividsolutions.jts.geom.CoordinateSequence; |
New file |
| | |
| | | <?xml version='1.0' encoding="big5"?> |
| | | <!DOCTYPE digester-rules PUBLIC "-//Jakarta Apache //DTD digester-rules XML V1.0//EN" "digester-rules.dtd"> |
| | | <digester-rules> |
| | | <pattern value="FeatureClassificationRules"> |
| | | <object-create-rule classname="com.ximple.eofms.collector.FeatureClassification"/> |
| | | <set-properties-rule/> |
| | | <pattern value="FeatureTypeCollector"> |
| | | <object-create-rule classname="com.ximple.eofms.collector.FeatureTypeCollector"/> |
| | | <set-next-rule methodname="addCollector" paramtype="com.ximple.eofms.collector.FeatureTypeCollector"/> |
| | | <set-properties-rule/> |
| | | <bean-property-setter-rule pattern="name"/> |
| | | <bean-property-setter-rule pattern="description"/> |
| | | <bean-property-setter-rule pattern="featuretypeList"/> |
| | | </pattern> |
| | | </pattern> |
| | | </digester-rules> |
New file |
| | |
| | | <FeatureClassificationRules> |
| | | <FeatureTypeCollector name="22KVSUBHV"> |
| | | <featuretypeList> |
| | | tpc:FSC-502.C-1_2_1,tpc:FSC-502.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-501.C-0_1_1,tpc:FSC-999.C-0_62_1,tpc:FSC-503.C-0_1_2,tpc:FSC-411.C-0_27_1,tpc:FSC-411.C-1_37_1,tpc:FSC-114.C-3_60_1,tpc:FSC-114.C-2_24_1,tpc:FSC-114.C-0_24_1,tpc:FSC-114.C-1_34_1,tpc:FSC-106.C-2_4_1,tpc:FSC-106.C-0_4_1,tpc:FSC-115.C-6_48_1,tpc:FSC-115.C-0_48_1,tpc:FSC-122.C-0_24_1,tpc:FSC-122.C-1_34_1,tpc:FSC-105.C-0_39_1,tpc:FSC-106.C-0_3_1,tpc:FSC-115.C-6_48_1,tpc:FSC-115.C-0_56_1,tpc:FSC-115.C-1_56_1,tpc:FSC-411.C-0_8_1,tpc:FSC-411.C-1_18_1,tpc:FSC-107.C-0_26_1,tpc:FSC-107.C-2_36_1,tpc:FSC-120.C-0_52_1,tpc:FSC-101.C-0_51_0,tpc:FSC-407.C-0_10_1,tpc:FSC-407.C-1_20_1,tpc:FSC-407.C-9_10_1</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="11KVHVOH"> |
| | | <featuretypeList>tpc:FSC-115.C-0_46_1,tpc:FSC-115.C-0_46_2,tpc:FSC-115.C-1_46_1,tpc:FSC-115.C-1_46_2,tpc:FSC-106.C-2_1_1,tpc:FSC-106.C-2_1_2,tpc:FSC-106.C-4_1_1,tpc:FSC-106.C-4_1_2,tpc:FSC-106.C-0_1_1,tpc:FSC-106.C-0_1_2,tpc:FSC-140.C-2_51_1,tpc:FSC-140.C-2_51_2,tpc:FSC-140.C-0_51_1,tpc:FSC-140.C-0_51_2,tpc:FSC-130.C-0_11_1,tpc:FSC-130.C-0_11_2,tpc:FSC-402.C-2_15_2,tpc:FSC-402.C-0_5_2,tpc:FSC-402.C-1_15_2,tpc:FSC-402.C-2_37_2,tpc:FSC-402.C-0_27_2,tpc:FSC-402.C-1_37_2,tpc:FSC-108.C-0_44_2,tpc:FSC-108.C-1_54_2,tpc:FSC-119.C-0_61_2,tpc:FSC-118.C-0_49_2,tpc:FSC-407.C-0_9_1,tpc:FSC-407.C-0_9_2,tpc:FSC-407.C-1_19_1,tpc:FSC-407.C-1_19_2,tpc:FSC-407.C-8_9_1,tpc:FSC-407.C-8_9_2,tpc:FSC-407.C-9_9_1,tpc:FSC-407.C-9_9_2,tpc:FSC-407.C-10_9_1,tpc:FSC-407.C-11_9_1,tpc:FSC-114.C-0_21_1,tpc:FSC-114.C-0_21_2,tpc:FSC-114.C-2_21_0,tpc:FSC-114.C-2_21_1,tpc:FSC-114.C-2_21_2,tpc:FSC-107.C-2_37_1,tpc:FSC-107.C-0_27_1,tpc:FSC-117.C-0_27_2,tpc:FSC-120.C-0_42_1,tpc:FSC-120.C-0_42_2,tpc:FSC-131.C-0_12_1,tpc:FSC-131.C-0_12_2,tpc:FSC-109.C-0_13_1,tpc:FSC-109.C-0_13_2,tpc:FSC-109.C-0_13_3,tpc:FSC-116.C-0_14_1,tpc:FSC-116.C-0_14_2,tpc:FSC-102.C-0_30_2,tpc:FSC-102.C-0_40_1,tpc:FSC-100.C-0_59_1,tpc:FSC-502.C-1_2_1,tpc:FSC-502.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-501.C-0_1_1,tpc:FSC-999.C-0_62_1,tpc:FSC-503.C-0_1_2</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="CLS"> |
| | | <featuretypeList>tpc:FSC-203.C-1_37_1,tpc:FSC-203.C-0_37_1,tpc:FSC-203.C-1_38_1,tpc:FSC-203.C-0_38_1,tpc:FSC-311.C-0_45_1,tpc:FSC-311.C-1_45_0,tpc:FSC-311.C-1_45_1,tpc:FSC-503.C-0_1_2,tpc:FSC-999.C-0_62_1,tpc:FSC-502.C-1_2_1,tpc:FSC-502.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-501.C-0_1_1</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="LVOH"> |
| | | <featuretypeList>tpc:FSC-402.C-2_15_2,tpc:FSC-402.C-0_5_2,tpc:FSC-402.C-1_15_2,tpc:FSC-402.C-2_37_2,tpc:FSC-402.C-0_27_2,tpc:FSC-402.C-1_37_2,tpc:FSC-402.C-2_16_2,tpc:FSC-402.C-0_6_2,tpc:FSC-402.C-1_16_2,tpc:FSC-407.C-0_10_1,tpc:FSC-407.C-0_9_1,tpc:FSC-407.C-0_9_2,tpc:FSC-407.C-1_19_1,tpc:FSC-407.C-1_19_2,tpc:FSC-407.C-1_20_1,tpc:FSC-407.C-1_9_1,tpc:FSC-407.C-1_9_2,tpc:FSC-407.C-8_9_1,tpc:FSC-407.C-8_9_2,tpc:FSC-407.C-9_10_1,tpc:FSC-407.C-9_9_1,tpc:FSC-407.C-9_9_2,tpc:FSC-115.C-2_50_2,tpc:FSC-115.C-3_50_1,tpc:FSC-115.C-7_58_1,tpc:FSC-200.C-0_28_1,tpc:FSC-200.C-0_30_1,tpc:FSC-202.C-1_36_0,tpc:FSC-202.C-0_36_1,tpc:FSC-203.C-1_38_1,tpc:FSC-204.C-0_49_1,tpc:FSC-205.C-2_41_1,tpc:FSC-205.C-0_39_1,tpc:FSC-208.C-0_44_1,tpc:FSC-209.C-0_46_1,tpc:FSC-211.C-0_32_1,tpc:FSC-212.C-1_34_0,tpc:FSC-303.C-0_29_1,tpc:FSC-305.C-0_34_1,tpc:FSC-306.C-0_36_1,tpc:FSC-307.C-0_38_1,tpc:FSC-308.C-0_40_1,tpc:FSC-314.C-0_26_1,tpc:FSC-314.C-1_28_0,tpc:FSC-315.C-0_26_1,tpc:FSC-315.C-1_28_0,tpc:FSC-316.C-0_54_1,tpc:FSC-317.C-0_32_1,tpc:FSC-317.C-1_32_1,tpc:FSC-318.C-0_54_4,tpc:FSC-503.C-0_1_2,tpc:FSC-502.C-0_1_1,tpc:FSC-502.C-1_2_1,tpc:FSC-501.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-999.C-0_62_1</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="HICUSTOMER"> |
| | | <featuretypeList>tpc:FSC-107.C-0_25_1,tpc:FSC-107.C-0_25_2,tpc:FSC-107.C-0_26_1,tpc:FSC-107.C-0_26_2,tpc:FSC-107.C-0_27_1,tpc:FSC-107.C-2_0_1,tpc:FSC-107.C-2_25_1,tpc:FSC-107.C-2_26_1,tpc:FSC-107.C-2_35_1,tpc:FSC-107.C-2_35_2,tpc:FSC-107.C-2_36_1,tpc:FSC-107.C-2_36_2,tpc:FSC-107.C-2_37_1</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="22KVHVUG"> |
| | | <featuretypeList>tpc:FSC-113.C-0_4_1,tpc:FSC-403.C-2_14_1,tpc:FSC-403.C-2_15_1,tpc:FSC-403.C-1_22_1,tpc:FSC-403.C-1_23_1,tpc:FSC-403.C-1_24_1,tpc:FSC-403.C-1_4_1,tpc:FSC-403.C-1_13_1,tpc:FSC-503.C-0_1_2,tpc:FSC-999.C-0_62_1,tpc:FSC-502.C-1_2_1,tpc:FSC-502.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-501.C-0_1_1,tpc:FSC-101.C-0_51_0,tpc:FSC-101.C-0_51_1,tpc:FSC-140.C-1_54_0,tpc:FSC-140.C-1_54_1,tpc:FSC-140.C-2_54_1,tpc:FSC-140.C-2_54_2,tpc:FSC-140.C-0_54_1,tpc:FSC-140.C-0_54_2,tpc:FSC-140.C-3_54_0,tpc:FSC-140.C-4_54_1,tpc:FSC-402.C-2_37_2,tpc:FSC-402.C-0_27_2,tpc:FSC-402.C-1_37_2,tpc:FSC-402.C-2_16_2,tpc:FSC-402.C-0_6_2,tpc:FSC-402.C-1_16_2,tpc:FSC-411.C-0_27_1,tpc:FSC-411.C-0_27_2,tpc:FSC-411.C-0_8_1,tpc:FSC-411.C-0_8_2,tpc:FSC-411.C-1_37_1,tpc:FSC-411.C-1_37_2,tpc:FSC-411.C-1_18_1,tpc:FSC-411.C-1_18_2,tpc:FSC-118.C-0_50_2,tpc:FSC-115.C-0_48_1,tpc:FSC-115.C-0_48_2,tpc:FSC-114.C-3_60_1,tpc:FSC-114.C-3_60_2,tpc:FSC-114.C-2_24_1,tpc:FSC-114.C-2_24_2,tpc:FSC-114.C-0_24_1,tpc:FSC-114.C-0_24_2,tpc:FSC-114.C-1_34_1,tpc:FSC-114.C-1_34_2,tpc:FSC-122.C-0_24_1,tpc:FSC-122.C-1_34_1,tpc:FSC-107.C-0_26_1,tpc:FSC-107.C-0_26_2,tpc:FSC-117.C-0_27_2,tpc:FSC-105.C-0_39_1,tpc:FSC-105.C-0_39_2,tpc:FSC-120.C-0_52_1,tpc:FSC-120.C-0_52_2,tpc:FSC-108.C-0_45_2,tpc:FSC-108.C-1_55_2,tpc:FSC-119.C-0_62_2</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="11KVSUBHV"> |
| | | <featuretypeList>tpc:FSC-502.C-1_2_1,tpc:FSC-502.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-501.C-0_1_1,tpc:FSC-999.C-0_62_1,tpc:FSC-503.C-0_1_2,tpc:FSC-114.C-3_60_1,tpc:FSC-114.C-2_23_1,tpc:FSC-114.C-0_23_1,tpc:FSC-114.C-1_33_1,tpc:FSC-106.C-2_2_1,tpc:FSC-106.C-0_2_1,tpc:FSC-106.C-2_1_1,tpc:FSC-106.C-0_1_1,tpc:FSC-106.C-4_1_1,tpc:FSC-115.C-0_47_1,tpc:FSC-115.C-1_57_1,tpc:FSC-122.C-0_23_1,tpc:FSC-122.C-1_33_1,tpc:FSC-105.C-0_29_1,tpc:FSC-114.C-0_21_1,tpc:FSC-115.C-6_47_1,tpc:FSC-115.C-0_46_1,tpc:FSC-115.C-1_46_1,tpc:FSC-411.C-0_7_1,tpc:FSC-411.C-1_17_1,tpc:FSC-107.C-2_35_1,tpc:FSC-107.C-0_25_1,tpc:FSC-107.C-2_37_1,tpc:FSC-107.C-0_27_1,tpc:FSC-116.C-0_14_1,tpc:FSC-120.C-0_42_1,tpc:FSC-101.C-0_41_0,tpc:FSC-109.C-0_13_1,tpc:FSC-102.C-0_40_1,tpc:FSC-407.C-0_9_1,tpc:FSC-407.C-1_19_1,tpc:FSC-407.C-8_9_1,tpc:FSC-407.C-9_9_1,tpc:FSC-407.C-10_9_1,tpc:FSC-407.C-11_9_1,tpc:FSC-130.C-0_11_1,tpc:FSC-131.C-0_12_1,tpc:FSC-411.C-0_27_1,tpc:FSC-411.C-1_37_1</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="FIBER"> |
| | | <featuretypeList>tpc:FSC-402.C-0_5_2,tpc:FSC-402.C-0_27_2,tpc:FSC-402.C-0_6_2,tpc:FSC-402.C-1_15_2,tpc:FSC-402.C-1_37_2,tpc:FSC-402.C-1_16_2,tpc:FSC-300.C-3_11_1,tpc:FSC-300.C-2_11_1,tpc:FSC-300.C-0_10_2,tpc:FSC-319.C-0_12_1,tpc:FSC-320.C-0_13_1,tpc:FSC-323.C-0_1_1,tpc:FSC-324.C-1_2_1,tpc:FSC-324.C-0_1_1,tpc:FSC-403.C-6_45_1,tpc:FSC-403.C-7_45_1,tpc:FSC-503.C-0_1_2,tpc:FSC-999.C-0_62_1,tpc:FSC-502.C-1_2_1,tpc:FSC-502.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-501.C-0_1_1</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="LINEFEATURE"> |
| | | <featuretypeList>tpc:FSC-115.C-0_46_1,tpc:FSC-115.C-0_46_2,tpc:FSC-115.C-0_56_1,tpc:FSC-115.C-1_46_1,tpc:FSC-115.C-1_46_2,tpc:FSC-115.C-1_56_1,tpc:FSC-115.C-0_47_1,tpc:FSC-115.C-0_47_2,tpc:FSC-115.C-0_48_1,tpc:FSC-115.C-0_48_2,tpc:FSC-102.C-0_30_2,tpc:FSC-102.C-0_40_1,tpc:FSC-117.C-0_27_2</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="22KVMAINHV"> |
| | | <featuretypeList>tpc:FSC-117.C-0_27_2,tpc:FSC-502.C-1_2_1,tpc:FSC-502.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-501.C-0_1_1,tpc:FSC-999.C-0_62_1,tpc:FSC-503.C-0_1_2,tpc:FSC-118.C-0_50_2,tpc:FSC-114.C-3_60_2,tpc:FSC-114.C-2_24_2,tpc:FSC-114.C-0_24_2,tpc:FSC-114.C-1_34_2,tpc:FSC-106.C-0_4_2,tpc:FSC-115.C-0_48_2,tpc:FSC-105.C-0_39_2,tpc:FSC-411.C-0_8_2,tpc:FSC-411.C-1_18_2,tpc:FSC-107.C-0_26_2,tpc:FSC-107.C-2_36_2,tpc:FSC-120.C-0_52_2,tpc:FSC-101.C-0_51_1,tpc:FSC-119.C-0_62_2,tpc:FSC-108.C-0_45_2,tpc:FSC-108.C-1_55_2,tpc:FSC-402.C-2_16_2,tpc:FSC-402.C-0_6_2,tpc:FSC-402.C-1_16_2,tpc:FSC-402.C-2_37_2,tpc:FSC-402.C-1_37_2,tpc:FSC-100.C-0_60_2</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="SLS"> |
| | | <featuretypeList>tpc:FSC-402.C-2_15_2,tpc:FSC-402.C-0_5_2,tpc:FSC-402.C-1_15_2,tpc:FSC-402.C-2_37_2,tpc:FSC-402.C-0_27_2,tpc:FSC-402.C-1_37_2,tpc:FSC-402.C-2_16_2,tpc:FSC-402.C-0_6_2,tpc:FSC-402.C-1_16_2,tpc:FSC-115.C-3_50_1,tpc:FSC-115.C-3_51_1,tpc:FSC-115.C-2_50_2,tpc:FSC-115.C-2_51_2,tpc:FSC-115.C-7_55_1,tpc:FSC-115.C-7_58_1,tpc:FSC-407.C-0_9_1,tpc:FSC-407.C-0_9_2,tpc:FSC-407.C-0_10_1,tpc:FSC-407.C-1_19_1,tpc:FSC-407.C-1_19_2,tpc:FSC-407.C-1_20_1,tpc:FSC-407.C-8_9_1,tpc:FSC-407.C-8_9_2,tpc:FSC-203.C-0_37_1,tpc:FSC-203.C-0_38_1,tpc:FSC-203.C-1_37_1,tpc:FSC-203.C-1_38_1,tpc:FSC-303.C-0_29_1,tpc:FSC-303.C-1_43_0,tpc:FSC-303.C-3_43_0,tpc:FSC-301.C-0_21_1,tpc:FSC-301.C-1_23_0,tpc:FSC-301.C-3_23_0,tpc:FSC-305.C-0_33_1,tpc:FSC-305.C-0_34_1,tpc:FSC-306.C-0_35_1,tpc:FSC-306.C-0_36_1,tpc:FSC-307.C-0_46_1,tpc:FSC-307.C-0_37_1,tpc:FSC-307.C-0_38_1,tpc:FSC-308.C-0_39_1,tpc:FSC-308.C-0_40_1,tpc:FSC-314.C-0_26_1,tpc:FSC-314.C-1_28_0,tpc:FSC-315.C-0_26_1,tpc:FSC-315.C-1_28_0,tpc:FSC-316.C-0_53_1,tpc:FSC-316.C-0_54_1,tpc:FSC-317.C-0_31_1,tpc:FSC-317.C-0_32_1,tpc:FSC-318.C-0_53_4,tpc:FSC-318.C-0_54_4,tpc:FSC-302.C-0_25_1,tpc:FSC-302.C-1_27_0,tpc:FSC-317.C-1_31_1,tpc:FSC-317.C-1_32_1,tpc:FSC-403.C-4_44_1,tpc:FSC-403.C-5_44_1,tpc:FSC-503.C-0_1_2,tpc:FSC-999.C-0_62_1,tpc:FSC-502.C-0_1_1,tpc:FSC-502.C-1_2_1,tpc:FSC-501.C-0_1_1,tpc:FSC-501.C-1_2_1</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="OMS"> |
| | | <featuretypeList>tpc:FSC-101.C-0_41_0,tpc:FSC-503.C-0_1_2,tpc:FSC-502.C-1_2_1,tpc:FSC-502.C-0_1_1,tpc:FSC-501.C-0_1_1,tpc:FSC-411.C-1_37_2,tpc:FSC-411.C-1_37_1,tpc:FSC-411.C-1_18_2,tpc:FSC-411.C-1_18_1,tpc:FSC-411.C-1_17_2,tpc:FSC-411.C-1_17_1,tpc:FSC-411.C-0_8_2,tpc:FSC-411.C-0_8_1,tpc:FSC-411.C-0_7_2,tpc:FSC-411.C-0_7_1,tpc:FSC-411.C-0_27_2,tpc:FSC-411.C-0_27_1,tpc:FSC-407.C-8_9_2,tpc:FSC-407.C-8_9_1,tpc:FSC-407.C-1_20_1,tpc:FSC-407.C-1_19_2,tpc:FSC-407.C-1_19_1,tpc:FSC-407.C-0_9_2,tpc:FSC-407.C-0_9_1,tpc:FSC-407.C-0_10_1,tpc:FSC-402.C-2_16_2,tpc:FSC-402.C-2_15_2,tpc:FSC-402.C-1_27_2,tpc:FSC-402.C-1_16_2,tpc:FSC-402.C-1_15_2,tpc:FSC-402.C-0_6_2,tpc:FSC-402.C-0_5_2,tpc:FSC-402.C-0_27_2,tpc:FSC-131.C-0_12_2,tpc:FSC-131.C-0_12_1,tpc:FSC-130.C-0_11_2,tpc:FSC-130.C-0_11_1,tpc:FSC-122.C-1_34_1,tpc:FSC-122.C-1_33_2,tpc:FSC-122.C-1_33_1,tpc:FSC-122.C-0_24_1,tpc:FSC-122.C-0_23_2,tpc:FSC-122.C-0_23_1,tpc:FSC-120.C-0_52_2,tpc:FSC-120.C-0_52_1,tpc:FSC-120.C-0_42_2,tpc:FSC-120.C-0_42_1,tpc:FSC-119.C-0_62_2,tpc:FSC-119.C-0_61_2,tpc:FSC-118.C-0_50_2,tpc:FSC-118.C-0_49_2,tpc:FSC-115.C-0_56_1,tpc:FSC-115.C-0_56_1,tpc:FSC-115.C-0_48_2,tpc:FSC-115.C-0_48_1,tpc:FSC-115.C-0_47_2,tpc:FSC-115.C-0_47_1,tpc:FSC-115.C-0_46_2,tpc:FSC-115.C-0_46_1,tpc:FSC-114.C-3_60_2,tpc:FSC-114.C-3_60_1,tpc:FSC-114.C-2_24_2,tpc:FSC-114.C-2_24_1,tpc:FSC-114.C-2_23_2,tpc:FSC-114.C-2_23_1,tpc:FSC-114.C-2_21_2,tpc:FSC-114.C-2_21_1,tpc:FSC-114.C-2_21_0,tpc:FSC-114.C-1_34_2,tpc:FSC-114.C-1_34_1,tpc:FSC-114.C-1_33_2,tpc:FSC-114.C-1_33_1,tpc:FSC-114.C-0_24_2,tpc:FSC-114.C-0_24_1,tpc:FSC-114.C-0_23_2,tpc:FSC-114.C-0_23_1,tpc:FSC-114.C-0_21_2,tpc:FSC-114.C-0_21_1,tpc:FSC-109.C-0_13_3,tpc:FSC-109.C-0_13_2,tpc:FSC-109.C-0_13_1,tpc:FSC-108.C-1_55_2,tpc:FSC-108.C-1_54_2,tpc:FSC-108.C-0_45_2,tpc:FSC-108.C-0_44_2,tpc:FSC-107.C-2_36_2,tpc:FSC-107.C-2_36_1,tpc:FSC-107.C-2_35_2,tpc:FSC-107.C-2_35_1,tpc:FSC-107.C-0_27_1,tpc:FSC-107.C-0_26_2,tpc:FSC-107.C-0_26_1,tpc:FSC-107.C-0_25_2,tpc:FSC-107.C-0_25_1,tpc:FSC-106.C-0_4_1,tpc:FSC-106.C-0_3_1,tpc:FSC-106.C-0_2_2,tpc:FSC-106.C-0_2_1,tpc:FSC-106.C-0_1_2,tpc:FSC-106.C-0_1_1,tpc:FSC-102.C-0_40_1,tpc:FSC-102.C-0_30_2,tpc:FSC-101.C-0_51_1,tpc:FSC-101.C-0_51_0,tpc:FSC-101.C-0_41_1</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="LVPIPE"> |
| | | <featuretypeList>tpc:FSC-402.C-2_15_2,tpc:FSC-402.C-0_5_2,tpc:FSC-402.C-1_15_2,tpc:FSC-402.C-2_37_2,tpc:FSC-402.C-0_27_2,tpc:FSC-402.C-1_37_2,tpc:FSC-402.C-2_16_2,tpc:FSC-402.C-0_6_2,tpc:FSC-402.C-1_16_2,tpc:FSC-411.C-2_7_1,tpc:FSC-411.C-2_7_2,tpc:FSC-411.C-2_8_1,tpc:FSC-411.C-2_8_2,tpc:FSC-411.C-3_17_1,tpc:FSC-411.C-3_17_2,tpc:FSC-411.C-3_37_1,tpc:FSC-411.C-3_37_2,tpc:FSC-411.C-3_18_1,tpc:FSC-411.C-3_18_2,tpc:FSC-411.C-7_7_1,tpc:FSC-411.C-7_7_2,tpc:FSC-411.C-7_8_1,tpc:FSC-407.C-2_9_1,tpc:FSC-407.C-2_9_2,tpc:FSC-407.C-2_10_1,tpc:FSC-407.C-2_10_1,tpc:FSC-407.C-3_19_1,tpc:FSC-407.C-3_19_2,tpc:FSC-407.C-3_20_1,tpc:FSC-407.C-7_10_1,tpc:FSC-407.C-7_9_1,tpc:FSC-407.C-7_9_2,tpc:FSC-202.C-1_35_0,tpc:FSC-202.C-0_35_1,tpc:FSC-203.C-1_37_1,tpc:FSC-203.C-0_37_1,tpc:FSC-206.C-2_1_0,tpc:FSC-206.C-1_1_1,tpc:FSC-206.C-0_1_1,tpc:FSC-207.C-1_1_0,tpc:FSC-207.C-0_1_1,tpc:FSC-209.C-0_45_1,tpc:FSC-216.C-2_1_0,tpc:FSC-216.C-1_1_1,tpc:FSC-216.C-0_1_1,tpc:FSC-401.C-1_11_0,tpc:FSC-401.C-0_11_1,tpc:FSC-401.C-2_11_1,tpc:FSC-401.C-3_11_0,tpc:FSC-403.C-0_11_1,tpc:FSC-403.C-1_11_1,tpc:FSC-403.C-0_3_1,tpc:FSC-403.C-1_3_1,tpc:FSC-403.C-0_22_1,tpc:FSC-403.C-0_23_1,tpc:FSC-403.C-0_24_1,tpc:FSC-403.C-1_22_1,tpc:FSC-403.C-1_23_1,tpc:FSC-403.C-1_24_1,tpc:FSC-420.C-0_54_3,tpc:FSC-420.C-1_2_1,tpc:FSC-421.C-1_2_1,tpc:FSC-421.C-0_1_3,tpc:FSC-424.C-0_1_1,tpc:FSC-503.C-0_1_2,tpc:FSC-502.C-1_2_1,tpc:FSC-502.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-501.C-0_1_1,tpc:FSC-999.C-0_62_1</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="POLE"> |
| | | <featuretypeList>tpc:FSC-407.C-0_10_1,tpc:FSC-407.C-0_9_1,tpc:FSC-407.C-0_9_2,tpc:FSC-407.C-1_19_1,tpc:FSC-407.C-1_19_2,tpc:FSC-407.C-1_20_1,tpc:FSC-407.C-1_9_1,tpc:FSC-407.C-1_9_2</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="22KVHVOH"> |
| | | <featuretypeList>tpc:FSC-115.C-0_56_1,tpc:FSC-115.C-1_56_1,tpc:FSC-402.C-2_37_2,tpc:FSC-402.C-0_27_2,tpc:FSC-402.C-1_37_2,tpc:FSC-402.C-2_16_2,tpc:FSC-402.C-0_6_2,tpc:FSC-402.C-1_16_2,tpc:FSC-407.C-0_10_1,tpc:FSC-407.C-1_20_1,tpc:FSC-407.C-9_10_1,tpc:FSC-117.C-0_27_2,tpc:FSC-118.C-0_50_2,tpc:FSC-108.C-1_55_2,tpc:FSC-119.C-0_62_2,tpc:FSC-100.C-0_60_2,tpc:FSC-503.C-0_1_2,tpc:FSC-999.C-0_62_1,tpc:FSC-502.C-1_2_1,tpc:FSC-502.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-501.C-0_1_1</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="11KVHVUG"> |
| | | <featuretypeList>tpc:FSC-113.C-0_4_1,tpc:FSC-122.C-0_23_1,tpc:FSC-122.C-0_23_2,tpc:FSC-122.C-1_33_1,tpc:FSC-122.C-1_33_2,tpc:FSC-140.C-1_52_0,tpc:FSC-140.C-1_52_1,tpc:FSC-140.C-2_52_2,tpc:FSC-140.C-2_52_1,tpc:FSC-140.C-0_52_2,tpc:FSC-140.C-0_52_1,tpc:FSC-402.C-0_5_2,tpc:FSC-402.C-1_15_2,tpc:FSC-402.C-2_37_2,tpc:FSC-402.C-0_27_2,tpc:FSC-402.C-1_37_2,tpc:FSC-411.C-1_17_1,tpc:FSC-411.C-1_17_2,tpc:FSC-411.C-1_37_1,tpc:FSC-411.C-1_37_2,tpc:FSC-411.C-0_7_1,tpc:FSC-411.C-0_7_1,tpc:FSC-107.C-2_35_1,tpc:FSC-107.C-2_35_2,tpc:FSC-107.C-0_25_1,tpc:FSC-107.C-0_25_2,tpc:FSC-107.C-0_27_1,tpc:FSC-105.C-0_29_1,tpc:FSC-105.C-0_29_2,tpc:FSC-101.C-0_41_0,tpc:FSC-101.C-0_41_1,tpc:FSC-130.C-0_11_1,tpc:FSC-130.C-0_11_2,tpc:FSC-108.C-0_44_2,tpc:FSC-108.C-1_54_2,tpc:FSC-119.C-0_61_2,tpc:FSC-115.C-0_47_1,tpc:FSC-115.C-0_47_2,tpc:FSC-118.C-0_49_2,tpc:FSC-403.C-2_14_1,tpc:FSC-403.C-2_15_1,tpc:FSC-403.C-1_22_1,tpc:FSC-403.C-1_23_1,tpc:FSC-403.C-1_24_1,tpc:FSC-403.C-1_4_1,tpc:FSC-403.C-1_13_1,tpc:FSC-503.C-0_1_2,tpc:FSC-999.C-0_62_1,tpc:FSC-502.C-1_2_1,tpc:FSC-502.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-501.C-0_1_1,tpc:FSC-114.C-1_33_1,tpc:FSC-114.C-1_33_2,tpc:FSC-114.C-3_60_1,tpc:FSC-114.C-3_60_2,tpc:FSC-114.C-2_23_1,tpc:FSC-114.C-0_23_1,tpc:FSC-114.C-0_23_2</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="11KVMAINHV"> |
| | | <featuretypeList>tpc:FSC-117.C-0_27_2,tpc:FSC-502.C-1_2_1,tpc:FSC-502.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-501.C-0_1_1,tpc:FSC-999.C-0_62_1,tpc:FSC-503.C-0_1_2,tpc:FSC-118.C-0_49_2,tpc:FSC-114.C-3_60_2,tpc:FSC-114.C-2_23_2,tpc:FSC-114.C-1_33_2,tpc:FSC-106.C-2_2_2,tpc:FSC-106.C-0_2_2,tpc:FSC-115.C-0_47_2,tpc:FSC-122.C-0_23_2,tpc:FSC-122.C-1_33_2,tpc:FSC-105.C-0_29_2,tpc:FSC-114.C-2_21_2,tpc:FSC-114.C-0_21_2,tpc:FSC-106.C-2_1_2,tpc:FSC-106.C-0_1_2,tpc:FSC-106.C-4_1_2,tpc:FSC-115.C-6_47_2,tpc:FSC-115.C-0_46_2,tpc:FSC-115.C-1_46_2,tpc:FSC-411.C-0_7_2,tpc:FSC-411.C-1_17_2,tpc:FSC-107.C-2_35_2,tpc:FSC-107.C-0_25_2,tpc:FSC-116.C-0_14_2,tpc:FSC-120.C-0_42_2,tpc:FSC-101.C-0_41_1,tpc:FSC-109.C-0_13_2,tpc:FSC-102.C-0_30_2,tpc:FSC-407.C-0_9_2,tpc:FSC-407.C-1_19_2,tpc:FSC-407.C-8_9_2,tpc:FSC-407.C-9_9_2,tpc:FSC-119.C-0_61_2,tpc:FSC-130.C-0_11_2,tpc:FSC-131.C-0_12_2,tpc:FSC-108.C-0_44_2,tpc:FSC-108.C-1_54_2,tpc:FSC-402.C-2_15_2,tpc:FSC-402.C-0_5_2,tpc:FSC-402.C-1_15_2,tpc:FSC-100.C-0_59_1,tpc:FSC-411.C-0_27_2,tpc:FSC-411.C-1_37_2,tpc:FSC-402.C-2_37_2,tpc:FSC-402.C-0_27_2,tpc:FSC-402.C-1_37_2</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="ALL"> |
| | | <featuretypeList>tpc:FSC-100.C-0_59_1,tpc:FSC-100.C-0_60_2,tpc:FSC-101.C-0_41_0,tpc:FSC-101.C-0_41_1,tpc:FSC-101.C-0_51_0,tpc:FSC-101.C-0_51_1,tpc:FSC-102.C-0_30_2,tpc:FSC-102.C-0_40_1,tpc:FSC-105.C-0_29_1,tpc:FSC-105.C-0_29_2,tpc:FSC-105.C-0_39_1,tpc:FSC-105.C-0_39_2,tpc:FSC-105.C-0_60_2,tpc:FSC-106.C-0_19_2,tpc:FSC-106.C-0_1_1,tpc:FSC-106.C-0_1_2,tpc:FSC-106.C-0_24_2,tpc:FSC-106.C-0_2_1,tpc:FSC-106.C-0_2_2,tpc:FSC-106.C-0_3_1,tpc:FSC-106.C-0_4_1,tpc:FSC-106.C-0_4_2,tpc:FSC-106.C-2_1_1,tpc:FSC-106.C-2_1_2,tpc:FSC-106.C-2_2_1,tpc:FSC-106.C-2_2_2,tpc:FSC-106.C-2_3_1,tpc:FSC-106.C-2_4_1,tpc:FSC-106.C-4_1_1,tpc:FSC-106.C-4_1_2,tpc:FSC-107.C-0_25_1,tpc:FSC-107.C-0_25_2,tpc:FSC-107.C-0_26_1,tpc:FSC-107.C-0_26_2,tpc:FSC-107.C-0_27_1,tpc:FSC-107.C-2_0_1,tpc:FSC-107.C-2_25_1,tpc:FSC-107.C-2_26_1,tpc:FSC-107.C-2_35_1,tpc:FSC-107.C-2_35_2,tpc:FSC-107.C-2_36_1,tpc:FSC-107.C-2_36_2,tpc:FSC-107.C-2_37_1,tpc:FSC-108.C-0_44_2,tpc:FSC-108.C-0_45_2,tpc:FSC-108.C-1_0_2,tpc:FSC-108.C-1_54_2,tpc:FSC-108.C-1_55_2,tpc:FSC-109.C-0_13_1,tpc:FSC-109.C-0_13_2,tpc:FSC-109.C-0_13_3,tpc:FSC-113.C-0_4_1,tpc:FSC-114.C-0_21_1,tpc:FSC-114.C-0_21_2,tpc:FSC-114.C-0_23_1,tpc:FSC-114.C-0_23_2,tpc:FSC-114.C-0_24_1,tpc:FSC-114.C-0_24_2,tpc:FSC-114.C-1_23_1,tpc:FSC-114.C-1_23_2,tpc:FSC-114.C-1_24_1,tpc:FSC-114.C-1_24_2,tpc:FSC-114.C-1_33_1,tpc:FSC-114.C-1_33_2,tpc:FSC-114.C-1_34_1,tpc:FSC-114.C-1_34_2,tpc:FSC-114.C-2_21_0,tpc:FSC-114.C-2_21_1,tpc:FSC-114.C-2_21_2,tpc:FSC-114.C-2_23_1,tpc:FSC-114.C-2_23_2,tpc:FSC-114.C-2_24_1,tpc:FSC-114.C-2_24_2,tpc:FSC-114.C-2_60_1,tpc:FSC-114.C-2_60_2,tpc:FSC-114.C-3_33_1,tpc:FSC-114.C-3_33_2,tpc:FSC-114.C-3_34_1,tpc:FSC-114.C-3_34_2,tpc:FSC-114.C-3_60_1,tpc:FSC-114.C-3_60_2,tpc:FSC-115.C-0_46_1,tpc:FSC-115.C-0_46_2,tpc:FSC-115.C-0_47_1,tpc:FSC-115.C-0_47_2,tpc:FSC-115.C-0_48_1,tpc:FSC-115.C-0_48_2,tpc:FSC-115.C-0_56_1,tpc:FSC-115.C-1_46_1,tpc:FSC-115.C-1_46_2,tpc:FSC-115.C-1_56_1,tpc:FSC-115.C-1_57_1,tpc:FSC-115.C-2_50_2,tpc:FSC-115.C-2_51_2,tpc:FSC-115.C-3_50_1,tpc:FSC-115.C-3_51_1,tpc:FSC-115.C-4_13_2,tpc:FSC-115.C-4_14_2,tpc:FSC-115.C-4_51_2,tpc:FSC-115.C-4_60_2,tpc:FSC-115.C-5_13_1,tpc:FSC-115.C-5_14_1,tpc:FSC-115.C-5_51_1,tpc:FSC-115.C-5_60_1,tpc:FSC-115.C-6_13_1,tpc:FSC-115.C-6_14_1,tpc:FSC-115.C-6_47_1,tpc:FSC-115.C-6_47_2,tpc:FSC-115.C-6_48_1,tpc:FSC-115.C-6_51_1,tpc:FSC-115.C-6_56_1,tpc:FSC-115.C-6_58_1,tpc:FSC-115.C-6_60_1,tpc:FSC-115.C-7_55_1,tpc:FSC-115.C-7_58_1,tpc:FSC-115.C-8_47_1,tpc:FSC-115.C-8_47_2,tpc:FSC-115.C-8_48_1,tpc:FSC-116.C-0_14_1,tpc:FSC-116.C-0_14_2,tpc:FSC-117.C-0_27_2,tpc:FSC-118.C-0_49_2,tpc:FSC-118.C-0_50_2,tpc:FSC-119.C-0_61_2,tpc:FSC-119.C-0_62_2,tpc:FSC-120.C-0_42_1,tpc:FSC-120.C-0_42_2,tpc:FSC-120.C-0_52_1,tpc:FSC-120.C-0_52_2,tpc:FSC-122.C-0_23_1,tpc:FSC-122.C-0_23_2,tpc:FSC-122.C-0_24_1,tpc:FSC-122.C-1_23_1,tpc:FSC-122.C-1_24_1,tpc:FSC-122.C-1_33_1,tpc:FSC-122.C-1_33_2,tpc:FSC-122.C-1_34_1,tpc:FSC-130.C-0_11_1,tpc:FSC-130.C-0_11_2,tpc:FSC-131.C-0_12_1,tpc:FSC-131.C-0_12_2,tpc:FSC-140.C-0_51_1,tpc:FSC-140.C-0_51_2,tpc:FSC-140.C-0_52_1,tpc:FSC-140.C-0_52_2,tpc:FSC-140.C-0_54_1,tpc:FSC-140.C-0_54_2,tpc:FSC-140.C-0_60_1,tpc:FSC-140.C-0_60_2,tpc:FSC-140.C-1_52_0,tpc:FSC-140.C-1_52_1,tpc:FSC-140.C-1_54_0,tpc:FSC-140.C-1_54_1,tpc:FSC-140.C-2_51_1,tpc:FSC-140.C-2_51_2,tpc:FSC-140.C-2_52_1,tpc:FSC-140.C-2_52_2,tpc:FSC-140.C-2_54_1,tpc:FSC-140.C-2_54_2,tpc:FSC-140.C-3_54_0,tpc:FSC-140.C-4_54_1,tpc:FSC-200.C-0_28_1,tpc:FSC-200.C-0_29_1,tpc:FSC-200.C-0_30_1,tpc:FSC-200.C-0_60_1,tpc:FSC-201.C-0_31_1,tpc:FSC-201.C-0_40_1,tpc:FSC-201.C-1_33_0,tpc:FSC-201.C-1_40_0,tpc:FSC-202.C-0_35_1,tpc:FSC-202.C-0_36_1,tpc:FSC-202.C-0_56_1,tpc:FSC-202.C-1_13_0,tpc:FSC-202.C-1_35_0,tpc:FSC-202.C-1_36_0,tpc:FSC-202.C-1_53_0,tpc:FSC-202.C-1_56_0,tpc:FSC-202.C-1_60_0,tpc:FSC-203.C-0_37_1,tpc:FSC-203.C-0_38_1,tpc:FSC-203.C-1_13_1,tpc:FSC-203.C-1_37_1,tpc:FSC-203.C-1_38_1,tpc:FSC-204.C-0_49_1,tpc:FSC-205.C-0_39_1,tpc:FSC-205.C-2_41_1,tpc:FSC-206.C-0_1_1,tpc:FSC-206.C-1_1_1,tpc:FSC-206.C-2_1_0,tpc:FSC-207.C-0_1_1,tpc:FSC-207.C-1_1_0,tpc:FSC-207.C-2_1_1,tpc:FSC-208.C-0_43_1,tpc:FSC-208.C-0_44_1,tpc:FSC-209.C-0_45_1,tpc:FSC-209.C-0_46_1,tpc:FSC-209.C-1_45_1,tpc:FSC-209.C-1_46_1,tpc:FSC-210.C-4_42_0,tpc:FSC-211.C-0_32_1,tpc:FSC-212.C-1_34_0,tpc:FSC-213.C-0_31_1,tpc:FSC-213.C-1_33_0,tpc:FSC-215.C-0_45_1,tpc:FSC-216.C-0_1_1,tpc:FSC-216.C-1_1_1,tpc:FSC-216.C-2_1_0,tpc:FSC-217.C-0_11_1,tpc:FSC-300.C-0_10_2,tpc:FSC-300.C-2_11_1,tpc:FSC-300.C-3_11_1,tpc:FSC-301.C-0_21_1,tpc:FSC-301.C-0_60_1,tpc:FSC-301.C-1_23_0,tpc:FSC-301.C-1_60_0,tpc:FSC-301.C-3_23_0,tpc:FSC-301.C-3_60_0,tpc:FSC-302.C-0_25_1,tpc:FSC-302.C-1_27_0,tpc:FSC-303.C-0_29_1,tpc:FSC-303.C-1_43_0,tpc:FSC-303.C-3_43_0,tpc:FSC-305.C-0_33_1,tpc:FSC-305.C-0_34_1,tpc:FSC-306.C-0_35_1,tpc:FSC-306.C-0_36_1,tpc:FSC-307.C-0_37_1,tpc:FSC-307.C-0_38_1,tpc:FSC-307.C-0_46_1,tpc:FSC-308.C-0_39_1,tpc:FSC-308.C-0_40_1,tpc:FSC-311.C-0_45_1,tpc:FSC-311.C-0_60_1,tpc:FSC-311.C-0_63_1,tpc:FSC-311.C-1_45_0,tpc:FSC-311.C-1_45_1,tpc:FSC-311.C-1_60_1,tpc:FSC-311.C-1_63_1,tpc:FSC-314.C-0_26_1,tpc:FSC-314.C-1_28_0,tpc:FSC-315.C-0_26_1,tpc:FSC-315.C-1_28_0,tpc:FSC-316.C-0_53_1,tpc:FSC-316.C-0_54_1,tpc:FSC-317.C-0_31_1,tpc:FSC-317.C-0_32_1,tpc:FSC-317.C-1_31_1,tpc:FSC-317.C-1_32_1,tpc:FSC-318.C-0_53_4,tpc:FSC-318.C-0_54_4,tpc:FSC-319.C-0_12_1,tpc:FSC-320.C-0_13_1,tpc:FSC-323.C-0_1_1,tpc:FSC-324.C-0_1_1,tpc:FSC-324.C-1_2_1,tpc:FSC-401.C-0_11_1,tpc:FSC-401.C-0_4_2,tpc:FSC-401.C-0_60_1,tpc:FSC-401.C-1_11_0,tpc:FSC-401.C-1_4_0,tpc:FSC-401.C-2_11_1,tpc:FSC-401.C-2_4_1,tpc:FSC-401.C-3_11_0,tpc:FSC-401.C-3_4_1,tpc:FSC-401.C-5_4_1,tpc:FSC-402.C-0_27_2,tpc:FSC-402.C-0_5_2,tpc:FSC-402.C-0_6_2,tpc:FSC-402.C-1_15_2,tpc:FSC-402.C-1_16_2,tpc:FSC-402.C-1_27_2,tpc:FSC-402.C-1_37_2,tpc:FSC-402.C-1_5_2,tpc:FSC-402.C-1_6_2,tpc:FSC-402.C-2_15_2,tpc:FSC-402.C-2_16_2,tpc:FSC-402.C-2_37_2,tpc:FSC-403.C-0_11_1,tpc:FSC-403.C-0_13_1,tpc:FSC-403.C-0_22_1,tpc:FSC-403.C-0_23_1,tpc:FSC-403.C-0_24_1,tpc:FSC-403.C-0_3_1,tpc:FSC-403.C-0_4_1,tpc:FSC-403.C-1_11_1,tpc:FSC-403.C-1_13_1,tpc:FSC-403.C-1_14_1,tpc:FSC-403.C-1_22_1,tpc:FSC-403.C-1_23_1,tpc:FSC-403.C-1_24_1,tpc:FSC-403.C-1_3_1,tpc:FSC-403.C-1_4_1,tpc:FSC-403.C-1_60_1,tpc:FSC-403.C-2_13_1,tpc:FSC-403.C-2_14_1,tpc:FSC-403.C-2_15_1,tpc:FSC-403.C-2_20_1,tpc:FSC-403.C-2_60_1,tpc:FSC-403.C-4_11_1,tpc:FSC-403.C-4_44_1,tpc:FSC-403.C-5_11_1,tpc:FSC-403.C-5_44_1,tpc:FSC-403.C-5_60_1,tpc:FSC-403.C-6_45_1,tpc:FSC-403.C-7_45_1,tpc:FSC-407.C-0_10_1,tpc:FSC-407.C-0_9_1,tpc:FSC-407.C-0_9_2,tpc:FSC-407.C-10_9_1,tpc:FSC-407.C-11_9_1,tpc:FSC-407.C-1_19_1,tpc:FSC-407.C-1_19_2,tpc:FSC-407.C-1_20_1,tpc:FSC-407.C-1_9_1,tpc:FSC-407.C-1_9_2,tpc:FSC-407.C-2_10_1,tpc:FSC-407.C-2_9_1,tpc:FSC-407.C-2_9_2,tpc:FSC-407.C-3_19_1,tpc:FSC-407.C-3_19_2,tpc:FSC-407.C-3_20_1,tpc:FSC-407.C-7_10_1,tpc:FSC-407.C-7_9_1,tpc:FSC-407.C-7_9_2,tpc:FSC-407.C-8_9_1,tpc:FSC-407.C-8_9_2,tpc:FSC-407.C-9_10_1,tpc:FSC-407.C-9_9_1,tpc:FSC-407.C-9_9_2,tpc:FSC-411.C-0_27_1,tpc:FSC-411.C-0_27_2,tpc:FSC-411.C-0_7_1,tpc:FSC-411.C-0_7_2,tpc:FSC-411.C-0_8_1,tpc:FSC-411.C-0_8_2,tpc:FSC-411.C-1_17_1,tpc:FSC-411.C-1_17_2,tpc:FSC-411.C-1_18_1,tpc:FSC-411.C-1_18_2,tpc:FSC-411.C-1_37_1,tpc:FSC-411.C-1_37_2,tpc:FSC-411.C-1_7_1,tpc:FSC-411.C-1_7_2,tpc:FSC-411.C-1_8_1,tpc:FSC-411.C-1_8_2,tpc:FSC-411.C-2_27_1,tpc:FSC-411.C-2_27_2,tpc:FSC-411.C-2_7_1,tpc:FSC-411.C-2_7_2,tpc:FSC-411.C-2_8_1,tpc:FSC-411.C-2_8_2,tpc:FSC-411.C-3_17_1,tpc:FSC-411.C-3_17_2,tpc:FSC-411.C-3_18_1,tpc:FSC-411.C-3_18_2,tpc:FSC-411.C-3_37_1,tpc:FSC-411.C-3_37_2,tpc:FSC-411.C-7_7_1,tpc:FSC-411.C-7_7_2,tpc:FSC-411.C-7_8_1,tpc:FSC-420.C-0_54_3,tpc:FSC-420.C-1_2_1,tpc:FSC-421.C-0_1_3,tpc:FSC-421.C-1_2_1,tpc:FSC-423.C-1_4_1,tpc:FSC-424.C-0_1_1,tpc:FSC-501.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-502.C-0_1_1,tpc:FSC-502.C-1_2_1,tpc:FSC-503.C-0_1_2,tpc:FSC-999.C-0_62_1</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="LVUG"> |
| | | <featuretypeList>tpc:FSC-217.C-0_11_1,tpc:FSC-402.C-2_15_2,tpc:FSC-402.C-0_5_2,tpc:FSC-402.C-1_15_2,tpc:FSC-402.C-2_37_2,tpc:FSC-402.C-0_27_2,tpc:FSC-402.C-1_37_2,tpc:FSC-402.C-2_16_2,tpc:FSC-402.C-0_6_2,tpc:FSC-402.C-1_16_2,tpc:FSC-407.C-2_10_1,tpc:FSC-407.C-2_9_1,tpc:FSC-407.C-2_9_2,tpc:FSC-407.C-3_19_1,tpc:FSC-407.C-3_19_2,tpc:FSC-407.C-3_20_1,tpc:FSC-407.C-7_10_1,tpc:FSC-407.C-7_9_1,tpc:FSC-407.C-7_9_2,tpc:FSC-411.C-7_7_1,tpc:FSC-411.C-7_7_2,tpc:FSC-411.C-7_8_1,tpc:FSC-115.C-8_47_1,tpc:FSC-115.C-8_47_2,tpc:FSC-115.C-8_48_1,tpc:FSC-115.C-6_47_1,tpc:FSC-115.C-6_47_2,tpc:FSC-115.C-2_51_2,tpc:FSC-115.C-3_51_1,tpc:FSC-115.C-4_51_2,tpc:FSC-115.C-5_51_1,tpc:FSC-115.C-6_56_1,tpc:FSC-115.C-7_55_1,tpc:FSC-200.C-0_28_1,tpc:FSC-200.C-0_29_1,tpc:FSC-201.C-0_31_1,tpc:FSC-201.C-1_33_0,tpc:FSC-202.C-1_35_0,tpc:FSC-202.C-0_35_1,tpc:FSC-203.C-1_37_1,tpc:FSC-203.C-0_37_1,tpc:FSC-206.C-2_1_0,tpc:FSC-206.C-1_1_1,tpc:FSC-206.C-0_1_1,tpc:FSC-207.C-1_1_0,tpc:FSC-207.C-0_1_1,tpc:FSC-208.C-0_43_1,tpc:FSC-209.C-0_45_1,tpc:FSC-210.C-4_42_0,tpc:FSC-213.C-0_31_1,tpc:FSC-213.C-1_33_0,tpc:FSC-215.C-0_45_1,tpc:FSC-216.C-2_1_0,tpc:FSC-216.C-0_1_1,tpc:FSC-216.C-1_1_1,tpc:FSC-301.C-1_23_0,tpc:FSC-301.C-0_21_1,tpc:FSC-301.C-1_23_0,tpc:FSC-301.C-3_23_0,tpc:FSC-303.C-0_29_1,tpc:FSC-303.C-1_43_0,tpc:FSC-303.C-3_43_0,tpc:FSC-307.C-0_46_1,tpc:FSC-307.C-0_37_1,tpc:FSC-302.C-0_25_1,tpc:FSC-302.C-1_27_0,tpc:FSC-305.C-0_33_1,tpc:FSC-306.C-0_35_1,tpc:FSC-308.C-0_39_1,tpc:FSC-316.C-0_53_1,tpc:FSC-317.C-1_31_1,tpc:FSC-318.C-0_53_4,tpc:FSC-403.C-2_20_1,tpc:FSC-403.C-2_15_1,tpc:FSC-403.C-1_22_1,tpc:FSC-403.C-1_23_1,tpc:FSC-403.C-1_24_1,tpc:FSC-503.C-0_1_2,tpc:FSC-999.C-0_62_1,tpc:FSC-502.C-1_2_1,tpc:FSC-502.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-501.C-0_1_1</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="OHS"> |
| | | <featuretypeList>tpc:FSC-106.C-2_1_1,tpc:FSC-106.C-2_1_2,tpc:FSC-106.C-4_1_1,tpc:FSC-106.C-4_1_2,tpc:FSC-106.C-0_1_1,tpc:FSC-106.C-0_1_2,tpc:FSC-106.C-2_3_1,tpc:FSC-106.C-0_3_1,tpc:FSC-140.C-2_51_1,tpc:FSC-140.C-2_51_2,tpc:FSC-140.C-0_51_1,tpc:FSC-140.C-0_51_2,tpc:FSC-402.C-2_15_2,tpc:FSC-403.C-2_15_1,tpc:FSC-402.C-0_5_2,tpc:FSC-402.C-1_15_2,tpc:FSC-402.C-2_37_2,tpc:FSC-402.C-0_27_2,tpc:FSC-402.C-1_37_2,tpc:FSC-402.C-2_16_2,tpc:FSC-402.C-0_6_2,tpc:FSC-402.C-1_16_2,tpc:FSC-407.C-0_9_1,tpc:FSC-407.C-0_9_2,tpc:FSC-407.C-0_10_1,tpc:FSC-407.C-1_19_1,tpc:FSC-407.C-1_19_2,tpc:FSC-407.C-1_20_1,tpc:FSC-407.C-9_9_1,tpc:FSC-407.C-9_9_2,tpc:FSC-407.C-9_10_1,tpc:FSC-407.C-10_9_1,tpc:FSC-407.C-11_9_1,tpc:FSC-118.C-0_49_2,tpc:FSC-118.C-0_50_2,tpc:FSC-407.C-8_9_1,tpc:FSC-407.C-8_9_2,tpc:FSC-114.C-0_21_1,tpc:FSC-114.C-0_21_2,tpc:FSC-114.C-2_21_0,tpc:FSC-114.C-2_21_1,tpc:FSC-114.C-2_21_2,tpc:FSC-115.C-0_46_1,tpc:FSC-115.C-0_46_2,tpc:FSC-115.C-0_56_1,tpc:FSC-115.C-1_46_1,tpc:FSC-115.C-1_46_2,tpc:FSC-115.C-1_56_1,tpc:FSC-115.C-2_50_2,tpc:FSC-115.C-2_51_2,tpc:FSC-115.C-3_51_1,tpc:FSC-115.C-3_50_1,tpc:FSC-115.C-7_58_1,tpc:FSC-115.C-7_55_1,tpc:FSC-107.C-2_35_1,tpc:FSC-107.C-2_35_2,tpc:FSC-107.C-0_25_1,tpc:FSC-107.C-0_25_2,tpc:FSC-107.C-2_36_1,tpc:FSC-107.C-2_36_2,tpc:FSC-107.C-0_26_1,tpc:FSC-107.C-0_26_2,tpc:FSC-107.C-2_37_1,tpc:FSC-107.C-0_27_1,tpc:FSC-117.C-0_27_2,tpc:FSC-120.C-0_42_1,tpc:FSC-120.C-0_42_2,tpc:FSC-120.C-0_52_1,tpc:FSC-120.C-0_52_2,tpc:FSC-130.C-0_11_1,tpc:FSC-130.C-0_11_2,tpc:FSC-131.C-0_12_1,tpc:FSC-131.C-0_12_2,tpc:FSC-109.C-0_13_1,tpc:FSC-109.C-0_13_2,tpc:FSC-109.C-0_13_3,tpc:FSC-116.C-0_14_1,tpc:FSC-116.C-0_14_2,tpc:FSC-102.C-0_30_2,tpc:FSC-100.C-0_59_1,tpc:FSC-100.C-0_60_2,tpc:FSC-502.C-0_1_1,tpc:FSC-502.C-1_2_1,tpc:FSC-501.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-503.C-0_1_2,tpc:FSC-999.C-0_62_1,tpc:FSC-200.C-0_30_1,tpc:FSC-200.C-0_28_1,tpc:FSC-202.C-1_36_0,tpc:FSC-202.C-0_36_1,tpc:FSC-203.C-1_38_1,tpc:FSC-203.C-0_38_1,tpc:FSC-205.C-2_41_1,tpc:FSC-205.C-0_39_1,tpc:FSC-208.C-0_44_1,tpc:FSC-209.C-0_46_1,tpc:FSC-211.C-0_32_1,tpc:FSC-212.C-1_34_0,tpc:FSC-303.C-1_43_0,tpc:FSC-303.C-0_29_1,tpc:FSC-303.C-3_43_0,tpc:FSC-305.C-0_34_1,tpc:FSC-306.C-0_36_1,tpc:FSC-307.C-0_46_1,tpc:FSC-307.C-0_38_1,tpc:FSC-308.C-0_40_1,tpc:FSC-314.C-0_26_1,tpc:FSC-314.C-1_28_0,tpc:FSC-315.C-0_26_1,tpc:FSC-315.C-1_28_0,tpc:FSC-316.C-0_54_1,tpc:FSC-317.C-0_32_1,tpc:FSC-317.C-1_32_1,tpc:FSC-318.C-0_54_4</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="HVPIPE"> |
| | | <featuretypeList>tpc:FSC-402.C-2_15_2,tpc:FSC-402.C-0_5_2,tpc:FSC-402.C-1_15_2,tpc:FSC-402.C-2_37_2,tpc:FSC-402.C-0_27_2,tpc:FSC-402.C-1_37_2,tpc:FSC-402.C-2_16_2,tpc:FSC-402.C-0_6_2,tpc:FSC-402.C-1_16_2,tpc:FSC-411.C-2_7_1,tpc:FSC-411.C-2_7_2,tpc:FSC-411.C-2_27_1,tpc:FSC-411.C-2_27_2,tpc:FSC-411.C-2_8_1,tpc:FSC-411.C-2_8_2,tpc:FSC-411.C-3_17_1,tpc:FSC-411.C-3_17_2,tpc:FSC-411.C-3_37_1,tpc:FSC-411.C-3_37_2,tpc:FSC-411.C-3_18_1,tpc:FSC-411.C-3_18_2,tpc:FSC-411.C-7_7_1,tpc:FSC-411.C-7_7_2,tpc:FSC-411.C-7_8_1,tpc:FSC-407.C-2_9_1,tpc:FSC-407.C-2_9_2,tpc:FSC-407.C-2_10_1,tpc:FSC-407.C-3_19_1,tpc:FSC-407.C-3_19_2,tpc:FSC-407.C-3_20_1,tpc:FSC-407.C-7_10_1,tpc:FSC-407.C-7_9_1,tpc:FSC-407.C-7_9_2,tpc:FSC-999.C-0_62_1,tpc:FSC-502.C-1_2_1,tpc:FSC-502.C-0_1_1,tpc:FSC-501.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-420.C-0_54_3,tpc:FSC-420.C-1_2_1,tpc:FSC-423.C-1_4_1,tpc:FSC-401.C-1_4_0,tpc:FSC-401.C-3_4_1,tpc:FSC-401.C-0_4_2,tpc:FSC-401.C-2_4_1,tpc:FSC-401.C-5_4_1,tpc:FSC-403.C-0_4_1,tpc:FSC-403.C-0_13_1,tpc:FSC-403.C-0_3_1,tpc:FSC-403.C-1_3_1,tpc:FSC-403.C-1_4_1,tpc:FSC-403.C-1_13_1,tpc:FSC-403.C-0_22_1,tpc:FSC-403.C-0_23_1,tpc:FSC-403.C-0_24_1,tpc:FSC-403.C-1_22_1,tpc:FSC-403.C-1_23_1,tpc:FSC-403.C-1_24_1,tpc:FSC-503.C-0_1_2,tpc:FSC-421.C-0_1_3,tpc:FSC-421.C-1_2_1,tpc:FSC-424.C-0_1_1</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | <FeatureTypeCollector name="HLVPIPE"> |
| | | <featuretypeList>tpc:FSC-402.C-2_15_2,tpc:FSC-402.C-0_5_2,tpc:FSC-402.C-1_15_2,tpc:FSC-402.C-2_37_2,tpc:FSC-402.C-0_27_2,tpc:FSC-402.C-1_37_2,tpc:FSC-402.C-2_16_2,tpc:FSC-402.C-0_6_2,tpc:FSC-402.C-1_16_2,tpc:FSC-411.C-2_7_1,tpc:FSC-411.C-2_7_2,tpc:FSC-411.C-2_27_1,tpc:FSC-411.C-2_27_2,tpc:FSC-411.C-2_8_1,tpc:FSC-411.C-2_8_2,tpc:FSC-411.C-3_17_1,tpc:FSC-411.C-3_17_2,tpc:FSC-411.C-3_37_1,tpc:FSC-411.C-3_37_2,tpc:FSC-411.C-3_18_1,tpc:FSC-411.C-3_18_2,tpc:FSC-411.C-7_7_1,tpc:FSC-411.C-7_7_2,tpc:FSC-411.C-7_8_1,tpc:FSC-407.C-2_9_1,tpc:FSC-407.C-2_9_2,tpc:FSC-407.C-2_10_1,tpc:FSC-407.C-3_19_1,tpc:FSC-407.C-3_19_2,tpc:FSC-407.C-3_20_1,tpc:FSC-407.C-7_10_1,tpc:FSC-407.C-7_9_1,tpc:FSC-407.C-7_9_2,tpc:FSC-202.C-1_35_0,tpc:FSC-202.C-0_35_1,tpc:FSC-203.C-1_37_1,tpc:FSC-203.C-0_37_1,tpc:FSC-206.C-2_1_0,tpc:FSC-206.C-1_1_1,tpc:FSC-206.C-0_1_1,tpc:FSC-207.C-1_1_0,tpc:FSC-209.C-0_45_1,tpc:FSC-216.C-2_1_0,tpc:FSC-216.C-1_1_1,tpc:FSC-216.C-0_1_1,tpc:FSC-401.C-0_11_1,tpc:FSC-401.C-0_4_2,tpc:FSC-401.C-1_11_0,tpc:FSC-401.C-3_11_0,tpc:FSC-401.C-2_11_1,tpc:FSC-401.C-1_4_0,tpc:FSC-401.C-3_4_1,tpc:FSC-401.C-2_4_1,tpc:FSC-401.C-5_4_1,tpc:FSC-403.C-0_3_1,tpc:FSC-403.C-0_4_1,tpc:FSC-403.C-0_13_1,tpc:FSC-403.C-1_3_1,tpc:FSC-403.C-1_11_1,tpc:FSC-403.C-1_4_1,tpc:FSC-403.C-1_13_1,tpc:FSC-403.C-0_22_1,tpc:FSC-403.C-0_23_1,tpc:FSC-403.C-0_24_1,tpc:FSC-403.C-1_22_1,tpc:FSC-403.C-1_23_1,tpc:FSC-403.C-1_24_1,tpc:FSC-421.C-0_1_3,tpc:FSC-421.C-1_2_1,tpc:FSC-423.C-1_4_1,tpc:FSC-424.C-0_1_1,tpc:FSC-999.C-0_62_1,tpc:FSC-502.C-0_1_1,tpc:FSC-502.C-1_2_1,tpc:FSC-501.C-0_1_1,tpc:FSC-501.C-1_2_1,tpc:FSC-420.C-0_54_3,tpc:FSC-420.C-1_2_1</featuretypeList> |
| | | <featuretypeList/> |
| | | </FeatureTypeCollector> |
| | | </FeatureClassificationRules> |