From a16f67163017499c354a8d5babed8dca0e905551 Mon Sep 17 00:00:00 2001 From: Michal Date: Thu, 23 May 2024 14:59:03 +0200 Subject: [PATCH] Add Main.java --- Main.java | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 Main.java diff --git a/Main.java b/Main.java new file mode 100644 index 0000000..b919db5 --- /dev/null +++ b/Main.java @@ -0,0 +1,154 @@ +package updater; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.file.FileSystem; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; +import javax.imageio.ImageIO; +import javax.swing.SwingUtilities; + +public class Main { + + private static final String windowTitle = "Network Control Update"; + private static final String url = "http://10.10.0.52/radek/test.zip"; + private static final String jarApp = "NetworkControlClient.jar"; + + private static Window okno = new Window(); + + public static void main(String[] args) { + okno.setTitle(windowTitle); + okno.setLocationRelativeTo(null); + okno.setVisible(true); + + try { + okno.setIconImage(ImageIO.read(new File("img/app.png"))); + } catch (IOException ex) { + System.err.println("APP icon exception"); + } + + Thread t = new Thread() { + @Override + public void run() { + super.run(); + // stahovani aktualizacniho souboru + System.out.print("Stahovani souboru ..."); + Window.label.setText("Stahování aktualizace ..."); + download(url); + System.out.println(" hotovo"); + + // rozbaleni souboru + System.out.print("Aktualizace ..."); + Window.label.setText("Aktualizace ..."); + unZipIt("update.zip"); + System.out.println(" hotovo"); + + // spusteni programu po aktualizaci + launch(jarApp); + + // ukonceni programu + System.exit(0); + } + ; + }; + t.run(); + + + } + + private static void download(String urlFile){ + try { + URL url = new URL(urlFile); + HttpURLConnection httpConnection = (HttpURLConnection) (url.openConnection()); + // zjisteni veliksoti souboru + long completeFileSize = httpConnection.getContentLength(); + // nastaveni velikosti progress bar + Window.pb.setMaximum((int) completeFileSize); + // stahovani + BufferedInputStream in = new BufferedInputStream(httpConnection.getInputStream()); + FileOutputStream fos = new FileOutputStream("update.zip"); + BufferedOutputStream bout = new BufferedOutputStream(fos, 1024); + byte[] data = new byte[1024]; + long downloadedFileSize = 0; + int x = 0; + while ((x = in.read(data, 0, 1024)) >= 0) { + downloadedFileSize += x; + // vypocet progressu + final int currentProgress = (int) downloadedFileSize; + // update progress bar + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + Window.pb.setValue(currentProgress); + } + }); + bout.write(data, 0, x); + } + bout.close(); + in.close(); + } catch (Exception ex) { + Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); + } + } + + public static void unZipIt(String zipFile) { + + byte[] buffer = new byte[1024]; + + try { + + //get the zip file content + ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile)); + //get the zipped file list entry + ZipEntry ze = zis.getNextEntry(); + + while (ze != null) { + if (ze.isDirectory()) { + System.out.println("Creating Directory:" + ze.getName()); + FileSystem fileSystem = FileSystems.getDefault(); + Files.createDirectories(fileSystem.getPath(ze.getName())); + } else { + String fileName = ze.getName(); + File newFile = new File(fileName); + + System.out.println("file unzip : " + newFile.getAbsoluteFile()); + + FileOutputStream fos = new FileOutputStream(newFile); + int len; + while ((len = zis.read(buffer)) > 0) { + fos.write(buffer, 0, len); + } + + fos.close(); + + } + ze = zis.getNextEntry(); + } + + zis.closeEntry(); + zis.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + private static void launch(String jar) { + String[] run = {"java", "-jar", jar}; + try { + Runtime.getRuntime().exec(run); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + +}