From 6eb2ea4bb982133d17e403582d7bcaced31af5f9 Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Fri, 23 May 2008 19:57:23 +0800
Subject: [PATCH] update for EOFM-103

---
 xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml                                           |    2 
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java           |    4 +
 xdgnjobs/ximple-jobcarrier/src/main/resources/log4j.properties                                          |    3 +
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java             |    4 +
 xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java                                 |   47 ++++++++++++++++++++++-
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java          |    8 +++
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeneralDgnConvertJobContext.java         |    8 +++-
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java |    8 +++
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java      |    8 +++
 9 files changed, 82 insertions(+), 10 deletions(-)

diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java
index 12093e3..454897c 100644
--- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java
+++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java
@@ -1,6 +1,12 @@
 package com.ximple.io.dgn7;
 
 import java.awt.geom.AffineTransform;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.CharBuffer;
+import java.nio.charset.CharacterCodingException;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
 
 import org.apache.log4j.Logger;
 
@@ -178,9 +184,46 @@
 
                 val.append(temp[i]);
             }
+        } else
+        {
+            byte[] strRaw = new byte[num * 2];
+            for (int i = 0; i < num; i++)
+            {
+                short charValue = raw[i + 31];
+                byte hi = (byte) (charValue >>> 8);
+                byte lo = (byte) charValue;
+                strRaw[i * 2] = hi;
+                strRaw[i * 2 + 1] = lo;
+            }
+
+            try
+            {
+                Charset charsetBig5 = Charset.forName("Big5");
+                CharsetDecoder decoder = charsetBig5.newDecoder();
+                CharBuffer cb = decoder.decode(ByteBuffer.wrap(strRaw));
+                val.append(cb);
+            } catch (CharacterCodingException e)
+            {
+                logger.warn(e.getMessage(), e);
+                return val.toString();
+            } finally
+            {
+                // rawBuffer.position(pos);
+                // rawBuffer.order(order);
+            }
         }
 
         return val.toString();
+    }
+
+    protected byte[] convertDBCSToUnicode(byte[] buffer)
+    {
+        byte[] charBuffer = new byte[4];
+        charBuffer[0] = (byte) ((byte) ((buffer[1] & 0xc0) >>> 6) | 0xc0);
+        charBuffer[1] = (byte) (buffer[1] & 0x3f | 0x80);
+        charBuffer[2] = (byte) ((byte) ((buffer[0] & 0xc0) >>> 6) | 0xc0);
+        charBuffer[3] = (byte) (buffer[0] & 0x3f | 0x80);
+        return charBuffer;
     }
 
     public Geometry toGeometry(GeometryFactory factory)
@@ -262,8 +305,8 @@
         double[] srcPt = new double[2];
         double[] dstPt = new double[2];
 
-        srcPt[0] = p.x + width ;
-        srcPt[1] = p.y + height ;
+        srcPt[0] = p.x + width;
+        srcPt[1] = p.y + height;
 
         at.transform(srcPt, 0, dstPt, 0, 1);
 
diff --git a/xdgnjobs/ximple-jobcarrier/src/main/resources/log4j.properties b/xdgnjobs/ximple-jobcarrier/src/main/resources/log4j.properties
index ab3fe3f..2691982 100644
--- a/xdgnjobs/ximple-jobcarrier/src/main/resources/log4j.properties
+++ b/xdgnjobs/ximple-jobcarrier/src/main/resources/log4j.properties
@@ -9,16 +9,19 @@
 
 # Pattern output the caller's filename and line #
 log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
+#log4j.appender.stdout.encoding=UTF-8
 
 log4j.appender.logfile=org.apache.log4j.FileAppender
 log4j.appender.logfile.file=xjobcarrier.log
 log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
 log4j.appender.logfile.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
+#log4j.appender.logfile.encoding=UTF-8
 
 log4j.appender.remoteout=com.holub.log4j.RemoteAppender
 log4j.appender.remoteout.Port=8011
 log4j.appender.remoteout.layout=org.apache.log4j.PatternLayout
 log4j.appender.remoteout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
+#log4j.appender.remoteout.encoding=UTF-8
 
 # Print messages of level INFO or above for examples
 log4j.logger.org.cavaness.quartzbook=INFO
diff --git a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml
index bf4fe10..0997e76 100644
--- a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml
+++ b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml
@@ -46,7 +46,7 @@
         </entry>
         <entry>
           <key>CONVERTDB</key>
