Package me.aurous.updater

Source Code of me.aurous.updater.GlobalUtils

package me.aurous.updater;

import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

import javax.swing.JFrame;

import org.apache.commons.io.IOUtils;

public class GlobalUtils {

  /**
   * Center a frame on the main display
   *
   * @param frame
   *            The frame to center
   */
  public void centerFrameOnMainDisplay(final JFrame frame) {
    final GraphicsEnvironment ge = GraphicsEnvironment
        .getLocalGraphicsEnvironment();
    final GraphicsDevice[] screens = ge.getScreenDevices();
    if (screens.length < 1) {
      return; // Silently fail.
    }
    final Rectangle screenBounds = screens[0].getDefaultConfiguration()
        .getBounds();
    final int x = (int) ((screenBounds.getWidth() - frame.getWidth()) / 2);
    final int y = (int) ((screenBounds.getHeight() - frame.getHeight()) / 2);
    frame.setLocation(x, y);
  }

  public boolean checkForAppUpdates() {
    try {
      final String localVersion = this.readFile("appversion.txt",
          StandardCharsets.UTF_8);
      final String remoteVersion = this.readRemoteFile(localVersion,
          "http://codeusa.net/apps/poptart/appversion.txt");
      if (localVersion.equals(remoteVersion)) {
        return false;
      } else {
        return true;
      }

    } catch (final IOException e) {
      return false;
    }
  }

  public boolean checkForScriptUpdates() {
    try {
      final String localVersion = this.readFile("decryptversion.txt",
          StandardCharsets.UTF_8);
      final String remoteVersion = this.readRemoteFile(localVersion,
          "http://codeusa.net/apps/poptart/decryptversion.txt");
      if (localVersion.equals(remoteVersion)) {

        return false;
      } else {
        return true;
      }
    } catch (final IOException e) {
      return false;
    }
  }

  private String readFile(final String path, final Charset encoding)
      throws IOException {
    final byte[] encoded = Files.readAllBytes(Paths.get(path));
    return new String(encoded, encoding);
  }

  private String readRemoteFile(final String local, final String path) {
    try {
      // Create a URL for the desired page
      final URL url = new URL(path);

      // Read all the text returned by the server
      final BufferedReader in = new BufferedReader(new InputStreamReader(
          url.openStream()));
      final String str = in.readLine();
      in.close();
      return str;
    } catch (final MalformedURLException e) {

      return local;
    } catch (final IOException e) {
      System.out.println("Dada2");
      return local;
    }
  }

  public void runAurous() {
    try {
      if (Utils.getPlatform() == Utils.OperatingSystem.WINDOWS) {
        Runtime.getRuntime().exec("AurousClient.exe").waitFor();
        System.exit(0);
      } else {
        final Process ps = Runtime.getRuntime().exec(
            new String[] { "java", "-jar", "Aurous.jar" });
        ps.waitFor();
        final java.io.InputStream is = ps.getInputStream();
        final byte b[] = new byte[is.available()];
        is.read(b, 0, b.length);
        System.out.println(new String(b));
        System.exit(0);
      }
    } catch (IOException | InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }

  private void setNewVersion(final String path, final String remote) {

    try {
      final String remoteVersion = this.readRemoteFile("1", remote);
      final File appVersion = new File(path);
      final FileWriter appWriter = new FileWriter(appVersion, false); // true
      // to
      // append
      // false to overwrite.
      appWriter.write(remoteVersion);
      appWriter.close();
    } catch (final IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }

  public void unZipApp() {

    try {
      final File f = new File("updates/app.zip");
      if (f.exists() && !f.isDirectory()) { /* do something */
        this.unZipFile("updates/app.zip", "./");
        f.delete();
        this.setNewVersion("appversion.txt",
            "http://codeusa.net/apps/poptart/appversion.txt");
      } else {

      }
    } catch (final Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }

  private void unZipFile(final String zipFilePath,
      final String destinationPath) throws IOException {
    ZipInputStream zis = null;
    try {

      zis = new ZipInputStream(new FileInputStream(zipFilePath));
      ZipEntry entry;

      while ((entry = zis.getNextEntry()) != null) {

        // Create a file on HDD in the destinationPath directory
        // destinationPath is a "root" folder, where you want to extract
        // your ZIP file
        final File entryFile = new File(destinationPath,
            entry.getName());
        if (entry.isDirectory()) {

          if (entryFile.exists()) {
            System.out.println(String.format(
                "Directory {0} already exists!", entryFile));
          } else {
            entryFile.mkdirs();
          }

        } else {

          // Make sure all folders exists (they should, but the safer,
          // the better ;-))
          if ((entryFile.getParentFile() != null)
              && !entryFile.getParentFile().exists()) {
            entryFile.getParentFile().mkdirs();
          }

          // Create file on disk...
          if (!entryFile.exists()) {
            entryFile.createNewFile();
          }

          // and rewrite data from stream
          OutputStream os = null;
          try {
            os = new FileOutputStream(entryFile);

            IOUtils.copy(zis, os);
          } finally {
            IOUtils.closeQuietly(os);
          }
        }
      }
    } finally {
      IOUtils.closeQuietly(zis);
    }
  }

  public void unZipScripts() {
    try {
      final File f = new File("./data/scripts/decrypt.zip");
      if (f.exists() && !f.isDirectory()) { /* do something */

        this.unZipFile("./data/scripts/decrypt.zip", "./data/scripts/");
        f.delete();
        this.setNewVersion("decryptversion.txt",
            "http://codeusa.net/apps/poptart/decryptversion.txt");
      } else {

      }
    } catch (final IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}
TOP

Related Classes of me.aurous.updater.GlobalUtils

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.