From cb91d02e150a20d5a6d6d4a0470aa03636d42fe6 Mon Sep 17 00:00:00 2001 From: Mahdi Pishguy Date: Wed, 30 Nov 2016 05:33:08 +0330 Subject: [PATCH 1/7] Update QueueModerator.java --- com/golshadi/majid/core/mainWorker/QueueModerator.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/com/golshadi/majid/core/mainWorker/QueueModerator.java b/com/golshadi/majid/core/mainWorker/QueueModerator.java index bc182be..b19b942 100644 --- a/com/golshadi/majid/core/mainWorker/QueueModerator.java +++ b/com/golshadi/majid/core/mainWorker/QueueModerator.java @@ -37,11 +37,15 @@ public QueueModerator(TasksDataSource tasksDataSource, ChunksDataSource chunksDa this.moderator = localModerator; this.moderator.setQueueObserver(this); this.listener = downloadManagerListener; - this.downloadTaskPerTime = downloadPerTime; + + if (tasks.size() < downloadPerTime) { + downloadTaskPerTime = tasks.size(); + } else { + downloadTaskPerTime = downloadPerTime; + } this.uncompletedTasks = tasks; - downloaderList = - new HashMap(downloadTaskPerTime); + downloaderList =new HashMap<>(downloadTaskPerTime); } From 9e469843dd4213aabadb6ecfb630c145f353a8a7 Mon Sep 17 00:00:00 2001 From: Mahdi Pishguy Date: Wed, 30 Nov 2016 09:46:45 +0330 Subject: [PATCH 2/7] Update QueueModerator.java --- com/golshadi/majid/core/mainWorker/QueueModerator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com/golshadi/majid/core/mainWorker/QueueModerator.java b/com/golshadi/majid/core/mainWorker/QueueModerator.java index b19b942..3e791d5 100644 --- a/com/golshadi/majid/core/mainWorker/QueueModerator.java +++ b/com/golshadi/majid/core/mainWorker/QueueModerator.java @@ -39,9 +39,9 @@ public QueueModerator(TasksDataSource tasksDataSource, ChunksDataSource chunksDa this.listener = downloadManagerListener; if (tasks.size() < downloadPerTime) { - downloadTaskPerTime = tasks.size(); + this.downloadTaskPerTime = tasks.size(); } else { - downloadTaskPerTime = downloadPerTime; + this.downloadTaskPerTime = downloadPerTime; } this.uncompletedTasks = tasks; From 2de7e267ea83620794514883a3e698f5658ee7b2 Mon Sep 17 00:00:00 2001 From: Mahdi Pishguy Date: Wed, 30 Nov 2016 11:01:18 +0330 Subject: [PATCH 3/7] Update QueueModerator.java Get ```IndexOutOfBoundsException``` error --- .../majid/core/mainWorker/QueueModerator.java | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/com/golshadi/majid/core/mainWorker/QueueModerator.java b/com/golshadi/majid/core/mainWorker/QueueModerator.java index 3e791d5..37a3377 100644 --- a/com/golshadi/majid/core/mainWorker/QueueModerator.java +++ b/com/golshadi/majid/core/mainWorker/QueueModerator.java @@ -51,26 +51,29 @@ public QueueModerator(TasksDataSource tasksDataSource, ChunksDataSource chunksDa public void startQueue() { - if (uncompletedTasks != null) { - - int location = 0; - while (uncompletedTasks.size() > 0 && - !pauseFlag && - downloadTaskPerTime >= downloaderList.size()) { - Task task = uncompletedTasks.get(location); - Thread downloader = - new AsyncStartDownload(tasksDataSource, chunksDataSource, moderator, listener, task); - - downloaderList.put(task.id, downloader); - uncompletedTasks.remove(location); - - downloader.start(); - - - location++; - } - - } + if (uncompletedTasks != null) { + + int location = 0; + while (uncompletedTasks.size() > 0 && + !pauseFlag && + downloadTaskPerTime >= downloaderList.size()) { + try { + Task task = uncompletedTasks.get(location); + Thread downloader = + new AsyncStartDownload(tasksDataSource, chunksDataSource, moderator, listener, task); + + downloaderList.put(task.id, downloader); + uncompletedTasks.remove(location); + + downloader.start(); + + location++; + } catch (IndexOutOfBoundsException e) { + e.printStackTrace(); + Log.e("QueueModerator", e.getMessage()); + } + } + } } public void wakeUp(int taskID){ From c02edbaaaaf6c03994657377b547c84d60dfbc42 Mon Sep 17 00:00:00 2001 From: Mahdi Pishguy Date: Wed, 30 Nov 2016 11:13:17 +0330 Subject: [PATCH 4/7] Update Readme File Add some code to help user to how can we use download multiple task --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 02ac436..97bc8e5 100644 --- a/README.md +++ b/README.md @@ -149,6 +149,10 @@ void DownloadManagerPro.StartQueueDownload(int downloadTaskPerTime, int sortType Example: ``` java +int taskTokenOne = dm.addTask("save_name", "http://www.site.com/video/ss.mp4", false, false); +int taskTokenTwo = dm.addTask("save_name", "http://www.site.com/video/ss_1.mp4", false, false); +int taskTokenThree = dm.addTask("save_name", "http://www.site.com/video/ss_2.mp4", false, false); + try { dm.startQueueDownload(3, QueueSort.oldestFirst); From b704fddeb24bd90f867dc4e451ed90fd45e39a12 Mon Sep 17 00:00:00 2001 From: Mahdi Pishguy Date: Wed, 30 Nov 2016 13:47:27 +0330 Subject: [PATCH 5/7] Update DownloadManagerPro.java Add DeleteAllUncompletedsDownloads from database and files --- .../majid/core/DownloadManagerPro.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/com/golshadi/majid/core/DownloadManagerPro.java b/com/golshadi/majid/core/DownloadManagerPro.java index 1bae313..9cab682 100644 --- a/com/golshadi/majid/core/DownloadManagerPro.java +++ b/com/golshadi/majid/core/DownloadManagerPro.java @@ -352,6 +352,24 @@ public boolean delete(int token, boolean deleteTaskFile){ return false; } + /** + * delete all uncompleted downloads tasks from db and files + */ + public void deleteAllUnCompleteds() { + List task = tasksDataSource.allUnCompleteds(); + if (task != null) { + for (Task tsk : task) { + + List taskChunks = + chunksDataSource.chunksRelatedTask(tsk.id); + for (Chunk chunk : taskChunks) { + FileUtils.delete(tsk.save_address, String.valueOf(chunk.id)); + chunksDataSource.delete(chunk.id); + } + delete(tsk.id, true); + } + } + } /** * close db connection From 4f3ca87a88c9c35d8c16b0e456d208f7b744e28f Mon Sep 17 00:00:00 2001 From: Mahdi Pishguy Date: Wed, 30 Nov 2016 13:49:34 +0330 Subject: [PATCH 6/7] Update TasksDataSource.java add allUnCompleteds function --- .../majid/database/TasksDataSource.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/com/golshadi/majid/database/TasksDataSource.java b/com/golshadi/majid/database/TasksDataSource.java index 9ada974..2febf59 100644 --- a/com/golshadi/majid/database/TasksDataSource.java +++ b/com/golshadi/majid/database/TasksDataSource.java @@ -152,6 +152,31 @@ public Task getTaskInfo(int id) { return task; } + public List allUnCompleteds() { + List unCompleted = new ArrayList<>(); + + String query = "SELECT * FROM " + TABLES.TASKS + + " WHERE " + TASKS.COLUMN_STATE + "!=" + SqlString.Int(TaskStates.END); + + Cursor cr = database.rawQuery(query, null); + + if (cr != null) { + cr.moveToFirst(); + + while (!cr.isAfterLast()) { + Task task = new Task(); + task.cursorToTask(cr); + unCompleted.add(task); + + cr.moveToNext(); + } + + cr.close(); + } + + return unCompleted; + } + public Task getTaskInfoWithName(String name) { String query = "SELECT * FROM "+TABLES.TASKS+" WHERE "+TASKS.COLUMN_NAME+"="+SqlString.String(name); Cursor cr = database.rawQuery(query, null); From cbc26ed57742919fe875617ad7881422494dfea4 Mon Sep 17 00:00:00 2001 From: Mahdi Pishguy Date: Wed, 30 Nov 2016 13:51:57 +0330 Subject: [PATCH 7/7] Update QueueModerator.java Fix latest commit for downloadTaskPerTime --- com/golshadi/majid/core/mainWorker/QueueModerator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com/golshadi/majid/core/mainWorker/QueueModerator.java b/com/golshadi/majid/core/mainWorker/QueueModerator.java index 37a3377..f136ae6 100644 --- a/com/golshadi/majid/core/mainWorker/QueueModerator.java +++ b/com/golshadi/majid/core/mainWorker/QueueModerator.java @@ -38,11 +38,11 @@ public QueueModerator(TasksDataSource tasksDataSource, ChunksDataSource chunksDa this.moderator.setQueueObserver(this); this.listener = downloadManagerListener; + this.downloadTaskPerTime = downloadPerTime; if (tasks.size() < downloadPerTime) { this.downloadTaskPerTime = tasks.size(); - } else { - this.downloadTaskPerTime = downloadPerTime; } + this.uncompletedTasks = tasks; downloaderList =new HashMap<>(downloadTaskPerTime);