From 6b7d81ed428467add8abb96688b2148c3924c8ea Mon Sep 17 00:00:00 2001 From: yukihane Date: Mon, 29 Aug 2011 22:25:16 +0900 Subject: [PATCH] =?utf8?q?=E3=83=80=E3=82=A6=E3=83=B3=E3=83=AD=E3=83=BC?= =?utf8?q?=E3=83=89=E5=BE=8C=E5=A4=89=E6=8F=9B=E5=87=A6=E7=90=86=E3=81=AB?= =?utf8?q?=E9=80=B2=E3=82=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../src/saccubus/worker/impl/convert/Convert.java | 1 + frontend/src/yukihane/inqubus/gui/MainFrame.java | 3 ++- .../src/yukihane/inqubus/manager/TaskManage.java | 31 +++++++++++++++++++++- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/frontend/src/saccubus/worker/impl/convert/Convert.java b/frontend/src/saccubus/worker/impl/convert/Convert.java index 3aca88f..d0a964d 100644 --- a/frontend/src/saccubus/worker/impl/convert/Convert.java +++ b/frontend/src/saccubus/worker/impl/convert/Convert.java @@ -58,6 +58,7 @@ public class Convert extends Worker { this.profile = profile; this.videoFile = video; this.commentFile = comment; + logger.log(Level.INFO, "convert video:{0}, comment:{1}", new Object[]{videoFile, commentFile}); } @Override diff --git a/frontend/src/yukihane/inqubus/gui/MainFrame.java b/frontend/src/yukihane/inqubus/gui/MainFrame.java index 898a4e2..d1c78e1 100644 --- a/frontend/src/yukihane/inqubus/gui/MainFrame.java +++ b/frontend/src/yukihane/inqubus/gui/MainFrame.java @@ -353,7 +353,8 @@ public class MainFrame extends JFrame { final Config p = Config.INSTANCE; // TODO コンフィグからスレッド数 - taskManager = new TaskManage(1, 1, new GuiTaskManageListener()); + // TODO downloadの連続処理時待ち時間設定も必要... + taskManager = new TaskManage(1, 2, new GuiTaskManageListener()); } private class GuiTaskManageListener implements TaskManageListener { diff --git a/frontend/src/yukihane/inqubus/manager/TaskManage.java b/frontend/src/yukihane/inqubus/manager/TaskManage.java index ab37bbe..c517e05 100644 --- a/frontend/src/yukihane/inqubus/manager/TaskManage.java +++ b/frontend/src/yukihane/inqubus/manager/TaskManage.java @@ -1,5 +1,6 @@ package yukihane.inqubus.manager; +import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; @@ -76,7 +77,23 @@ public class TaskManage { @Override public void done(DownloadResult result) { super.done(result); - // TODO 変換が必要なら変換キューに入れる + synchronized (TaskManage.this) { + final ManageTarget mt = downloadTargets.remove(Integer.valueOf(getRowId())); + final RequestProcess request = mt.getRequest(); + if (request.getConvertProfile().isConvert()) { + final DownloadProfile dp = request.getDownloadProfile(); + final File video = (dp.getVideoProfile().isDownload()) ? result.getDownloadVideo() : dp. + getVideoProfile().getLocalFile(); + final File comment = (dp.getCommentProfile().isDownload()) ? result.getDownloadComment() : dp. + getCommentProfile().getLocalFile(); + final ConvertProfile cp = request.getConvertProfile(); + final Convert task = new Convert(cp, video, comment, new ConvertListener(getRowId())); + final Future future = convertExecutorService.submit(task); + convertTargets.put(request.getRowId(), new ManageTarget<>(request, future)); + } + // TODO 変換が必要なら変換キューに入れる + } + } @Override @@ -95,6 +112,14 @@ public class TaskManage { protected TaskKind getKind() { return TaskKind.CONVERT; } + + @Override + public void done(ConvertResult result) { + super.done(result); + synchronized (TaskManage.this) { + convertTargets.remove(getRowId()); + } + } } abstract class TaskManageInnerListener implements WorkerListener { @@ -105,6 +130,10 @@ public class TaskManage { this.rowId = rowId; } + protected int getRowId() { + return rowId; + } + private void notify(TaskStatus status) { notify(status, 0.0, ""); } -- 2.11.0