Project-HomeFlix/src/application/updater.java

72 lines
2.7 KiB
Java
Raw Blame History

/**
* updater for Project HomeFlix
* checks for Updates and downloads it in case there is one
*/
package application;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
public class updater extends Thread{
private MainWindowController mainWindowController;
private String buildURL;
private String downloadLink;
private String aktBuildNumber;
private String buildNumber;
public updater(MainWindowController m, String buildURL,String downloadLink,String aktBuildNumber,String buildNumber){
mainWindowController=m;
this.buildURL=buildURL;
this.downloadLink=downloadLink;
this.aktBuildNumber=aktBuildNumber;
this.buildNumber=buildNumber;
}
public void run(){
System.out.println("check for updates ...");
try {
URL url = new URL(buildURL); //URL der Datei mit aktueller Versionsnummer
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
aktBuildNumber = in.readLine(); //schreibt inputstream in String
in.close();
} catch (IOException e1) {
mainWindowController.showErrorMsg(mainWindowController.errorUpdateV, e1);
}
System.out.println("Build: "+buildNumber+", Update: "+aktBuildNumber);
//vergleicht die Versionsnummern, bei aktversion > version wird ein Update durchgrf<72>hrt
int iversion = Integer.parseInt(buildNumber);
int iaktVersion = Integer.parseInt(aktBuildNumber.replace(".", ""));
if(iversion >= iaktVersion){
// mainWindowController.updateBtn.setText(mainWindowController.bundle.getString("updateBtnNotavail"));
System.out.println("no update available");
}else{
// mainWindowController.updateBtn.setText(mainWindowController.bundle.getString("updateBtnavail"));
System.out.println("update available");
try {
URL website;
URL downloadURL = new URL(downloadLink);
BufferedReader in = new BufferedReader(new InputStreamReader(downloadURL.openStream()));
String updateDataURL = in.readLine();
website = new URL(updateDataURL); //Update URL
ReadableByteChannel rbc = Channels.newChannel(website.openStream()); //open new Stream/Channel
FileOutputStream fos = new FileOutputStream("ProjectHomeFlix.jar"); //nea fileoutputstram for ProjectHomeFLix.jar
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); //gets file from 0 to max size
fos.close(); //close fos (extrem wichtig!)
Runtime.getRuntime().exec("java -jar ProjectHomeFlix.jar"); //start again
System.exit(0); //finishes itself
} catch (IOException e) {
//in case there is an error
mainWindowController.showErrorMsg(mainWindowController.errorUpdateD, e);
}
}
}
}