-          <value>true</value>
+          <value>false</value>
         </entry>
         <entry>
           <key>CONVERTFILE</key>
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java
index 2ce53bf..ce5453a 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompIdDispatchableFilter.java
@@ -72,7 +72,13 @@
     {
         try
         {
-            FeatureType ftype = createStrategy.createFeatureElement(getName());
+            StringBuilder sb= new StringBuilder();
+            sb.append(getName());
+            sb.append("_");
+            sb.append(element.getLevelIndex());
+            sb.append("_");
+            sb.append(element.getWeight());
+            FeatureType ftype = createStrategy.createFeatureElement(sb.toString());
             return createStrategy.createFeature(ftype, element);
         } catch (SchemaException e)
         {
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java
index ecc6534..bc9899c 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeCompLevelIdDispatchableFilter.java
@@ -82,7 +82,13 @@
     {
         try
         {
-            FeatureType ftype = createStrategy.createFeatureElement(getName());
+            StringBuilder sb= new StringBuilder();
+            sb.append(getName());
+            sb.append("_");
+            sb.append(element.getLevelIndex());
+            sb.append("_");
+            sb.append(element.getWeight());
+            FeatureType ftype = createStrategy.createFeatureElement(sb.toString());
             return createStrategy.createFeature(ftype, element);
         } catch (SchemaException e)
         {
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java
index 591f465..c99f90e 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/filter/TypeIdDispatchableFilter.java
@@ -56,7 +56,13 @@
     {
         try
         {
-            FeatureType ftype = createStrategy.createFeatureElement(getName());
+            StringBuilder sb= new StringBuilder();
+            sb.append(getName());
+            sb.append("_");
+            sb.append(element.getLevelIndex());
+            sb.append("_");
+            sb.append(element.getWeight());
+            FeatureType ftype = createStrategy.createFeatureElement(sb.toString());
             return createStrategy.createFeature(ftype, element);
         } catch (SchemaException e)
         {
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeneralDgnConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeneralDgnConvertJobContext.java
index 6ecda50..2f1eeb6 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeneralDgnConvertJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeneralDgnConvertJobContext.java
@@ -10,6 +10,7 @@
 import java.util.TreeMap;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.nio.charset.Charset;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -158,7 +159,9 @@
                     writer = featuresWriterContext.get(featureType.getTypeName());
                 } else
                 {
-                    ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL());
+                    // ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL());
+                    ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL(),
+                            true, Charset.forName("UTF-8"));
                     shapefileDataStore.createSchema(featureType);
                     writer = shapefileDataStore.getFeatureWriter(featureType.getTypeName(), Transaction.AUTO_COMMIT);
                     featuresWriterContext.put(featureType.getTypeName(), writer);
@@ -280,6 +283,7 @@
 
             Geometry geom = convertDecorator.toGeometry(geometryFactory);
             double angle = textElement.getRotationAngle();
+            String content = textElement.getText();
             angle = BigDecimal.valueOf(angle).setScale(3, RoundingMode.HALF_UP).doubleValue();
             if (geom != null)
             {
@@ -291,7 +295,7 @@
                         textElement.getTextHeight(),
                         textElement.getTextWidth(),
                         angle,
-                        textElement.getText()
+                        content
                 });
             } else
             {
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java
index 5710bc2..8bba137 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/IndexDgnConvertJobContext.java
@@ -9,6 +9,7 @@
 import java.util.List;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.nio.charset.Charset;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -151,7 +152,8 @@
                 }
                 else
                 {
-                  ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL());
+                  ShapefileDataStore shapefileDataStore = new ShapefileDataStore(sfile.toURI().toURL(),
+                        true, Charset.forName("UTF-8"));
                   shapefileDataStore.createSchema(featureType);
                   writer = shapefileDataStore.getFeatureWriter(featureType.getTypeName(), Transaction.AUTO_COMMIT);
                   featuresWriterContext.put(featureType.getTypeName() , writer);
diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java
index 0e19bf1..586cf92 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertJobContext.java
@@ -11,6 +11,7 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Properties;
+import java.nio.charset.Charset;
 
 import org.apache.commons.digester.Digester;
 import org.apache.commons.digester.xmlrules.DigesterLoader;
@@ -202,7 +203,8 @@
                     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"));
                     shapefileDataStore.createSchema(featureType);
                     writer = shapefileDataStore.getFeatureWriter(featureType.getTypeName(), Transaction.AUTO_COMMIT);
                     featuresWriterContext.put(featureType.getTypeName(), writer);

--
Gitblit v0.0.0-SNAPSHOT