import com.hughes.util.raf.RAFSerializable;
import com.ibm.icu.text.Transliterator;
+import java.io.DataInput;
+import java.io.DataOutput;
import java.io.IOException;
import java.io.PrintStream;
import java.io.RandomAccessFile;
lazyHtmlLoader = null;
}
- public HtmlEntry(Dictionary dictionary, RandomAccessFile raf, final int index)
+ public HtmlEntry(Dictionary dictionary, DataInput raf, final int index)
throws IOException {
super(dictionary, raf, index);
title = raf.readUTF();
- lazyHtmlLoader = new LazyHtmlLoader(raf);
+ lazyHtmlLoader = new LazyHtmlLoader(raf, dictionary.dictFileVersion);
html = null;
}
@Override
- public void write(RandomAccessFile raf) throws IOException {
+ public void write(DataOutput raf) throws IOException {
super.write(raf);
raf.writeUTF(title);
final byte[] bytes = getHtml().getBytes("UTF-8");
final byte[] zipBytes = StringUtil.zipBytes(bytes);
- raf.writeInt(bytes.length);
- raf.writeInt(zipBytes.length);
+ StringUtil.writeVarInt(raf, zipBytes.length);
raf.write(zipBytes);
}
}
@Override
- public HtmlEntry read(RandomAccessFile raf, final int index) throws IOException {
+ public HtmlEntry read(DataInput raf, final int index) throws IOException {
return new HtmlEntry(dictionary, raf, index);
}
@Override
- public void write(RandomAccessFile raf, HtmlEntry t) throws IOException {
+ public void write(DataOutput raf, HtmlEntry t) throws IOException {
t.write(raf);
}
}
boolean isExpanded = false;
- Row(final RandomAccessFile raf, final int thisRowIndex,
+ Row(final DataInput raf, final int thisRowIndex,
final Index index) throws IOException {
super(raf, thisRowIndex, index);
}
// Not sure this volatile is right, but oh well.
volatile SoftReference<String> htmlRef = new SoftReference<String>(null);
- private LazyHtmlLoader(final RandomAccessFile raf) throws IOException {
- this.raf = raf;
- numBytes = raf.readInt();
- numZipBytes = raf.readInt();
+ private LazyHtmlLoader(final DataInput inp, int version) throws IOException {
+ raf = (RandomAccessFile)inp;
+ if (version >= 7) {
+ numBytes = -1;
+ numZipBytes = StringUtil.readVarInt(raf);
+ } else {
+ numBytes = raf.readInt();
+ numZipBytes = raf.readInt();
+ }
offset = raf.getFilePointer();
raf.skipBytes(numZipBytes);
}
}
System.out.println("Loading Html: numBytes=" + numBytes + ", numZipBytes="
+ numZipBytes);
- final byte[] bytes = new byte[numBytes];
final byte[] zipBytes = new byte[numZipBytes];
synchronized (raf) {
try {
}
}
try {
- StringUtil.unzipFully(zipBytes, bytes);
+ final byte[] bytes = StringUtil.unzipFully(zipBytes, numBytes);
html = new String(bytes, "UTF-8");
} catch (IOException e) {
throw new RuntimeException(e);