From 94ae08701bbd7585a0b7e5a92d1975965a503c03 Mon Sep 17 00:00:00 2001 From: Dennis Kao <ulysseskao@gmail.com> Date: Wed, 15 Jan 2014 11:28:52 +0800 Subject: [PATCH] Merge branch 'origin/2.1.x' --- xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7OracleReader.java | 126 +++++++++++++++-------------------------- 1 files changed, 47 insertions(+), 79 deletions(-) diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7OracleReader.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7OracleReader.java index b8908cf..189c289 100644 --- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7OracleReader.java +++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/Dgn7OracleReader.java @@ -19,10 +19,9 @@ * Dgn7OracleReader * User: Ulysses * Date: 2007/10/24 - * Time: �U�� 01:01:08 + * Time: */ -public class Dgn7OracleReader implements Iterator<Element> -{ +public class Dgn7OracleReader implements Iterator<Element> { private final static Logger logger = Logger.getLogger(Dgn7OracleReader.class); private String _sql; @@ -32,76 +31,60 @@ private static final int FETCHSIZE = 20; private Element _element; - public Dgn7OracleReader(String sql, String fieldName, OracleConnection connection) - { + public Dgn7OracleReader(String sql, String fieldName, OracleConnection connection) { this._sql = sql; this._fieldName = fieldName; this._connection = connection; } - public String getSql() - { + public String getSql() { return _sql; } - public void setSql(String sql) - { + public void setSql(String sql) { this._sql = sql; } - public String getFieldName() - { + public String getFieldName() { return _fieldName; } - public void setFieldName(String fieldName) - { + public void setFieldName(String fieldName) { this._fieldName = fieldName; } - public boolean hasNext() - { - if (_resultSet == null) - { - try - { + public boolean hasNext() { + if (_resultSet == null) { + try { initializeReader(); - } catch (SQLException e) - { + } catch (SQLException e) { throw new RuntimeException("initialize oralce error.", e); - } catch (Dgn7Exception e) - { + } catch (Dgn7Exception e) { throw new RuntimeException("initialize oralce error.", e); } } return _element != null; } - public Element next() - { + public Element next() { Element result = _element; - try - { + try { fetchElement(); - } catch (SQLException e) - { + } catch (SQLException e) { throw new RuntimeException("Error:" + e.getMessage(), e); - } catch (Dgn7Exception e) - { + } catch (Dgn7Exception e) { throw new RuntimeException("Error:" + e.getMessage(), e); } return result; } - public void remove() - { + public void remove() { throw new RuntimeException("Not Support this method."); } - private boolean initializeReader() throws SQLException, Dgn7Exception - { + private boolean initializeReader() throws SQLException, Dgn7Exception { if (_resultSet != null) return true; Statement stmtSrc = _connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); @@ -113,31 +96,24 @@ return true; } - private boolean fetchElement() throws SQLException, Dgn7Exception - { - if (_resultSet.next()) - { + private boolean fetchElement() throws SQLException, Dgn7Exception { + if (_resultSet.next()) { byte[] raw = null; Object value = _resultSet.getObject(this._fieldName); - if (value instanceof BLOB) - { + if (value instanceof BLOB) { BLOB blob = (BLOB) value; - try - { + try { raw = getBytesFromBLOB(blob); - } catch (IOException e) - { + } catch (IOException e) { throw new Dgn7Exception("IOError", e); } - blob.close(); - } else if (value instanceof byte[]) - { + // blob.close(); + } else if (value instanceof byte[]) { raw = (byte[]) value; } - if (raw == null) - { + if (raw == null) { _element = null; return false; } @@ -156,35 +132,28 @@ ElementType recordType = ElementType.forID(type); IElementHandler handler = recordType.getElementHandler(); _element = (Element) handler.read(buffer, signature, elementLength); - if (recordType.isComplexElement() && (elementLength < raw.length)) - { + if (recordType.isComplexElement() && (elementLength < raw.length)) { int offset = elementLength; - while (offset < (raw.length - 4)) - { + while (offset < (raw.length - 4)) { buffer.position(offset); signature = buffer.getShort(); type = (byte) ((signature >>> 8) & 0x007f); elementLength = (buffer.getShort() * 2) + 4; - if (raw.length < (offset + elementLength)) - { + if (raw.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) - { + if (handler != null) { Element subElement = (Element) handler.read(buffer, signature, elementLength); ((ComplexElement) _element).add(subElement); offset += elementLength; - } else - { + } else { byte[] remain = new byte[buffer.remaining()]; System.arraycopy(raw, offset, remain, 0, buffer.remaining()); - for (int i = 0; i < remain.length; i++) - { - if (remain[i] != 0) - { + 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]); } @@ -194,16 +163,14 @@ } } - } else - { + } else { _element = null; return false; } return true; } - protected static byte[] getBytesFromBLOB(BLOB blob) throws SQLException, IOException - { + protected byte[] getBytesFromBLOB(BLOB blob) throws SQLException, IOException { byte[] raw; // BLOB blob = (BLOB) rs.getBlob(1); @@ -213,29 +180,30 @@ ByteBuffer buffer = null; // ByteBuffer.allocate(optimalSize); int len; - try - { - while ((len = (is.read(chunk))) != -1) - { - if (buffer != null) - { + try { + while ((len = (is.read(chunk))) != -1) { + if (buffer != null) { buffer.limit(buffer.limit() + len); - } else - { + } else { buffer = ByteBuffer.allocate(len); } buffer.put(chunk); } - is.close(); assert buffer != null; buffer.position(0); raw = buffer.array(); - } catch (IOException e) - { + } catch (IOException e) { e.printStackTrace(); throw e; + } finally { + try { + is.close(); + } catch (IOException e) { + logger.warn("InputStream cannot close", e); + } + ; } return raw; -- Gitblit v0.0.0-SNAPSHOT