package semtex.archery.util;
import java.io.*;
import android.app.backup.BackupAgent;
import android.app.backup.BackupDataInput;
import android.app.backup.BackupDataOutput;
import android.os.ParcelFileDescriptor;
import android.util.Log;
public class BasicGoogleBackupAgent extends BackupAgent {
private final String ARCHERY_BACKUP_KEY = "tas_database_dumps";
public final String TAG = BasicGoogleBackupAgent.class.getName();
@Override
public void onBackup(final ParcelFileDescriptor oldState, final BackupDataOutput data,
final ParcelFileDescriptor newState) throws IOException {
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final FileInputStream fis = new FileInputStream(getDatabasePath("tac.db"));
final byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) != -1) {
baos.write(buffer, 0, len);
} // while
fis.close();
final byte[] result = baos.toByteArray();
data.writeEntityHeader(ARCHERY_BACKUP_KEY, result.length);
data.writeEntityData(result, result.length);
Log.i(TAG, "Sent " + result.length + " bytes to backup");
} // onBackup
@Override
public void onRestore(final BackupDataInput data, final int appVersionCode, final ParcelFileDescriptor newState)
throws IOException {
while (data.readNextHeader()) {
if (data.getKey().equals(ARCHERY_BACKUP_KEY)) {
Log.i(TAG, "Writing back " + data.getDataSize() + " bytes");
final byte[] content = new byte[data.getDataSize()];
data.readEntityData(content, 0, data.getDataSize());
final File directory = new File(BackupRestoreHelper.DB_LOCATION_INTERN_PATH);
directory.mkdirs();
final FileOutputStream fos = new FileOutputStream(BackupRestoreHelper.DB_LOCATION_INTERN);
fos.write(content);
fos.close();
ProcessUtils.getInstance().killTasWithTimeout(10, getApplicationContext());
}
}
}
}