1 package edu.jiangxin.apktoolbox.swing.extend.plugin;
2
3 import edu.jiangxin.apktoolbox.swing.extend.plugin.runnable.DownloadRunnable;
4 import edu.jiangxin.apktoolbox.swing.extend.plugin.runnable.UnzipRunnable;
5 import edu.jiangxin.apktoolbox.utils.Utils;
6 import org.apache.logging.log4j.LogManager;
7 import org.apache.logging.log4j.Logger;
8
9 import java.io.File;
10 import java.net.MalformedURLException;
11 import java.net.URL;
12 import java.util.concurrent.ExecutorService;
13 import java.util.concurrent.Executors;
14
15 public class PluginUtils {
16 private static final Logger logger = LogManager.getLogger(PluginUtils.class.getSimpleName());
17
18 private static final String URL_PREFIX = "http://124.222.145.48/download/ApkToolBoxGUI/";
19
20 private static final String DOWNLOAD_VERSION = "v1.0.6";
21
22 private PluginUtils() {
23
24 }
25
26 public static void checkPlugin(String pluginFilename, boolean isPluginNeedUnzip, IPreparePluginCallback callBack) {
27 File pluginFile = new File(Utils.getPluginDirPath(), pluginFilename);
28 File pluginDir = new File(Utils.getPluginDirPath(), pluginFilename.substring(0, pluginFilename.lastIndexOf(".")));
29 if (pluginFile.exists() && !isPluginNeedUnzip) {
30 callBack.onCheckFinished(ChangeMenuPreparePluginController.RESULT_CHECK_SUCCESS);
31 } else if (pluginFile.exists() && pluginDir.exists()) {
32 callBack.onCheckFinished(ChangeMenuPreparePluginController.RESULT_CHECK_SUCCESS);
33 } else if (pluginFile.exists() && !pluginDir.exists()) {
34 callBack.onCheckFinished(ChangeMenuPreparePluginController.RESULT_CHECK_ZIP_EXIST);
35 } else {
36 callBack.onCheckFinished(ChangeMenuPreparePluginController.RESULT_CHECK_ZIP_NOT_EXIST);
37 }
38 }
39
40 public static void downloadPlugin(String pluginFilename, IPreparePluginCallback callBack) {
41 String downloadUrlStr = URL_PREFIX + DOWNLOAD_VERSION + "/" + pluginFilename;
42 URL url;
43 try {
44 url = new URL(downloadUrlStr);
45 } catch (MalformedURLException e) {
46 logger.error("MalformedURLException: {}", e.getMessage());
47 return;
48 }
49 File pluginDir = new File(Utils.getPluginDirPath());
50
51 ExecutorService executorService = Executors.newSingleThreadExecutor();
52 DownloadRunnable downloadRunnable = new DownloadRunnable(url, pluginDir, callBack);
53 executorService.submit(downloadRunnable);
54 }
55
56
57 public static void unzipPlugin(String pluginFilename, boolean isPluginNeedUnzipToSeparateDir, IPreparePluginCallback callback) {
58 File pluginFile = new File(Utils.getPluginDirPath(), pluginFilename);
59
60 ExecutorService executorService = Executors.newSingleThreadExecutor();
61 UnzipRunnable unzipRunnable = new UnzipRunnable(pluginFile, isPluginNeedUnzipToSeparateDir, callback);
62 executorService.submit(unzipRunnable);
63 }
64 }