package com.golshadi.majid.database; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.golshadi.majid.Utils.helper.SqlString; import com.golshadi.majid.database.constants.CHUNKS; import com.golshadi.majid.database.constants.TABLES; import com.golshadi.majid.database.elements.Chunk; import com.golshadi.majid.database.elements.Task; import java.util.ArrayList; import java.util.List; /** * Created by Majid Golshadi on 4/10/2014. */ public class ChunksDataSource { private SQLiteDatabase database; public void openDatabase(DatabaseHelper databaseHelper){ database = databaseHelper.getWritableDatabase(); } public int insertChunks(Task task){ long lastChunkInserted = 0; if (task.size == 0) { // not resumable } else { long chunkSize = task.size / task.chunks; for (int i = 0; i < task.chunks; i++) { Chunk chunk = new Chunk(task.id); if (i == 0) { chunk.begin = 0; } else { chunk.begin = (chunkSize * i)+1; } if (i == task.chunks - 1) { chunk.end = task.size; } else { chunk.end = chunkSize * (i + 1); } lastChunkInserted = database.insert(TABLES.CHUNKS, null, chunk.converterToContentValues()); } } return (int) lastChunkInserted - task.chunks + 1; } public List<Chunk> chunksRelatedTask(int taskID){ List<Chunk> chunks = new ArrayList<Chunk>(); String query = "SELECT * FROM "+ TABLES.CHUNKS+" WHERE "+ CHUNKS.COLUMN_TASK_ID+" == "+taskID; Cursor cr = database.rawQuery(query, null); if (cr.moveToFirst()){ do{ Chunk chunk = new Chunk(taskID); chunk.cursorToChunk(cr); chunks.add(chunk); } while (cr.moveToNext()); } cr.close(); return chunks; } public boolean delete(int chunkID){ int affectedRow = database.delete(TABLES.CHUNKS, CHUNKS.COLUMN_ID+"="+ SqlString.Int(chunkID), null); if (affectedRow != 0) return true; return false; } public void close(){ database.close(); } }