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;
26 public String toStringTab() {
27 return lang1 + "\t" + lang2;
32 public final Pair[] pairs;
34 public PairEntry(final Pair[] pairs) {
38 public PairEntry(final RandomAccessFile raf) throws IOException {
39 pairs = new Pair[raf.readInt()];
40 for (int i = 0; i < pairs.length; ++i) {
41 pairs[i] = new Pair(raf.readUTF(), raf.readUTF());
45 public void write(RandomAccessFile raf) throws IOException {
46 // TODO: this could be a short.
47 raf.writeInt(pairs.length);
48 for (int i = 0; i < pairs.length; ++i) {
49 raf.writeUTF(pairs[i].lang1);
50 raf.writeUTF(pairs[i].lang2);
54 static final RAFSerializer<PairEntry> SERIALIZER = new RAFSerializer<PairEntry>() {
56 public PairEntry read(RandomAccessFile raf) throws IOException {
57 return new PairEntry(raf);
61 public void write(RandomAccessFile raf, PairEntry t) throws IOException {
67 public static class Row extends RowBase {
69 Row(final RandomAccessFile raf, final int thisRowIndex,
70 final Index index) throws IOException {
71 super(raf, thisRowIndex, index);
74 Row(final int referenceIndex, final int thisRowIndex,
76 super(referenceIndex, thisRowIndex, index);
79 public PairEntry getEntry() {
80 return index.dict.pairEntries.get(referenceIndex);
84 public void print(PrintStream out) {
85 final PairEntry pairEntry = getEntry();
86 for (int i = 0; i < pairEntry.pairs.length; ++i) {
87 out.print((i == 0 ? " " : " ") + pairEntry.pairs[i]);
93 public String getRawText(boolean compact) {
94 final PairEntry pairEntry = getEntry();
96 return pairEntry.pairs[0].toStringTab();
98 final StringBuilder builder = new StringBuilder();
99 for (int i = 0; i < pairEntry.pairs.length; ++i) {
101 builder.append(" | ");
103 builder.append(pairEntry.pairs[i].lang1);
105 builder.append("\t");
106 for (int i = 0; i < pairEntry.pairs.length; ++i) {
108 builder.append(" | ");
110 builder.append(pairEntry.pairs[i].lang2);
112 return builder.toString();