package org.arong.egdownloader.ui.work; import java.io.File; import java.util.ArrayList; import java.util.List; import javax.swing.JFrame; import javax.swing.SwingWorker; import org.arong.egdownloader.model.Picture; import org.arong.egdownloader.model.Task; import org.arong.egdownloader.ui.ComponentConst; import org.arong.egdownloader.ui.table.TaskingTable; import org.arong.egdownloader.ui.window.DeletingWindow; import org.arong.egdownloader.ui.window.EgDownloaderWindow; import org.arong.util.FileUtil; /** * 删除任务线程类 * @author 阿荣 * @since 2014-09-19 */ public class DeleteWorker extends SwingWorker<Void, Void>{ private JFrame window; private TaskingTable table; private DeletingWindow w; private int[] rows; private boolean deleteFile; public DeleteWorker(JFrame mainWindow, TaskingTable table, DeletingWindow w, int[] rows, boolean deleteFile){ this.window = mainWindow; this.table = table; this.rows = rows; this.w = w; this.deleteFile = deleteFile; } protected Void doInBackground() throws Exception { try{ EgDownloaderWindow mainWindow = (EgDownloaderWindow)window; Task task; List<Picture> pics = new ArrayList<Picture>(); List<Task> tasks = new ArrayList<Task>(); for(int i = 0; i < rows.length; i ++){ if(table.getTasks().size() >= (rows[i])){ task = table.getTasks().get(rows[i]); tasks.add(task); w.setData((i + 1) + "/" + rows.length); w.setInfo("收集:" + task.getName()); if(task.getPictures() != null && task.getPictures().size() > 0){ pics.addAll(task.getPictures()); } } } //操作数据库 if(tasks.size() > 0){ if(pics.size() > 0){ w.setInfo("正在删除任务图片"); mainWindow.pictureDbTemplate.delete(pics);//删除图片信息 } //删除文件 if(deleteFile){ File file = null; for(int i = 0; i < tasks.size(); i ++){ file = new File(ComponentConst.getSavePathPreffix() + tasks.get(i).getSaveDir()); if(file.exists()){ FileUtil.deleteFile(file); } } } w.setInfo("正在删除任务"); mainWindow.taskDbTemplate.delete(tasks);//删除任务 //更新内存 table.getTasks().removeAll(tasks); } table.clearSelection();//使之不选中任何行 if(table.getTasks().size() == 0){ mainWindow.tablePane.setVisible(false);//将任务panel隐藏 mainWindow.emptyPanel.setVisible(true);//将空任务label显示 } w.dispose(); }catch(Exception e){ } return null; } }