forked from geodmms/xdgnjobs

?? ?
2008-06-25 1939acb5eeca2792e93a0e236ed2f4a60b4d4008
update for EOFM-127
9 files modified
253 ■■■■■ changed files
.gitattributes 2 ●●● patch | view | raw | blame | history
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/ComplexChainElement.java 2 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Element.java 47 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/IElementHandler.java 2 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java 13 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextNodeElement.java 98 ●●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java 1 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java 1 ●●●● patch | view | raw | blame | history
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleElementLogger.java 87 ●●●●● patch | view | raw | blame | history
.gitattributes
@@ -19,7 +19,7 @@
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/EllipseElement.java svneol=native#text/plain
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/FrammeAttributeData.java svneol=native#text/plain
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/GeometryConverter.java svneol=native#text/plain
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/IElementHandler.java svneol=native#text/plain
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/IElementHandler.java -text
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/LineElement.java svneol=native#text/plain
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/LineStringElement.java svneol=native#text/plain
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Lock.java svneol=native#text/plain
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/ComplexChainElement.java
@@ -8,10 +8,8 @@
import org.apache.log4j.Logger;
import com.vividsolutions.jts.geom.CoordinateList;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.MultiLineString;
import com.vividsolutions.jts.geom.LineString;
/**
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Element.java
@@ -5,9 +5,9 @@
import java.nio.BufferUnderflowException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.ShortBuffer;
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
import com.vividsolutions.jts.geom.Envelope;
@@ -71,6 +71,29 @@
                DgnUtility.converUnitToCoord(lowCoorY), DgnUtility.converUnitToCoord(highCoorY));
    }
    public void setRange(Envelope bbox)
    {
        int lowCoordX = DgnUtility.converCoordToUnit(bbox.getMinX());
        int temp = DgnUtility.converToDGN(lowCoordX);
        raw[3] = (short) (temp >> 16 & 0x0000ffff);
        raw[2] = (short) (temp & 0x0000ffff);
        int lowCoordY = DgnUtility.converCoordToUnit(bbox.getMinY());
        temp = DgnUtility.converToDGN(lowCoordY);
        raw[5] = (short) (temp >> 16 & 0x0000ffff);
        raw[4] = (short) (temp & 0x0000ffff);
        int highCoorX = DgnUtility.converCoordToUnit(bbox.getMaxX());
        temp = DgnUtility.converToDGN(highCoorX);
        raw[9] = (short) (temp >> 16 & 0x0000ffff);
        raw[8] = (short) (temp & 0x0000ffff);
        int highCoorY = DgnUtility.converCoordToUnit(bbox.getMaxY());
        temp = DgnUtility.converToDGN(highCoorY);
        raw[11] = (short) (temp >> 16 & 0x0000ffff);
        raw[10] = (short) (temp & 0x0000ffff);
    }
    public boolean isComponentElement()
    {
        return (short) ((raw[0] >>> 7) & 0x0001) == 1;
@@ -109,6 +132,11 @@
    public int getLevelIndex()
    {
        return (raw[0] & 0x003f);
    }
    public void setLevelIndex(int value)
    {
        raw[0] = (short) ((raw[0] & 0xffc0) | (value & 0x003f));
    }
    public int getWeight()
@@ -227,6 +255,18 @@
        return offset * 2;
    }
    public void resyncBuffer()
    {
        byte[] tempRaw = new byte[this.raw.length * 2];
        ByteBuffer tempBuffer = ByteBuffer.wrap(tempRaw);
        tempBuffer.order(ByteOrder.LITTLE_ENDIAN);
        tempBuffer.asShortBuffer().put(this.raw);
        int pos = rawBuffer.position();
        rawBuffer = tempBuffer;
        rawBuffer.position(pos);
    }
    public static class ElementHandler implements IElementHandler
    {
        ElementType elementType;
@@ -281,6 +321,11 @@
            return ((Element) element).raw.length;
        }
        public int getBufferLength(Object element)
        {
            return ((Element) element).rawBuffer.limit();
        }
        protected Element createElement(byte[] raw)
        {
            return new Element(raw);
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/IElementHandler.java
@@ -20,4 +20,6 @@
    public void write(ByteBuffer buffer, Object element);
    public int getLength(Object element);
    public int getBufferLength(Object element);
}
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java
@@ -312,6 +312,19 @@
        return new Coordinate(dstPt[0], dstPt[1]);
    }
    public Object clone() throws CloneNotSupportedException
    {
        int pos = this.rawBuffer.position();
        this.rawBuffer.position(0);
        byte[] rawBytes = this.rawBuffer.array();
        byte[] otherRaw = new byte[rawBytes.length];
        System.arraycopy(rawBytes, 0, otherRaw, 0, rawBytes.length);
        this.rawBuffer.position(pos);
        TextElement other = new TextElement(otherRaw);
        return other;
    }
    public static class ElementHandler extends Element.ElementHandler
    {
        private static ElementHandler instance = null;
xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextNodeElement.java
@@ -184,9 +184,24 @@
        // return factory.createMultiPoint(coords.toCoordinateArray());
    }
    public int getTotalWords()
    {
        return (raw[18] & 0x0000ffff);
    }
    public void setTotalWords(int value)
    {
        raw[18] = (short) (value & 0x0000ffff);
    }
    public int getNumString()
    {
        return (raw[19] & 0x0000ffff);
    }
    public void setNumString(int value)
    {
        raw[19] = (short) (value & 0x0000ffff);
    }
    public int getNodeNumber()
@@ -194,9 +209,19 @@
        return (raw[20] & 0x0000ffff);
    }
    public void setNodeNumber(int value)
    {
        raw[20] = (short) (value & 0x0000ffff);
    }
    public int getMaxLength()
    {
        return (raw[21] & 0x00ff);
    }
    public void setMaxLength(int value)
    {
        raw[21] = (short) ((value & 0x00ff) | (raw[21] & 0xff00));
    }
    public int getMaxUsed()
@@ -204,14 +229,29 @@
        return ((raw[21] >> 8) & 0x00ff);
    }
    public void setMaxUsed(int value)
    {
        raw[21] = (short) (((value << 8) & 0xff00) | (raw[21] & 0x00ff));
    }
    public int getJustification()
    {
        return ((raw[22] >> 8) & 0x00ff);
    }
    public void setJustification(int value)
    {
        raw[22] = (short) (((value << 8) & 0xff00) | (raw[22] & 0x00ff));
    }
    public int getFontIndex()
    {
        return (raw[22] & 0x00ff);
    }
    public void setFontIndex(int value)
    {
        raw[22] = (short) ((value & 0x00ff) | (raw[22] & 0xff00));
    }
    public double getLineSpacing()
@@ -220,6 +260,13 @@
        lineSpace = ((raw[23] & 0x0000ffff) << 16) | (raw[24] & 0x0000ffff);
        return lineSpace;
    }
    public void setLineSpacing(double value)
    {
        int temp = (int) (value*1000.0);
        raw[23] = (short) ((temp >> 16) & 0x0000ffff);
        raw[24] = (short) (temp & 0x0000ffff);
    }
    public double getTextNodeLength()
@@ -232,6 +279,13 @@
        return DgnUtility.converIntToDouble(lengthMult);
    }
    public void setTextNodeLength(double value)
    {
        int temp = DgnUtility.converDoubleToInt(value);
        raw[25] = (short) ((temp >> 16) & 0x0000ffff);
        raw[26] = (short) (temp & 0x0000ffff);
    }
    public double getTextNodeHeight()
    {
        int heightMult;
@@ -242,12 +296,26 @@
        return DgnUtility.converIntToDouble(heightMult);
    }
    public void setTextNodeHeight(double value)
    {
        int temp = DgnUtility.converDoubleToInt(value);
        raw[27] = (short) ((temp >> 16) & 0x0000ffff);
        raw[28] = (short) (temp & 0x0000ffff);
    }
    public double getRotationAngle()
    {
        int rotation = (raw[29] << 16 & 0xffff0000);
        rotation += raw[30];
        return DgnUtility.converIntToRotation(rotation);
    }
    public void setRotationAngle(double value)
    {
        int temp = DgnUtility.converRotatioToInt(value);
        raw[29] = (short) (temp >> 16 & 0x0000ffff);
        raw[30] = (short) (temp & 0x0000ffff);
    }
    public Coordinate getOrigin()
@@ -262,6 +330,36 @@
        return new Coordinate(dx, dy);
    }
    public void setOrigin(Coordinate value)
    {
        int x = DgnUtility.converCoordToUnit(value.x);
        raw[31] = (short) (x >> 16 & 0x0000ffff);
        raw[32] = (short) (x & 0x0000ffff);
        int y = DgnUtility.converCoordToUnit(value.y);
        raw[33] = (short) (y >> 16 & 0x0000ffff);
        raw[34] = (short) (y & 0x0000ffff);
    }
    public Object clone() throws CloneNotSupportedException
    {
        int pos = this.rawBuffer.position();
        this.rawBuffer.position(0);
        byte[] rawBytes = this.rawBuffer.array();
        byte[] otherRaw = new byte[rawBytes.length];
        System.arraycopy(rawBytes, 0, otherRaw, 0, rawBytes.length);
        this.rawBuffer.position(pos);
        TextNodeElement other = new TextNodeElement(otherRaw);
        for (Object o : this)
        {
            TextElement textElm = (TextElement) o;
            other.add(textElm.clone());
        }
        return other;
    }
    public static class ElementHandler extends Element.ElementHandler
    {
        private static ElementHandler instance = null;
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java
@@ -14,7 +14,6 @@
import java.sql.Statement;
import java.sql.Types;
import java.sql.Connection;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import java.util.TreeMap;
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java
@@ -14,7 +14,6 @@
import java.sql.Statement;
import java.sql.Types;
import java.sql.Connection;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import java.util.TreeMap;
xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleElementLogger.java
@@ -12,6 +12,7 @@
import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import java.util.ListIterator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -31,11 +32,13 @@
import com.ximple.io.dgn7.ShapeElement;
import com.ximple.io.dgn7.TextElement;
import com.ximple.io.dgn7.TextNodeElement;
import com.ximple.io.dgn7.IElementHandler;
import com.ximple.io.dgn7.Dgn7fileException;
public class OracleElementLogger
{
    static Log logger = LogFactory.getLog(OracleElementLogger.class);
    private static final String ELMOUTPATH = "elmout";
    private static final String DEFAULT_ELMOUTPATH = "elmout";
    private static final String TAB_IGDSSEED = "SD$IGDSSET_SEED";
    private Connection connection;
@@ -47,17 +50,25 @@
    private FileChannel fch = null;
    private int logCount = 0;
    private ArrayList<byte[]> dgnFileHeader = null;
    private String elmOutPath;
    public OracleElementLogger(Connection connection)
    {
        this.connection = connection;
        elmOutPath = DEFAULT_ELMOUTPATH;
    }
    public OracleElementLogger(Connection connection, String elmOutPath)
    {
        this.connection = connection;
        this.elmOutPath = elmOutPath;
    }
    public String getDataOutPath()
    {
        if (dataOut == null)
        {
            File outPath = new File(getDataPath(), ELMOUTPATH);
            File outPath = new File(getDataPath(), elmOutPath);
            if (!outPath.exists())
            {
                outPath.mkdir();
@@ -118,6 +129,7 @@
            }
        }
        ArrayList<ByteBuffer> subBuffers = new ArrayList<ByteBuffer>();
        if (fch != null)
        {
            ByteBuffer buf = null;
@@ -141,11 +153,45 @@
                int size = ComplexChainElement.ElementHandler.getInstance().getLength(element);
                buf = ByteBuffer.allocate(size * 2);
                ComplexChainElement.ElementHandler.getInstance().write(buf, element);
                ComplexChainElement complexElement = (ComplexChainElement) element;
                ListIterator it = complexElement.listIterator();
                while (it.hasNext())
                {
                    Element subElm = (Element) it.next();
                    try
                    {
                        IElementHandler handler = subElm.getElementType().getElementHandler();
                        size = handler.getLength(subElm);
                        ByteBuffer subBuf = ByteBuffer.allocate(size * 2);
                        handler.write(subBuf, subElm);
                        subBuffers.add(subBuf);
                    } catch (Dgn7fileException e)
                    {
                        logger.warn(e.getMessage(), e);
                    }
                }
            } else if (element instanceof ComplexShapeElement)
            {
                int size = ComplexShapeElement.ElementHandler.getInstance().getLength(element);
                buf = ByteBuffer.allocate(size * 2);
                ComplexShapeElement.ElementHandler.getInstance().write(buf, element);
                ComplexShapeElement complexElement = (ComplexShapeElement) element;
                ListIterator it = complexElement.listIterator();
                while (it.hasNext())
                {
                    Element subElm = (Element) it.next();
                    try
                    {
                        IElementHandler handler = subElm.getElementType().getElementHandler();
                        size = handler.getLength(subElm);
                        ByteBuffer subBuf = ByteBuffer.allocate(size * 2);
                        handler.write(subBuf, subElm);
                        subBuffers.add(subBuf);
                    } catch (Dgn7fileException e)
                    {
                        logger.warn(e.getMessage(), e);
                    }
                }
            } else if (element instanceof ArcElement)
            {
                int size = ArcElement.ElementHandler.getInstance().getLength(element);
@@ -166,6 +212,23 @@
                int size = TextNodeElement.ElementHandler.getInstance().getLength(element);
                buf = ByteBuffer.allocate(size * 2);
                TextNodeElement.ElementHandler.getInstance().write(buf, element);
                TextNodeElement nodeElement = (TextNodeElement) element;
                ListIterator it = nodeElement.listIterator();
                while (it.hasNext())
                {
                    Element subElm = (Element) it.next();
                    try
                    {
                        IElementHandler handler = subElm.getElementType().getElementHandler();
                        size = handler.getLength(subElm);
                        ByteBuffer subBuf = ByteBuffer.allocate(size * 2);
                        handler.write(subBuf, subElm);
                        subBuffers.add(subBuf);
                    } catch (Dgn7fileException e)
                    {
                        logger.warn(e.getMessage(), e);
                    }
                }
            }
            if ((buf != null) && (fch != null))
@@ -185,6 +248,26 @@
                }
            }
        }
        if ((subBuffers.size() != 0) && (fch != null))
        {
            for (ByteBuffer buf : subBuffers)
            {
                try
                {
                    buf.position(0);
                    int size = fch.write(buf);
                    if (size != buf.limit())
                    {
                        long position = fch.position();
                        logger.info("Pos:" + position);
                    }
                } catch (IOException e)
                {
                    logger.warn(e.getMessage(), e);
                }
            }
        }
    }
    private void createNewStream() throws IOException, SQLException