package yuku.alkitab.base.storage;
import android.util.Log;
import yuku.alkitab.io.BibleReader;
import yuku.alkitab.yes1.Yes1Reader;
import yuku.alkitab.yes2.Yes2Reader;
import yuku.alkitab.yes2.io.RandomAccessFileRandomInputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;
public class YesReaderFactory {
public static final String TAG = YesReaderFactory.class.getSimpleName();
/**
* @return A {@link Yes1Reader}, {@link Yes2Reader}, or null if there is any error.
*/
public static BibleReader createYesReader(String filename) {
try {
byte[] header = new byte[8];
{
RandomAccessFile f = new RandomAccessFile(filename, "r");
f.read(header);
f.close();
}
if (header[0] != (byte) 0x98
|| header[1] != (byte) 0x58
|| header[2] != (byte) 0x0d
|| header[3] != (byte) 0x0a
|| header[4] != (byte) 0x00
|| header[5] != (byte) 0x5d
|| header[6] != (byte) 0xe0) {
Log.e(TAG, "Yes file '" + filename + "' has not a correct header. Header is: " + Arrays.toString(header));
return null;
}
if (header[7] == 0x01) { // VERSION 1 YES
return new Yes1Reader(filename);
} else if (header[7] == 0x02) { // VERSION 2 YES
return new Yes2Reader(new RandomAccessFileRandomInputStream(filename));
} else {
Log.e(TAG, "Yes file version unsupported: " + header[7]);
return null;
}
} catch (IOException e) {
Log.e(TAG, "@@createYesReader io exception", e);
return null;
}
}
}