package org.arong.egdownloader.ui.work; import java.awt.Window; import java.net.SocketTimeoutException; import javax.swing.JOptionPane; import javax.swing.SwingWorker; import org.apache.commons.httpclient.ConnectTimeoutException; import org.arong.egdownloader.model.ScriptParser; import org.arong.egdownloader.spider.WebClient; import org.arong.egdownloader.ui.ComponentConst; import org.arong.egdownloader.ui.window.EgDownloaderWindow; import org.arong.egdownloader.ui.window.InitWindow; import org.arong.egdownloader.ui.window.SettingWindow; import org.arong.egdownloader.version.Version; import org.arong.util.FileUtil; /** * 更新脚本线程类 * @author dipoo * @since 2015-03-24 */ public class UpdateScriptWorker extends SwingWorker<Void, Void>{ Window window; InitWindow initWindow; EgDownloaderWindow mainWindow; //window可能会是InitWindow或者EgDownloaderWindow public UpdateScriptWorker(Window window){ this.window = window; } protected Void doInBackground() throws Exception { String dir = "script/"; FileUtil.ifNotExistsThenCreate(dir); if(window instanceof EgDownloaderWindow){ mainWindow = (EgDownloaderWindow)window; SettingWindow settingWindow = (SettingWindow) mainWindow.settingWindow; settingWindow.updateBtn.setText("更新中..."); settingWindow.loadingLabel.setVisible(true); settingWindow.updateBtn.setEnabled(false); }else{ initWindow = (InitWindow) window; initWindow.textLabel.setText(Version.NAME + "-更新脚本"); } try{ //更新createTask.js if(initWindow != null){ initWindow.textLabel.setText(Version.NAME + "-更新createTask.js"); } FileUtil.storeStream(dir, "createTask.js", WebClient.getStreamUseJava(ComponentConst.SCRIPT_CREATE_URL)); //更新collectPicture.js if(initWindow != null){ initWindow.textLabel.setText(Version.NAME + "-更新collectPicture.js"); } FileUtil.storeStream(dir, "collectPicture.js", WebClient.getStreamUseJava(ComponentConst.SCRIPT_COLLECT_URL)); //更新download.js if(initWindow != null){ initWindow.textLabel.setText(Version.NAME + "-更新download.js"); } FileUtil.storeStream(dir, "download.js", WebClient.getStreamUseJava(ComponentConst.SCRIPT_DOWNLOAD_URL)); //更新search.js if(initWindow != null){ initWindow.textLabel.setText(Version.NAME + "-更新search.js"); } FileUtil.storeStream(dir, "search.js", WebClient.getStreamUseJava(ComponentConst.SCRIPT_SEARCH_URL)); //更新脚本解析器 ScriptParser.clearFiles(); //保存版本号 FileUtil.storeStr2file(ComponentConst.remoteScriptVersion, "script/", "version"); ComponentConst.localScriptVersion = ComponentConst.remoteScriptVersion; ComponentConst.scriptChange = false; if(initWindow != null){ //开启主界面 initWindow.startMain(); }else{ JOptionPane.showMessageDialog(mainWindow.settingWindow, "同步完成"); } }catch (ConnectTimeoutException e) { JOptionPane.showMessageDialog(null, "更新脚本出错,建议手动更新"); if(initWindow != null){ initWindow.startMain(); } }catch (SocketTimeoutException e) { JOptionPane.showMessageDialog(null, "更新脚本出错,建议手动更新"); if(initWindow != null){ initWindow.startMain(); } }catch (Exception e) { JOptionPane.showMessageDialog(null, "更新脚本出错,建议手动更新"); if(initWindow != null){ initWindow.startMain(); } }finally{ if(mainWindow != null){ SettingWindow settingWindow = (SettingWindow) mainWindow.settingWindow; settingWindow.updateBtn.setEnabled(true); settingWindow.loadingLabel.setVisible(false); settingWindow.updateBtn.setText("同步脚本"); mainWindow.setting.setUpdateScriptWorker(new UpdateScriptWorker(mainWindow)); } } return null; } }