OSDN Git Service

ダウンロード後変換処理に進む
[coroid/inqubus.git] / frontend / src / yukihane / inqubus / manager / TaskManage.java
index ab37bbe..c517e05 100644 (file)
@@ -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<DownloadResult> 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<ConvertResult> 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<T, V extends PercentageReportable & MessageReportable> implements WorkerListener<T, V> {
@@ -105,6 +130,10 @@ public class TaskManage {
             this.rowId = rowId;
         }
 
+        protected int getRowId() {
+            return rowId;
+        }
+
         private void notify(TaskStatus status) {
             notify(status, 0.0, "");
         }