OSDN Git Service

ダウンロード後変換処理に進む
authoryukihane <yukihane.feather@gmail.com>
Mon, 29 Aug 2011 13:25:16 +0000 (22:25 +0900)
committeryukihane <yukihane.feather@gmail.com>
Mon, 29 Aug 2011 13:25:16 +0000 (22:25 +0900)
frontend/src/saccubus/worker/impl/convert/Convert.java
frontend/src/yukihane/inqubus/gui/MainFrame.java
frontend/src/yukihane/inqubus/manager/TaskManage.java

index 3aca88f..d0a964d 100644 (file)
@@ -58,6 +58,7 @@ public class Convert extends Worker<ConvertResult, ConvertProgress> {
         this.profile = profile;
         this.videoFile = video;
         this.commentFile = comment;
+        logger.log(Level.INFO, "convert video:{0}, comment:{1}", new Object[]{videoFile, commentFile});
     }
 
     @Override
index 898a4e2..d1c78e1 100644 (file)
@@ -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 {
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, "");
         }