From 55f5f7a005c00ec764ed19647b245e48636a0440 Mon Sep 17 00:00:00 2001
From: Yuichiro Hanada <yhanada@google.com>
Date: Thu, 22 Aug 2013 16:52:05 +0900
Subject: [PATCH] [Refactor] Add writeDictionaryHeader.

Change-Id: I69026c47ce1d23f5c39c99ace76fa6b96cd1ce1b
---
 .../makedict/BinaryDictEncoderUtils.java      | 34 ++++++++++++-------
 .../latin/makedict/Ver3DictEncoder.java       |  3 +-
 2 files changed, 24 insertions(+), 13 deletions(-)

diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java
index 79f5ad8bda..019e30b2e8 100644
--- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java
+++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java
@@ -912,23 +912,15 @@ public class BinaryDictEncoderUtils {
     }
 
     /**
-     * Dumps a FusionDictionary to a file.
+     * Writes a file header to an output stream.
      *
-     * @param destination the stream to write the binary data to.
+     * @param destination the stream to write the file header to.
      * @param dict the dictionary to write.
      * @param formatOptions file format options.
      */
-    /* package */ static void writeDictionaryBinary(final OutputStream destination,
+    /* package */ static void writeDictionaryHeader(final OutputStream destination,
             final FusionDictionary dict, final FormatOptions formatOptions)
-            throws IOException, UnsupportedFormatException {
-
-        // Addresses are limited to 3 bytes, but since addresses can be relative to each node
-        // array, the structure itself is not limited to 16MB. However, if it is over 16MB deciding
-        // the order of the PtNode arrays becomes a quite complicated problem, because though the
-        // dictionary itself does not have a size limit, each node array must still be within 16MB
-        // of all its children and parents. As long as this is ensured, the dictionary file may
-        // grow to any size.
-
+                    throws IOException, UnsupportedFormatException {
         final int version = formatOptions.mVersion;
         if (version < FormatSpec.MINIMUM_SUPPORTED_VERSION
                 || version > FormatSpec.MAXIMUM_SUPPORTED_VERSION) {
@@ -975,6 +967,24 @@ public class BinaryDictEncoderUtils {
         destination.write(bytes);
 
         headerBuffer.close();
+    }
+
+    /**
+     * Dumps a FusionDictionary to a file.
+     *
+     * @param destination the stream to write the dictionary body to.
+     * @param dict the dictionary to write.
+     * @param formatOptions file format options.
+     */
+    /* package */ static void writeDictionaryBody(final OutputStream destination,
+            final FusionDictionary dict, final FormatOptions formatOptions) throws IOException {
+
+        // Addresses are limited to 3 bytes, but since addresses can be relative to each node
+        // array, the structure itself is not limited to 16MB. However, if it is over 16MB deciding
+        // the order of the PtNode arrays becomes a quite complicated problem, because though the
+        // dictionary itself does not have a size limit, each node array must still be within 16MB
+        // of all its children and parents. As long as this is ensured, the dictionary file may
+        // grow to any size.
 
         // Leave the choice of the optimal node order to the flattenTree function.
         MakedictLog.i("Flattening the tree...");
diff --git a/java/src/com/android/inputmethod/latin/makedict/Ver3DictEncoder.java b/java/src/com/android/inputmethod/latin/makedict/Ver3DictEncoder.java
index e81fd4514f..4e28feac85 100644
--- a/java/src/com/android/inputmethod/latin/makedict/Ver3DictEncoder.java
+++ b/java/src/com/android/inputmethod/latin/makedict/Ver3DictEncoder.java
@@ -62,7 +62,8 @@ public class Ver3DictEncoder implements DictEncoder {
         if (mOutStream == null) {
             openStream();
         }
-        BinaryDictEncoderUtils.writeDictionaryBinary(mOutStream, dict, formatOptions);
+        BinaryDictEncoderUtils.writeDictionaryHeader(mOutStream, dict, formatOptions);
+        BinaryDictEncoderUtils.writeDictionaryBody(mOutStream, dict, formatOptions);
         close();
     }
 }
-- 
GitLab