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