package org.softeg.slartus.forpdaplus.db;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import org.softeg.slartus.forpdaplus.App;
import org.softeg.slartus.forpdaplus.classes.DownloadTask;
import org.softeg.slartus.forpdaplus.classes.common.Functions;
import org.softeg.slartus.forpdaplus.common.AppLog;
import java.util.Date;
/**
* Created by IntelliJ IDEA.
* User: slartus
* Date: 19.10.12
* Time: 22:11
* To change this template use File | Settings | File Templates.
*/
public class DownloadsTable {
public static final String TABLE_NAME = "Downloads";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_URL = "url";
public static final String COLUMN_CREATEDATETIME = "CreateDatetime";
public static final String COLUMN_ENDDATETIME = "EndDatetime";
public static final String COLUMN_FILEPATH = "FilePath";
public static final String COLUMN_DOWNLOADFILEPATH = "DownloadFilePath";
public static final String COLUMN_CONTENTLEGTH = "ContentLength";
public static final String COLUMN_STATE = "State";
public static final String COLUMN_DOWNLOADEDCONTENTLENGTH = "DownloadedContentLength";
public static void insertRow(int id, String url, Date createDateTime) {
SQLiteDatabase db = null;
try {
DbHelper dbHelper = new DbHelper(App.getInstance());
db = dbHelper.getWritableDatabase();
// db.beginTransaction();
ContentValues values = new ContentValues();
values.put(COLUMN_ID, id);
values.put(COLUMN_URL, url);
values.put(COLUMN_CREATEDATETIME, DbHelper.DateTimeFormat.format(createDateTime));
values.put(COLUMN_ENDDATETIME, DbHelper.DateTimeFormat.format(createDateTime));
db.insert(TABLE_NAME, null, values);
} catch (Exception ex) {
AppLog.e(App.getInstance(), ex);
} finally {
if (db != null) {
// db.endTransaction();
db.close();
}
}
}
public static void updateRow(int notificationId, String downloadingFilePath, String outputFile, long contentLength) {
SQLiteDatabase db = null;
try {
DbHelper dbHelper = new DbHelper(App.getInstance());
db = dbHelper.getWritableDatabase();
// db.beginTransaction();
ContentValues cv = new ContentValues();
cv.put(COLUMN_DOWNLOADFILEPATH, downloadingFilePath);
cv.put(COLUMN_FILEPATH, outputFile);
cv.put(COLUMN_CONTENTLEGTH, contentLength + "");
db.update(TABLE_NAME, cv, COLUMN_ID + "=" + notificationId, null);
} catch (Exception ex) {
AppLog.e(App.getInstance(), ex);
} finally {
if (db != null) {
// db.endTransaction();
db.close();
}
}
}
private static int NEXT_ID = -1;
public static int getNextId() {
SQLiteDatabase db = null;
Cursor mcursor = null;
try {
DbHelper dbHelper = new DbHelper(App.getInstance());
db = dbHelper.getWritableDatabase();
String count = "SELECT max(" + COLUMN_ID + ") FROM " + DownloadsTable.TABLE_NAME;
mcursor = db.rawQuery(count, null);
mcursor.moveToFirst();
int nextId = mcursor.getInt(0) + 1;
NEXT_ID= Math.max(NEXT_ID + 1, nextId);
return NEXT_ID;
} catch (Exception ex) {
AppLog.e(App.getInstance(), ex);
return Functions.getUniqueDateInt();
} finally {
if (mcursor != null)
mcursor.close();
if (db != null) {
// db.endTransaction();
db.close();
}
}
}
public static void endRow(DownloadTask downloadTask) {
SQLiteDatabase db = null;
try {
DbHelper dbHelper = new DbHelper(App.getInstance());
db = dbHelper.getWritableDatabase();
// db.beginTransaction();
ContentValues cv = new ContentValues();
cv.put(COLUMN_ENDDATETIME, DbHelper.DateTimeFormat.format(downloadTask.getStateChangedDate()));
cv.put(COLUMN_STATE, downloadTask.getState());
cv.put(COLUMN_DOWNLOADEDCONTENTLENGTH, downloadTask.getDownloadedSize());
db.update(TABLE_NAME, cv, COLUMN_ID + "=" + downloadTask.getId(), null);
} catch (Exception ex) {
AppLog.e(App.getInstance(), ex);
} finally {
if (db != null) {
// db.endTransaction();
db.close();
}
}
}
}