X-Git-Url: http://git.sourceforge.jp/view?p=coroid%2Finqubus.git;a=blobdiff_plain;f=frontend%2Fsrc%2Fyukihane%2Finqubus%2Fmanager%2FTaskManage.java;h=c517e0532476abcb966c637368d2ebdde0eeb66a;hp=ab37bbee1b2569fa409508a3525e103c9a84d747;hb=6b7d81ed428467add8abb96688b2148c3924c8ea;hpb=f5c8a7f3df32a41eed8caf6276dc55db4e3807ae 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, ""); }