1 package com.hughes.android.dictionary.engine;
3 import java.io.IOException;
4 import java.io.PrintStream;
5 import java.io.RandomAccessFile;
7 import com.hughes.util.raf.RAFSerializable;
8 import com.hughes.util.raf.RAFSerializer;
10 public class PairEntry extends Entry implements RAFSerializable<PairEntry> {
12 public static final class Pair {
14 public final String lang1;
15 public final String lang2;
17 public Pair(final String lang1, final String lang2) {
22 public String toString() {
23 return lang1 + " :: " + lang2;
27 public final Pair[] pairs;
29 public PairEntry(final Pair[] pairs) {
33 public PairEntry(final RandomAccessFile raf) throws IOException {
34 pairs = new Pair[raf.readInt()];
35 for (int i = 0; i < pairs.length; ++i) {
36 pairs[i] = new Pair(raf.readUTF(), raf.readUTF());
40 public void write(RandomAccessFile raf) throws IOException {
41 // TODO: this could be a short.
42 raf.writeInt(pairs.length);
43 for (int i = 0; i < pairs.length; ++i) {
44 raf.writeUTF(pairs[i].lang1);
45 raf.writeUTF(pairs[i].lang2);
49 static final RAFSerializer<PairEntry> SERIALIZER = new RAFSerializer<PairEntry>() {
51 public PairEntry read(RandomAccessFile raf) throws IOException {
52 return new PairEntry(raf);
56 public void write(RandomAccessFile raf, PairEntry t) throws IOException {
62 public static class Row extends RowBase {
64 Row(final RandomAccessFile raf, final int thisRowIndex,
65 final Index index) throws IOException {
66 super(raf, thisRowIndex, index);
69 Row(final int referenceIndex, final int thisRowIndex,
71 super(referenceIndex, thisRowIndex, index);
74 public PairEntry getEntry() {
75 return index.dict.pairEntries.get(referenceIndex);
79 public void print(PrintStream out) {
80 final PairEntry pairEntry = getEntry();
81 for (int i = 0; i < pairEntry.pairs.length; ++i) {
82 out.print((i == 0 ? " " : " ") + pairEntry.pairs[i]);