]> gitweb.fperrin.net Git - Dictionary.git/blob - src/com/hughes/android/dictionary/engine/PairEntry.java
go
[Dictionary.git] / src / com / hughes / android / dictionary / engine / PairEntry.java
1 package com.hughes.android.dictionary.engine;
2
3 import java.io.IOException;
4 import java.io.PrintStream;
5 import java.io.RandomAccessFile;
6
7 import com.hughes.util.raf.RAFSerializable;
8 import com.hughes.util.raf.RAFSerializer;
9
10 public class PairEntry extends Entry implements RAFSerializable<PairEntry> {
11   
12   public static final class Pair {
13     
14     public final String lang1;
15     public final String lang2;
16     
17     public Pair(final String lang1, final String lang2) {
18       this.lang1 = lang1;
19       this.lang2 = lang2;
20     }
21     
22     public String toString() {
23       return lang1 + " :: " + lang2;
24     }
25   }
26   
27   public final Pair[] pairs;
28   
29   public PairEntry(final Pair[] pairs) {
30     this.pairs = pairs;
31   }
32   
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());
37     }
38   }
39   @Override
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);
46     }
47   }
48   
49   static final RAFSerializer<PairEntry> SERIALIZER = new RAFSerializer<PairEntry>() {
50     @Override
51     public PairEntry read(RandomAccessFile raf) throws IOException {
52       return new PairEntry(raf);
53     }
54
55     @Override
56     public void write(RandomAccessFile raf, PairEntry t) throws IOException {
57       t.write(raf);
58     }
59   };
60   
61
62   public static class Row extends RowBase {
63     
64     Row(final RandomAccessFile raf, final int thisRowIndex,
65         final Index index) throws IOException {
66       super(raf, thisRowIndex, index);
67     }
68
69     Row(final int referenceIndex, final int thisRowIndex,
70         final Index index) {
71       super(referenceIndex, thisRowIndex, index);
72     }
73
74     public PairEntry getEntry() {
75       return index.dict.pairEntries.get(referenceIndex);
76     }
77     
78     @Override
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]);
83         out.println();
84       }
85     }
86   }
87
88
89
90 }