]> source.dussan.org Git - jackcess.git/commitdiff
minor refactor
authorJames Ahlborn <jtahlborn@yahoo.com>
Wed, 27 Oct 2010 23:54:43 +0000 (23:54 +0000)
committerJames Ahlborn <jtahlborn@yahoo.com>
Wed, 27 Oct 2010 23:54:43 +0000 (23:54 +0000)
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@489 f203690c-595d-4dc9-a70b-905162fa7fd2

src/java/com/healthmarketscience/jackcess/ByteUtil.java
src/java/com/healthmarketscience/jackcess/Column.java
src/java/com/healthmarketscience/jackcess/IndexPageCache.java
src/java/com/healthmarketscience/jackcess/JetFormat.java

index 5aa09eb8eedb0c17e8c34f7ca5fe4016c67b9cd7..6fe9d73b5b40ca57aa622c8e924e483aade65694 100644 (file)
@@ -531,6 +531,26 @@ public final class ByteUtil {
     return newPos;
   }
 
+  /**
+   * Returns a copy of the the given array of the given length.
+   */
+  public static byte[] copyOf(byte[] arr, int newLength)
+  {
+    return copyOf(arr, 0, newLength);
+  }
+
+  /**
+   * Returns a copy of the the given array of the given length starting at the
+   * given position.
+   */
+  public static byte[] copyOf(byte[] arr, int offset, int newLength)
+  {
+    byte[] newArr = new byte[newLength];
+    int srcLen = arr.length - offset;
+    System.arraycopy(arr, offset, newArr, 0, Math.min(srcLen, newLength));
+    return newArr;
+  }
+
   /**
    * Utility byte stream similar to ByteArrayOutputStream but with extended
    * accessibility to the bytes.
@@ -608,8 +628,7 @@ public final class ByteUtil {
         result = _bytes;
         _bytes = null;
       } else {
-        result = new byte[_length];
-        System.arraycopy(_bytes, 0, result, 0, _length);
+        result = copyOf(_bytes, _length);
         if(_lastLength == _length) {
           // if we get the same result length bytes twice in a row, clear the
           // _bytes so that the next _bytes will be _lastLength
index a0391e7e47f4d27f92cddf50b3c0b6e32bdb9a38..666fa1e1a8fef62cf6d2f8aefb44053187f3f775 100644 (file)
@@ -1277,8 +1277,7 @@ public class Column implements Comparable<Column> {
     int dataLength = dataEnd - dataStart;
     if(inCompressedMode) {
       // handle compressed data
-      byte[] tmpData = new byte[dataLength];
-      System.arraycopy(data, dataStart, tmpData, 0, dataLength);
+      byte[] tmpData = ByteUtil.copyOf(data, dataStart, dataLength);
       expander.reset();
       textBuf.append(expander.expand(tmpData));
     } else {
index 6f9b6a74bb2f673dadb47a0f1307057173fb2c79..62bd1c953582002ec39ff62dd45033f527ced5d6 100644 (file)
@@ -955,9 +955,7 @@ public class IndexPageCache
       }
       
       // need new prefix
-      byte[] tmpPrefix = new byte[len];
-      System.arraycopy(prefix, 0, tmpPrefix, 0, len);
-      prefix = tmpPrefix;
+      prefix = ByteUtil.copyOf(prefix, len);
     }
 
     return prefix;
index b9748b1a92f52bf0789ab8c40ccf730e38926f4b..468979716b54a0efb8443b97e8eb151f97a05522 100644 (file)
@@ -487,9 +487,7 @@ public abstract class JetFormat {
     protected int defineOffsetMaskedHeader() { return 24; }
     @Override
     protected byte[] defineHeaderMask() { 
-      byte[] mask = new byte[BASE_HEADER_MASK.length - 2];
-      System.arraycopy(BASE_HEADER_MASK, 0, mask, 0, mask.length);
-      return mask; 
+      return ByteUtil.copyOf(BASE_HEADER_MASK, BASE_HEADER_MASK.length - 2); 
     }
     @Override
     protected int defineOffsetHeaderDate() { return -1; }