2016-12-01 18:24:58 +01:00
/ * *
* 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 ;
2017-03-05 18:29:24 +01:00
public class updater extends Thread {
2016-12-01 18:24:58 +01:00
2017-03-05 18:29:24 +01:00
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 ) {
2016-12-01 18:24:58 +01:00
mainWindowController = m ;
2017-03-05 18:29:24 +01:00
this . buildURL = buildURL ;
this . downloadLink = downloadLink ;
this . aktBuildNumber = aktBuildNumber ;
this . buildNumber = buildNumber ;
2016-12-01 18:24:58 +01:00
}
2017-03-05 18:29:24 +01:00
public void run ( ) {
2016-12-01 18:24:58 +01:00
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 ) {
2017-03-05 18:29:24 +01:00
// mainWindowController.updateBtn.setText(mainWindowController.bundle.getString("updateBtnNotavail"));
2016-12-01 18:24:58 +01:00
System . out . println ( " no update available " ) ;
} else {
2017-03-05 18:29:24 +01:00
// mainWindowController.updateBtn.setText(mainWindowController.bundle.getString("updateBtnavail"));
2016-12-01 18:24:58 +01:00
System . out . println ( " update available " ) ;
2017-03-05 18:29:24 +01:00
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 ) ;
}
2016-12-01 18:24:58 +01:00
}
}
}