]> source.dussan.org Git - jackcess.git/commitdiff
add getBlob convenience method
authorJames Ahlborn <jtahlborn@yahoo.com>
Wed, 7 May 2014 03:34:34 +0000 (03:34 +0000)
committerJames Ahlborn <jtahlborn@yahoo.com>
Wed, 7 May 2014 03:34:34 +0000 (03:34 +0000)
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@861 f203690c-595d-4dc9-a70b-905162fa7fd2

src/main/java/com/healthmarketscience/jackcess/Row.java
src/main/java/com/healthmarketscience/jackcess/impl/RowImpl.java
src/main/java/com/healthmarketscience/jackcess/util/OleBlob.java
src/test/java/com/healthmarketscience/jackcess/util/OleBlobTest.java

index e5d797d1b3881cbc9702fc565e68e39f0650b765..08eaa6229f9da8eee15adc6b89867d2c746553bd 100644 (file)
@@ -19,11 +19,13 @@ USA
 
 package com.healthmarketscience.jackcess;
 
+import java.io.IOException;
 import java.util.Date;
 import java.util.Map;
 import java.math.BigDecimal;
 
 import com.healthmarketscience.jackcess.complex.ComplexValueForeignKey;
+import com.healthmarketscience.jackcess.util.OleBlob;
 
 
 /**
@@ -102,7 +104,15 @@ public interface Row extends Map<String,Object>
 
   /**
    * Convenience method which gets the value for the row with the given name,
-   * casting it to a ComplexValueForeignKey (DataType COMPLEX_TYPE).
+   * casting it to a {@link ComplexValueForeignKey} (DataType COMPLEX_TYPE).
    */
   public ComplexValueForeignKey getForeignKey(String name);
+
+  /**
+   * Convenience method which gets the value for the row with the given name,
+   * converting it to an {@link OleBlob} (DataTypes OLE).
+   * </p>
+   * Note, <i>the OleBlob should be closed after use</i>.
+   */
+  public OleBlob getBlob(String name) throws IOException;
 }
index 34071ad1c5f8fc3dc0fb1e3e43b8e2af69cfc2fd..dcd4d20ac52b823779296d903f1bb54db68a92f7 100644 (file)
@@ -19,12 +19,14 @@ USA
 
 package com.healthmarketscience.jackcess.impl;
 
+import java.io.IOException;
 import java.util.LinkedHashMap;
 import java.util.Date;
 import java.math.BigDecimal;
 
 import com.healthmarketscience.jackcess.Row;
 import com.healthmarketscience.jackcess.complex.ComplexValueForeignKey;
+import com.healthmarketscience.jackcess.util.OleBlob;
 
 
 /**
@@ -103,6 +105,11 @@ public class RowImpl extends LinkedHashMap<String,Object> implements Row
     return (ComplexValueForeignKey)get(name);
   }
 
+  public OleBlob getBlob(String name) throws IOException {
+    byte[] bytes = getBytes(name);
+    return ((bytes != null) ? OleBlob.Builder.fromInternalData(bytes) : null);
+  }
+
   @Override
   public String toString() {
     return CustomToStringStyle.valueBuilder("Row[" + _id + "]")
index 18ae5b71e6638724139ca826ac87021320677760..54f63afa8d124b6bf99a3eee5b1c4900e55f5703 100644 (file)
@@ -31,7 +31,7 @@ import java.sql.Blob;
 import com.healthmarketscience.jackcess.impl.OleUtil;
 
 /**
- * Extentions of the Blob interface with additional functionality for working
+ * Extensions of the Blob interface with additional functionality for working
  * with the OLE content from an access database.  The ole data type in access
  * has a wide range of functionality (including wrappers with nested wrappers
  * with nested filesystems!), and jackcess only supports a small portion of
@@ -56,10 +56,9 @@ import com.healthmarketscience.jackcess.impl.OleUtil;
  * <p/>
  * <b>Example for interpreting an existing OLE field:</b>
  * <pre>
- *   byte[] oleBytes = row.getBytes("MyOleColumn");
  *   OleBlob oleBlob = null;
  *   try {
- *     oleBlob = OleBlob.Builder.fromInternalData(oleBlob);
+ *     oleBlob = row.getBlob("MyOleColumn");
  *     Content content = oleBlob.getContent()
  *     if(content.getType() == OleBlob.ContentType.SIMPLE_PACKAGE) {
  *       FileOutputStream out = ...;
index 3a1cc05cf7f15b57e4ff8ff65540d77b54a2ea60..250d433c5d8fbd6cde82d9e03a07e555bd87fb35 100644 (file)
@@ -101,8 +101,7 @@ public class OleBlobTest extends TestCase
 
       for(Row row : t) {
         try {
-          blob = OleBlob.Builder.fromInternalData(
-              row.getBytes("ole"));
+          blob = row.getBlob("ole");
           OleBlob.Content content = blob.getContent();
           assertSame(blob, content.getBlob());
           assertSame(content, blob.getContent());
@@ -171,7 +170,7 @@ public class OleBlobTest extends TestCase
         try {
 
           String name = row.getString("name");
-          oleBlob = OleBlob.Builder.fromInternalData(row.getBytes("ole_data"));
+          oleBlob = row.getBlob("ole_data");
           OleBlob.Content content = oleBlob.getContent();
           Attachment attach = null;
           if(content.getType() != OleBlob.ContentType.LINK) {