.gitattributes
@@ -41,20 +41,21 @@ ximple-jobcarrier/src/main/resources/quartz_jobs.xml svneol=native#text/xml ximple-jobcarrier/src/test/java/com/ximple/eofms/XQuartzJobCarrierTest.java svneol=native#text/plain ximple-spatialjob/pom.xml svneol=native#text/xml ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractFLinkageHandlerStrategy.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractDispatchableFilter.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractFLinkageDispatchableFilter.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateFeatureTypeStrategy.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatcher.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractOracleDatabaseJob.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/CreateFeatureTypeStrategy.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/CreateLineStringStrategy.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/CreateTextStrategy.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/ElementDispatchableStrategy.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/ElementDispatcher.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeometryCoordinateDecorator.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleUpgradeBlob2UDTJob.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/TypeCompIdHandlerStrategy.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/TypeCompLevelIdHandlerStrategy.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/TypeIdHandlerStrategy.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/util/BinConverter.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/util/Bits.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/util/ByteArrayCompressor.java svneol=native#text/plain @@ -62,3 +63,7 @@ ximple-spatialjob/src/main/java/com/ximple/eofms/util/LangUtil.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/util/PrintfFormat.java svneol=native#text/plain ximple-spatialjob/src/main/java/com/ximple/eofms/util/TWDDatumConverter.java svneol=native#text/plain ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml svneol=native#text/xml ximple-spatialjob/src/test/java/com/ximple/eofms/filter/ElementDispatcherTest.java svneol=native#text/plain ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testElementFilter.xml svneol=native#text/xml ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testRules.xml svneol=native#text/xml ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractDispatchableFilter.java
New file @@ -0,0 +1,36 @@ package com.ximple.eofms.filter; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public abstract class AbstractDispatchableFilter implements ElementDispatchableFilter { private String name; private String description; protected Log logger = LogFactory.getLog(AbstractFLinkageDispatchableFilter.class); public AbstractDispatchableFilter() { } 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; } } ximple-spatialjob/src/main/java/com/ximple/eofms/filter/AbstractFLinkageDispatchableFilter.java
File was renamed from ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/AbstractFLinkageHandlerStrategy.java @@ -1,18 +1,13 @@ package com.ximple.eofms.jobs; package com.ximple.eofms.filter; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.ximple.io.dgn7.Element; import com.ximple.io.dgn7.FrammeAttributeData; import com.ximple.io.dgn7.UserAttributeData; public abstract class AbstractFLinkageHandlerStrategy implements ElementDispatchableStrategy public abstract class AbstractFLinkageDispatchableFilter extends AbstractDispatchableFilter { protected Log logger = LogFactory.getLog(AbstractFLinkageHandlerStrategy.class); protected FrammeAttributeData getFeatureLinkage(Element element) { if (!element.hasUserAttributeData()) ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateFeatureTypeStrategy.java
File was renamed from ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/CreateFeatureTypeStrategy.java @@ -1,4 +1,4 @@ package com.ximple.eofms.jobs; package com.ximple.eofms.filter; import org.geotools.feature.Feature; import org.geotools.feature.FeatureType; ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateLineStringStrategy.java
File was renamed from ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/CreateLineStringStrategy.java @@ -1,4 +1,4 @@ package com.ximple.eofms.jobs; package com.ximple.eofms.filter; import java.util.List; ximple-spatialjob/src/main/java/com/ximple/eofms/filter/CreateTextStrategy.java
File was renamed from ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/CreateTextStrategy.java @@ -1,4 +1,4 @@ package com.ximple.eofms.jobs; package com.ximple.eofms.filter; import java.util.List; ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatchableFilter.java
File was renamed from ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/ElementDispatchableStrategy.java @@ -1,10 +1,10 @@ package com.ximple.eofms.jobs; package com.ximple.eofms.filter; import org.geotools.feature.Feature; import com.ximple.io.dgn7.Element; public interface ElementDispatchableStrategy public interface ElementDispatchableFilter { public boolean isDispatchable(Element element); ximple-spatialjob/src/main/java/com/ximple/eofms/filter/ElementDispatcher.java
File was renamed from ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/ElementDispatcher.java @@ -1,4 +1,4 @@ package com.ximple.eofms.jobs; package com.ximple.eofms.filter; import java.util.LinkedList; @@ -8,21 +8,21 @@ public class ElementDispatcher { private LinkedList<ElementDispatchableStrategy> rules; private LinkedList<ElementDispatchableFilter> rules; public ElementDispatcher() { rules = new LinkedList<ElementDispatchableStrategy>(); rules = new LinkedList<ElementDispatchableFilter>(); } public void addRule(ElementDispatchableStrategy rule) public void addRule(ElementDispatchableFilter rule) { rules.add(rule); } public Feature execute(Element element) { for (ElementDispatchableStrategy rule : rules) for (ElementDispatchableFilter rule : rules) { if (rule.isDispatchable(element)) { ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java
File was renamed from ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/TypeCompIdHandlerStrategy.java @@ -1,4 +1,4 @@ package com.ximple.eofms.jobs; package com.ximple.eofms.filter; import org.geotools.feature.Feature; import org.geotools.feature.FeatureType; @@ -8,20 +8,33 @@ import com.ximple.io.dgn7.Element; import com.ximple.io.dgn7.FrammeAttributeData; public class TypeCompIdHandlerStrategy extends AbstractFLinkageHandlerStrategy public class TypeCompIdDispatchableFilter extends AbstractFLinkageDispatchableFilter { private String name; private int tid; private int cid; private CreateFeatureTypeStrategy createStrategy; public TypeCompIdHandlerStrategy(String fname, CreateFeatureTypeStrategy createStrategy, int tid, int compid) public TypeCompIdDispatchableFilter() { this.name = fname; } public TypeCompIdDispatchableFilter(String fname, CreateFeatureTypeStrategy createStrategy, int tid, int compid) { this.setName(fname); this.tid = tid; this.cid = compid; this.createStrategy = createStrategy; } public CreateFeatureTypeStrategy getCreateStrategy() { return createStrategy; } public void setCreateStrategy(CreateFeatureTypeStrategy createStrategy) { this.createStrategy = createStrategy; } @@ -36,7 +49,7 @@ { try { FeatureType ftype = createStrategy.createFeatureElement(name); FeatureType ftype = createStrategy.createFeatureElement(getName()); return createStrategy.createFeature(ftype, element); } catch (SchemaException e) { ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java
File was renamed from ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/TypeCompLevelIdHandlerStrategy.java @@ -1,4 +1,4 @@ package com.ximple.eofms.jobs; package com.ximple.eofms.filter; import org.geotools.feature.Feature; import org.geotools.feature.FeatureType; @@ -8,22 +8,35 @@ import com.ximple.io.dgn7.Element; import com.ximple.io.dgn7.FrammeAttributeData; public class TypeCompLevelIdHandlerStrategy extends AbstractFLinkageHandlerStrategy public class TypeCompLevelIdDispatchableFilter extends AbstractFLinkageDispatchableFilter { private String name; private int tid; private int cid; private int lid; private CreateFeatureTypeStrategy createStrategy; public TypeCompLevelIdHandlerStrategy(String fname, CreateFeatureTypeStrategy createStrategy, int tid, int compid, int level) public TypeCompLevelIdDispatchableFilter() { this.name = fname; } public TypeCompLevelIdDispatchableFilter(String fname, CreateFeatureTypeStrategy createStrategy, int tid, int compid, int level) { this.setName(fname); this.tid = tid; this.cid = compid; this.lid = level; this.createStrategy = createStrategy; } public CreateFeatureTypeStrategy getCreateStrategy() { return createStrategy; } public void setCreateStrategy(CreateFeatureTypeStrategy createStrategy) { this.createStrategy = createStrategy; } @@ -39,7 +52,7 @@ { try { FeatureType ftype = createStrategy.createFeatureElement(name); FeatureType ftype = createStrategy.createFeatureElement(getName()); return createStrategy.createFeature(ftype, element); } catch (SchemaException e) { ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java
New file @@ -0,0 +1,69 @@ package com.ximple.eofms.filter; import org.geotools.feature.Feature; import org.geotools.feature.FeatureType; import org.geotools.feature.IllegalAttributeException; import org.geotools.feature.SchemaException; import com.ximple.io.dgn7.Element; import com.ximple.io.dgn7.FrammeAttributeData; public class TypeIdDispatchableFilter extends AbstractFLinkageDispatchableFilter { private int tid; private CreateFeatureTypeStrategy createStrategy; public TypeIdDispatchableFilter() { } public TypeIdDispatchableFilter(String fname, CreateFeatureTypeStrategy createStrategy, int tid) { this.setName(fname); this.tid = tid; this.createStrategy = createStrategy; } public int getTid() { return tid; } public void setTid(int tid) { this.tid = tid; } public CreateFeatureTypeStrategy getCreateStrategy() { return createStrategy; } public void setCreateStrategy(CreateFeatureTypeStrategy createStrategy) { this.createStrategy = createStrategy; } public boolean isDispatchable(Element element) { FrammeAttributeData featureLinkage = getFeatureLinkage(element); return featureLinkage != null && tid == featureLinkage.getFsc(); } public Feature execute(Element element) { try { FeatureType ftype = createStrategy.createFeatureElement(getName()); return createStrategy.createFeature(ftype, element); } catch (SchemaException e) { logger.error(e.getMessage(), e); } catch (IllegalAttributeException e) { logger.error(e.getMessage(), e); } return null; } } ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java
@@ -27,6 +27,9 @@ import oracle.jdbc.OracleConnection; import com.ximple.eofms.filter.CreateLineStringStrategy; import com.ximple.eofms.filter.ElementDispatcher; import com.ximple.eofms.filter.TypeCompIdDispatchableFilter; import com.ximple.io.dgn7.Element; public class OracleConvertJobContext @@ -272,7 +275,7 @@ private ElementDispatcher createElementDispatcher() { ElementDispatcher dispatcher = new ElementDispatcher(); dispatcher.addRule(new TypeCompIdHandlerStrategy("Conductor", new CreateLineStringStrategy(), 106, 0)); dispatcher.addRule(new TypeCompIdDispatchableFilter("Conductor", new CreateLineStringStrategy(), 106, 0)); return dispatcher; } ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/TypeIdHandlerStrategy.java
File was deleted ximple-spatialjob/src/main/resources/com/ximple/eofms/filter/ElementDispatcherRules.xml
New file @@ -0,0 +1,16 @@ <?xml version='1.0' encoding="big5"?> <digester-rules> <pattern value="ElementDispatcherRules"> <object-create-rule classname="com.ximple.eofms.filter.ElementDispatcher"/> <set-properties-rule/> <pattern value="TypeFilter"> <object-create-rule classname="ElementDispatchableStrategy"/> <set-next-rule methodname="addChart" paramtype="study.jakarta.commons.digester.ChartConfig"/> <set-properties-rule/> <bean-property-setter-rule pattern="legendVisible"/> <bean-property-setter-rule pattern="type"/> <bean-property-setter-rule pattern="width"/> <bean-property-setter-rule pattern="description"/> </pattern> </pattern> </digester-rules> ximple-spatialjob/src/test/java/com/ximple/eofms/filter/ElementDispatcherTest.java
New file @@ -0,0 +1,27 @@ package com.ximple.eofms.filter; import java.io.File; import java.io.IOException; import org.apache.commons.digester.Digester; import org.apache.commons.digester.xmlrules.DigesterLoader; import org.geotools.TestData; import org.testng.Assert; import org.testng.annotations.Test; import org.xml.sax.SAXException; public class ElementDispatcherTest { private static final String TestRulesName = "testRules.xml"; private static final String TestConfigName = "testElementFilter.xml"; @Test public void testLoadRules() throws IOException, SAXException { File rules = TestData.file(this, TestRulesName); Digester digester = DigesterLoader.createDigester(rules.toURI().toURL()); File config = TestData.file(this, TestConfigName); ElementDispatcher ed = (ElementDispatcher) digester.parse(config); Assert.assertNotNull(ed); } } ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testElementFilter.xml
ximple-spatialjob/src/test/resources/com/ximple/eofms/filter/test-data/testRules.xml
New file @@ -0,0 +1,15 @@ <?xml version='1.0' encoding="big5"?> <digester-rules> <pattern value="ElementDispatcherRules"> <object-create-rule classname="com.ximple.eofms.filter.ElementDispatcher"/> <set-properties-rule/> <pattern value="TypeFilter"> <object-create-rule classname="com.ximple.eofms.filter.TypeIdDispatchableFilter"/> <set-next-rule methodname="addRule" paramtype="com.ximple.eofms.filter.ElementDispatchableFilter"/> <set-properties-rule/> <bean-property-setter-rule pattern="name"/> <bean-property-setter-rule pattern="id"/> <bean-property-setter-rule pattern="description"/> </pattern> </pattern> </digester-rules>