Package jadx.gui

Source Code of jadx.gui.JadxWrapper

package jadx.gui;

import jadx.api.IJadxArgs;
import jadx.api.JadxDecompiler;
import jadx.api.JavaClass;
import jadx.api.JavaPackage;
import jadx.core.utils.exceptions.DecodeException;
import jadx.core.utils.exceptions.JadxException;

import javax.swing.ProgressMonitor;
import java.io.File;
import java.util.List;
import java.util.concurrent.ThreadPoolExecutor;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class JadxWrapper {
  private static final Logger LOG = LoggerFactory.getLogger(JadxWrapper.class);

  private final JadxDecompiler decompiler;
  private File openFile;

  public JadxWrapper(IJadxArgs jadxArgs) {
    this.decompiler = new JadxDecompiler(jadxArgs);
  }

  public void openFile(File file) {
    this.openFile = file;
    try {
      this.decompiler.loadFile(file);
    } catch (DecodeException e) {
      LOG.error("Error decode file: " + file, e);
    } catch (JadxException e) {
      LOG.error("Error open file: " + file, e);
    }
  }

  public void saveAll(final File dir, final ProgressMonitor progressMonitor) {
    Runnable save = new Runnable() {
      @Override
      public void run() {
        try {
          decompiler.setOutputDir(dir);
          ThreadPoolExecutor ex = (ThreadPoolExecutor) decompiler.getSaveExecutor();
          ex.shutdown();
          while (ex.isTerminating()) {
            long total = ex.getTaskCount();
            long done = ex.getCompletedTaskCount();
            progressMonitor.setProgress((int) (done * 100.0 / (double) total));
            Thread.sleep(500);
          }
          progressMonitor.close();
          LOG.info("done");
        } catch (InterruptedException e) {
          LOG.error("Save interrupted", e);
        }
      }
    };
    new Thread(save).start();
  }

  public List<JavaClass> getClasses() {
    return decompiler.getClasses();
  }

  public List<JavaPackage> getPackages() {
    return decompiler.getPackages();
  }

  public File getOpenFile() {
    return openFile;
  }
}
TOP

Related Classes of jadx.gui.JadxWrapper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.