]> gitweb.fperrin.net Git - Dictionary.git/commitdiff
go
authorthadh <thadh@THADH-MTV.ad.corp.google.com>
Sat, 18 Apr 2009 16:54:00 +0000 (09:54 -0700)
committerthadh <thadh@THADH-MTV.ad.corp.google.com>
Sat, 18 Apr 2009 16:54:00 +0000 (09:54 -0700)
src/com/hughes/android/dictionary/Dictionary.java
src/com/hughes/android/dictionary/DictionaryActivity.java
src/com/hughes/android/dictionary/ZIndex.java [deleted file]
src/com/hughes/android/dictionary/ZMemoryIndex.java [deleted file]

index 99125935fc88877db6dcb7219201b397bc43c4a8..a80c87469c7dc7c2acb2958c48d630ca4f7e1e22 100755 (executable)
@@ -27,16 +27,16 @@ public final class Dictionary implements RAFSerializable<Dictionary> {
   final LanguageData[] languageDatas = new LanguageData[2];\r
 \r
   public Dictionary(final Language language0, final Language language1) {\r
-    languageDatas[0] = new LanguageData(language0, Entry.LANG1);\r
-    languageDatas[1] = new LanguageData(language1, Entry.LANG2);\r
+    languageDatas[0] = new LanguageData(this, language0, Entry.LANG1);\r
+    languageDatas[1] = new LanguageData(this, language1, Entry.LANG2);\r
     entries = new ArrayList<Entry>();\r
   }\r
 \r
   public Dictionary(final RandomAccessFile raf) throws IOException {\r
     entries = CachingList.create(FileList.create(raf, ENTRY_SERIALIZER, raf\r
         .getFilePointer()), 10000);\r
-    languageDatas[0] = new LanguageData(raf, Entry.LANG1);\r
-    languageDatas[1] = new LanguageData(raf, Entry.LANG2);\r
+    languageDatas[0] = new LanguageData(this, raf, Entry.LANG1);\r
+    languageDatas[1] = new LanguageData(this, raf, Entry.LANG2);\r
   }\r
 \r
   public void write(RandomAccessFile raf) throws IOException {\r
@@ -46,19 +46,22 @@ public final class Dictionary implements RAFSerializable<Dictionary> {
   }\r
 \r
   final class LanguageData implements RAFSerializable<LanguageData> {\r
+    final Dictionary dictionary;\r
     final Language language;\r
     final byte lang;\r
     final List<Row> rows;\r
     final List<IndexEntry> sortedIndex;\r
 \r
-    LanguageData(final Language language, final byte lang) {\r
+    LanguageData(final Dictionary dictionary, final Language language, final byte lang) {\r
+      this.dictionary = dictionary;\r
       this.language = language;\r
       this.lang = lang;\r
       rows = new ArrayList<Row>();\r
       sortedIndex = new ArrayList<IndexEntry>();\r
     }\r
 \r
-    LanguageData(final RandomAccessFile raf, final byte lang) throws IOException {\r
+    LanguageData(final Dictionary dictionary, final RandomAccessFile raf, final byte lang) throws IOException {\r
+      this.dictionary = dictionary;\r
       language = Language.lookup(raf.readUTF());\r
       if (language == null) {\r
         throw new RuntimeException("Unknown language.");\r
index db459a9ef65f7ad3c6ccb2d45744a938a883dcfb..cb587975f5a6e4b0dc00b48362a7e3fd351d12f9 100755 (executable)
@@ -26,6 +26,7 @@ import android.view.ContextMenu;
 import android.view.KeyEvent;
 import android.view.Menu;
 import android.view.MenuItem;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ContextMenu.ContextMenuInfo;
@@ -206,6 +207,7 @@ public class DictionaryActivity extends ListActivity {
 
   private MenuItem switchLanguageMenuItem = null;
   
+
   @Override
   public boolean onCreateOptionsMenu(final Menu menu) {
     switchLanguageMenuItem = menu.add("Switch to language.");
@@ -326,7 +328,6 @@ public class DictionaryActivity extends ListActivity {
   private void updateSearchText() {
     final EditText searchText = getSearchText();
     if (!searchText.hasFocus()) {
-      // TODO: Not so nice:
       final String word = activeLangaugeData.getIndexEntryForRow(selectedRowIndex).word;
       if (!word.equals(searchText.getText().toString())) {
         Log.d("THAD", "updateSearchText: setText: " + word);
@@ -423,7 +424,7 @@ public class DictionaryActivity extends ListActivity {
         column2.setWidth(1);
         // column1.setTextAppearance(parent.getContext(), android.R.style.Text);
         
-        // TODO: highlight query word in entries.
+        // TODO: color words by gender
         final String col1Text = entry.getAllText(activeLangaugeData.lang)[r]; 
         column1.setText(col1Text, TextView.BufferType.SPANNABLE);
         final Spannable col1Spannable = (Spannable) column1.getText();
diff --git a/src/com/hughes/android/dictionary/ZIndex.java b/src/com/hughes/android/dictionary/ZIndex.java
deleted file mode 100755 (executable)
index fa3dc7b..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-package com.hughes.android.dictionary;\r
-//package com.hughes.android.dictionary;\r
-//\r
-//import java.io.IOException;\r
-//import java.io.RandomAccessFile;\r
-//import java.util.Map;\r
-//import java.util.Set;\r
-//import java.util.TreeMap;\r
-//\r
-//import com.hughes.util.LRUCacheMap;\r
-//\r
-//\r
-//public final class Index {\r
-//  \r
-//  final String filename;\r
-//  final RandomAccessFile file;\r
-//  \r
-//  final Node root;\r
-//  final Map<Integer,Node> indexOffsetToNode = new LRUCacheMap<Integer,Node>(5000);\r
-//  \r
-//  \r
-//  public Index(final String filename) throws IOException {\r
-//    this.filename = filename;\r
-//    file = new RandomAccessFile(filename, "r");\r
-//    root = getNode(new NodeHandle("", 0));\r
-//  }\r
-//  \r
-//  public Node lookup(final String normalizedToken) throws IOException {\r
-//    return lookup(normalizedToken, 0, root);\r
-//  }\r
-//  \r
-//  private Node lookup(final String normalizedToken, final int pos, final Node node) throws IOException {\r
-//    if (pos == normalizedToken.length()) {\r
-//      return node;\r
-//    }\r
-//    \r
-//    // Check whether any prefix of the token is a child.\r
-//    for (int i = pos + 1; i <= normalizedToken.length(); ++i) {\r
-//      final NodeHandle childHandle = node.children.get(normalizedToken.substring(pos, i));\r
-//      if (childHandle != null) {\r
-//        return lookup(normalizedToken, i, childHandle.getNode());\r
-//      }\r
-//    }\r
-//    \r
-//    // Check whether any child starts with what's left of text.\r
-//    final String remainder = normalizedToken.substring(pos);\r
-//    for (final Map.Entry<String, NodeHandle> childHandle : node.children.entrySet()) {\r
-//      if (childHandle.getKey().startsWith(remainder)) {\r
-//        return getNode(childHandle.getValue());\r
-//      }\r
-//    }\r
-//    \r
-//    return node;\r
-//  }\r
-//  \r
-//  private Node getNode(final NodeHandle nodeHandle) throws IOException {\r
-//    Node node = indexOffsetToNode.get(nodeHandle.indexOffset);\r
-//    if (node == null) {\r
-//      node = new Node(nodeHandle);\r
-//      indexOffsetToNode.put(nodeHandle.indexOffset, node);\r
-//    }\r
-//    return node;\r
-//  }\r
-//  \r
-//  final class NodeHandle {\r
-//    final String normalizedToken;\r
-//    final int indexOffset;\r
-//\r
-//    NodeHandle(final String normalizedToken, final int indexOffset) throws IOException {\r
-//      this.normalizedToken = normalizedToken;\r
-//      this.indexOffset = indexOffset;\r
-//    }\r
-//    \r
-//    Node getNode() throws IOException {\r
-//      return Index.this.getNode(this);\r
-//    }\r
-//  }\r
-//\r
-//  final class Node {\r
-//    final NodeHandle nodeHandle;\r
-//    final TreeMap<String,NodeHandle> children;\r
-//    final Map<String,int[]> tokenToOffsets = new TreeMap<String, int[]>(EntryFactory.entryFactory.getTokenComparator());\r
-//    final int descendantTokenCount;\r
-//    final int descendantEntryCount;\r
-//    \r
-//    Node(final NodeHandle nodeHandle) throws IOException {\r
-//      this.nodeHandle = nodeHandle;\r
-//      \r
-//      file.seek(nodeHandle.indexOffset);\r
-//      \r
-//      // Read children to offset.\r
-//      final int numChildren = file.readInt();\r
-//      children = new TreeMap<String, NodeHandle>();\r
-//      for (int i = 0; i < numChildren; ++i) {\r
-//        final String chunk = file.readUTF().intern();\r
-//        if (chunk.length() == 0) {\r
-//          throw new IOException("Empty string chunk.");\r
-//        }\r
-//        children.put(chunk, new NodeHandle(nodeHandle.normalizedToken + chunk, file.readInt()));\r
-//      }\r
-//    \r
-//      // Read tokens.\r
-//      final int numTokens = file.readInt();\r
-//      for (int i = 0; i < numTokens; ++i) {\r
-//        final String token = file.readUTF();\r
-////        assert EntryFactory.entryFactory.normalizeToken(token).equals(nodeHandle.normalizedToken);\r
-//        final int[] offsets = new int[file.readInt()];\r
-//        for (int j = 0; j < offsets.length; ++j) {\r
-//          offsets[j]= file.readInt();\r
-//        }\r
-//        tokenToOffsets.put(token, offsets);\r
-//      }\r
-//      \r
-//      // TODO: move this up, and defer the loading of the other stuff until it's needed.\r
-//      descendantTokenCount = file.readInt();\r
-//      descendantEntryCount = file.readInt();\r
-//    }\r
-//    \r
-//    @Override\r
-//    public String toString() {\r
-//      return String.format("%s(%d,%d)", nodeHandle.normalizedToken, getThisCount(), getDescendantCount());\r
-//    }\r
-//    \r
-//    public int getDescendantCount() {\r
-//      return descendantEntryCount + descendantTokenCount;\r
-//    }\r
-//    \r
-//    public int getThisCount() {\r
-//      int count = tokenToOffsets.size();\r
-//      for (final int[] offsets : tokenToOffsets.values()) {\r
-//        count += offsets.length;\r
-//      }\r
-//      return count;\r
-//    }\r
-//\r
-//    public Object getDescendant(int position) throws IOException {\r
-//      assert position < getDescendantCount(); \r
-//\r
-////      System.out.println("getD: " + this + ", " + position);\r
-//      if (position < getThisCount()) {\r
-//        for (final Map.Entry<String, int[]> tokenEntry : tokenToOffsets.entrySet()) {\r
-//          if (position == 0) {\r
-//            return tokenEntry.getKey();\r
-//          }\r
-//          --position;\r
-//          if (position < tokenEntry.getValue().length) {\r
-//            return tokenEntry.getValue()[position];\r
-//          }\r
-//          position -= tokenEntry.getValue().length;\r
-//        }\r
-//        assert false;\r
-//      }\r
-//      position -= getThisCount();\r
-//      \r
-//      \r
-//      for (final Map.Entry<String,NodeHandle> childEntry : children.entrySet()) {\r
-//        final Node child = childEntry.getValue().getNode();\r
-//        if (position < child.getDescendantCount()) {\r
-//          return child.getDescendant(position);\r
-//        }\r
-//        position -= child.getDescendantCount();\r
-//      }\r
-//      assert false;\r
-//      return null;\r
-//    }\r
-//\r
-//    public void getDescendantEntryOffsets(final Set<Integer> entryOffsets, int maxSize) throws IOException {\r
-//      for (final int[] offsets : tokenToOffsets.values()) {\r
-//        for (final int offset : offsets) {\r
-//          if (entryOffsets.size() >= maxSize) {\r
-//            return;\r
-//          }\r
-//          entryOffsets.add(offset);\r
-//        }\r
-//      }\r
-//      if (entryOffsets.size() >= maxSize) {\r
-//        return;\r
-//      }\r
-//      for (final Map.Entry<String, NodeHandle> childEntry : children.entrySet()) {\r
-//        final Node child = childEntry.getValue().getNode();\r
-//        child.getDescendantEntryOffsets(entryOffsets, maxSize);\r
-//        if (entryOffsets.size() >= maxSize) {\r
-//          return;\r
-//        }\r
-//      }\r
-//    }\r
-//  }\r
-//  \r
-//}\r
diff --git a/src/com/hughes/android/dictionary/ZMemoryIndex.java b/src/com/hughes/android/dictionary/ZMemoryIndex.java
deleted file mode 100755 (executable)
index af65321..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-//package com.hughes.android.dictionary;\r
-//\r
-//import java.io.DataInputStream;\r
-//import java.io.DataOutputStream;\r
-//import java.io.IOException;\r
-//import java.io.Serializable;\r
-//\r
-//\r
-//public final class ZMemoryIndex {\r
-//  \r
-//  private static final long serialVersionUID = 3375180767865334065L;\r
-//\r
-//  static final class Node implements Serializable {\r
-//\r
-//    private static final long serialVersionUID = 8824115665859184225L;\r
-//\r
-//    final String[] chars;\r
-//    final Node[] children;\r
-//    final int[] offsets;\r
-//    \r
-//    Node(final int numChildren, final int numOffsets) {\r
-//      chars = new String[numChildren];\r
-//      children = new Node[numChildren];\r
-//      offsets = new int[numOffsets];\r
-//    }\r
-//    \r
-//    int descendantCount() {\r
-//      int total = 1;\r
-//      for (final Node child : children) {\r
-//        total += child.descendantCount();\r
-//      }\r
-//      return total;\r
-//    }\r
-//    \r
-//    Node(final DataInputStream is) throws IOException {\r
-//      final int numChildren = is.readInt();\r
-//      chars = new String[numChildren];\r
-//      children = new Node[numChildren];\r
-//      for (int i = 0; i < numChildren; ++i) {\r
-//        chars[i] = is.readUTF().intern();\r
-//        children[i] = new Node(is);\r
-//      }\r
-//      final int numOffsets = is.readInt();\r
-//      offsets = new int[numOffsets];\r
-//      for (int i = 0; i < numOffsets; ++i) {\r
-//        offsets[i] = is.readInt();\r
-//      }\r
-//    }\r
-//    \r
-//    void write(final DataOutputStream os) throws IOException {\r
-//      os.writeInt(chars.length);\r
-//      for (int i = 0; i < chars.length; i++) {\r
-//        os.writeUTF(chars[i]);\r
-//        children[i].write(os);\r
-//      }\r
-//      os.writeInt(offsets.length);\r
-//      for (int i = 0; i < offsets.length; i++) {\r
-//        os.writeInt(offsets[i]);\r
-//      }\r
-//    }\r
-//  }\r
-//  \r
-//}\r