From 2dc52b4a4b6f2ca3defdeb3e10b8f34f1f38dea9 Mon Sep 17 00:00:00 2001
From: ?? ? <ulysseskao@ximple.com.tw>
Date: Tue, 06 May 2008 18:45:25 +0800
Subject: [PATCH] update for EOFM-75

---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java |  154 +++++++++++++++++++++------------------------------
 1 files changed, 64 insertions(+), 90 deletions(-)

diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java
index 82b14d9..5ff3300 100644
--- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java
@@ -1,10 +1,10 @@
 package com.ximple.eofms.jobs;
 
-import java.io.IOException;
 import java.io.File;
-import java.io.FilenameFilter;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
+import java.io.FilenameFilter;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
@@ -14,22 +14,19 @@
 import java.sql.Statement;
 import java.sql.Types;
 import java.util.Date;
-import java.util.List;
-import java.util.Iterator;
 
 import org.apache.commons.collections.OrderedMap;
 import org.apache.commons.collections.OrderedMapIterator;
 import org.apache.commons.collections.map.LinkedMap;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.geotools.feature.IllegalAttributeException;
+import org.geotools.feature.SchemaException;
 import org.quartz.JobDetail;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
-import org.geotools.feature.IllegalAttributeException;
-import org.geotools.feature.SchemaException;
 
 import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Envelope;
 
 import oracle.jdbc.OracleConnection;
 import oracle.jdbc.OracleResultSet;
@@ -38,21 +35,15 @@
 
 import com.ximple.eofms.util.BinConverter;
 import com.ximple.eofms.util.ByteArrayCompressor;
-import com.ximple.eofms.util.TPCLIDConverter;
 import com.ximple.eofms.util.StringUtils;
 import com.ximple.io.dgn7.ComplexElement;
 import com.ximple.io.dgn7.Dgn7fileException;
+import com.ximple.io.dgn7.Dgn7fileReader;
 import com.ximple.io.dgn7.Element;
 import com.ximple.io.dgn7.ElementType;
 import com.ximple.io.dgn7.IElementHandler;
-import com.ximple.io.dgn7.Dgn7fileReader;
 import com.ximple.io.dgn7.Lock;
-import com.ximple.io.dgn7.ComplexChainElement;
-import com.ximple.io.dgn7.ComplexShapeElement;
-import com.ximple.io.dgn7.TextNodeElement;
 import com.ximple.io.dgn7.TextElement;
-import com.ximple.io.dgn7.UserAttributeData;
-import com.ximple.io.dgn7.FrammeAttributeData;
 import com.ximple.util.PrintfFormat;
 
 /**
@@ -60,7 +51,7 @@
  */
 public class OracleConvertDgn2ShpJob extends AbstractOracleDatabaseJob
 {
-    static Log logger = LogFactory.getLog(OracleConvertDgn2ShpJob.class);
+    final static Log logger = LogFactory.getLog(OracleConvertDgn2ShpJob.class);
 
     private static final int FETCHSIZE = 30;
     private static final int BATCHSIZE = 25;
@@ -539,7 +530,7 @@
                 {
                     lastComplex = null;
 
-                    processElement(element, convertContext);
+                    processIndexElement(element, convertContext);
                 } else if (element.isComponentElement())
                 {
                     if (lastComplex != null)
@@ -553,7 +544,7 @@
                         lastComplex = element;
                     } else
                     {
-                        processElement(element, convertContext);
+                        processIndexElement(element, convertContext);
                         lastComplex = element;
                     }
                 }
@@ -564,7 +555,7 @@
         logger.debug("ElementRecord Count=" + count);
     }
 
