package org.commcare.models.database; import android.content.ContentValues; import org.commcare.interfaces.AppFilePathBuilder; import org.javarosa.core.services.storage.Persistable; import java.io.BufferedInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; /** * Sql logic for storing persistable objects. Uses the filesystem to store * persitables in _unencrypted_ manner; useful when objects are larger than the * 1mb sql row limit. * * @author Phillip Mates (pmates@dimagi.com). */ public class UnencryptedHybridFileBackedSqlStorage<T extends Persistable> extends HybridFileBackedSqlStorage<T> { public UnencryptedHybridFileBackedSqlStorage(String table, Class<? extends T> ctype, AndroidDbHelper helper, AppFilePathBuilder fsPathBuilder) { super(table, ctype, helper, "app_level", fsPathBuilder); } @Override protected InputStream getInputStreamFromFile(String filename, byte[] aesKeyBytes) { try { return new BufferedInputStream(new FileInputStream(filename)); } catch (FileNotFoundException e) { throw new RuntimeException(e.getMessage()); } } @Override protected byte[] generateKeyAndAdd(ContentValues contentValues) { return null; } @Override protected DataOutputStream getOutputFileStream(String filename, byte[] aesKeyBytes) throws IOException { return new DataOutputStream(new FileOutputStream(filename)); } }