-    private void processElement(Element element, IndexDgnConvertJobContext convertContext) throws IllegalAttributeException, SchemaException
+    private void processIndexElement(Element element, IndexDgnConvertJobContext convertContext) throws IllegalAttributeException, SchemaException
     {
         if (element instanceof TextElement)
         {
@@ -577,7 +568,7 @@
      * �����ഫ��L�]�p���ɪ��u�@
      * @param context
      */
-    private void convertOtherDesignFile(JobExecutionContext context)
+    private void convertOtherDesignFile(JobExecutionContext context) throws JobExecutionException
     {
         File otherDir = new File(getDataPath(), "other");
         if (!otherDir.exists())
@@ -602,11 +593,51 @@
         for (File dgnFile : dgnFiles)
         {
             GeneralDgnConvertJobContext convertContext = new GeneralDgnConvertJobContext(getDataPath());
-            convertContext.setExecutionContext(context);
+            try
+            {
+                convertContext.setExecutionContext(context);
+                String dgnPaths[] = StringUtils.splitToArray(dgnFile.toString(), File.pathSeparator);
+                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();
+            } 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
+    public void scanOtherDgnElement(GeneralDgnConvertJobContext convertContext)
+            throws Dgn7fileException, IOException, IllegalAttributeException, SchemaException
     {
         Dgn7fileReader reader = convertContext.getReader();
         int count = 0;
@@ -621,13 +652,9 @@
 
                 if ((!type.isComplexElement()) && (!element.isComponentElement()))
                 {
-                    if (lastComplex != null)
-                    {
-                        // @todo add process in here
-                        lastComplex = null;
-                    }
+                    lastComplex = null;
 
-                    // @todo add process in here
+                    processOtherElement(element, convertContext);
                 } else if (element.isComponentElement())
                 {
                     if (lastComplex != null)
@@ -641,75 +668,22 @@
                         lastComplex = element;
                     } else
                     {
-                        // @todo add process in here
+                        processOtherElement(element, convertContext);
                         lastComplex = element;
-                    }
-                }
-
-                if (element.getElementType().isComplexElement())
-                {
-                    if (element instanceof ComplexChainElement)
-                    {
-                        ComplexChainElement complexChain = (ComplexChainElement) element;
-                        int size = complexChain.size();
-                        for (Object aComplexChain : complexChain)
-                        {
-                            Element subElement = (Element) aComplexChain;
-                            subElement.getType();
-                        }
-                    }
-
-                    if (element instanceof ComplexShapeElement)
-                    {
-                        ComplexShapeElement complexShape = (ComplexShapeElement) element;
-                    }
-
-                    if (element instanceof TextNodeElement)
-                    {
-                        TextNodeElement textNode = (TextNodeElement) element;
-                        int size = textNode.size();
-                        for (int i = 0; i < size; i++)
-                        {
-                            Element subElement = (Element) textNode.get(i);
-                            subElement.getElementType();
-                        }
-                    }
-
-                } else
-                {
-                    boolean hasLinkage = false;
-                    if (element instanceof TextElement)
-                    {
-                        TextElement textElm = (TextElement) element;
-                        List<UserAttributeData> usrData = textElm.getUserAttributeData();
-                        Iterator<UserAttributeData> it = usrData.iterator();
-                        while (it.hasNext())
-                        {
-                            UserAttributeData attr = it.next();
-                            if (attr instanceof FrammeAttributeData)
-                            {
-                                hasLinkage = true;
-                                System.out.println("------------------------------------------");
-                                System.out.println("FSC=" + ((FrammeAttributeData) attr).getFsc() + ":" +
-                                        ((FrammeAttributeData) attr).getUfid());
-                            }
-                        }
-
-                        if (hasLinkage)
-                        {
-                            System.out.println("Text.Font=" + textElm.getFontIndex());
-                            System.out.println("Text.Just=" + textElm.getJustification());
-                            System.out.println("usrData.len=" + usrData.size());
-                            System.out.println("text=" + textElm.getText());
-                            System.out.println("Origin=" + textElm.getOrigin());
-                            System.out.println("UserOrigin=" + textElm.getUserOrigin());
-                        }
                     }
                 }
             }
             count++;
         }
 
-        logger.info("ElementRecord Count=" + count);
+        logger.debug("ElementRecord Count=" + count);
+    }
+
+    private void processOtherElement(Element element, GeneralDgnConvertJobContext convertContext) throws IllegalAttributeException, SchemaException
+    {
+        if (element instanceof TextElement)
+        {
+            convertContext.putFeatureCollection(element);
+        }
     }
 }

--
Gitblit v0.0.0-SNAPSHOT