updated to build 104

code clean up
This commit is contained in:
Seil0
2016-12-01 18:24:58 +01:00
parent b5035825a5
commit 9aa36fc622
14 changed files with 243 additions and 259 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -126,7 +126,7 @@ public class Main extends Application {
private String firstStart(){
Alert alert = new Alert(AlertType.CONFIRMATION); //neuer alert mit filechooser
alert.setTitle("Project HomeFlix");
alert.setHeaderText("Es ist kein Stammverzeichniss für Filme angegeben!");
alert.setHeaderText("Es ist kein Stammverzeichniss für Filme angegeben!"); //TODO translate
alert.setContentText("Stammverzeichniss angeben?");
Optional<ButtonType> result = alert.showAndWait();
+39 -201
View File
@@ -23,7 +23,6 @@ package application;
import java.awt.Desktop;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -37,13 +36,9 @@ import java.io.StringWriter;
import java.math.BigInteger;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.util.Locale;
import java.util.Properties;
import java.util.ResourceBundle;
import java.util.Scanner;
import org.apache.commons.lang3.SystemUtils;
@@ -107,8 +102,7 @@ public class MainWindowController {
private TreeTableView<streamUiData> treeTableViewfilm;
@FXML
private TableView<streamUiData> tableViewStreamingdata;
@FXML
private JFXTextArea ta1;
@FXML JFXTextArea ta1;
@FXML
private JFXButton menubtn;
@FXML
@@ -130,7 +124,7 @@ public class MainWindowController {
@FXML
private JFXButton debugBtn;
@FXML
private JFXButton updateBtn;
public JFXButton updateBtn;
@FXML
private JFXButton directoryBtn;
@FXML
@@ -157,8 +151,7 @@ public class MainWindowController {
private Label sizelbl;
@FXML
private Label aulbl;
@FXML
private ImageView image1;
@FXML ImageView image1;
@FXML
@@ -190,23 +183,22 @@ public class MainWindowController {
private boolean settingstrue = false;
private boolean streamingSettingsTrue = false;
private String version = "0.4.0";
private String buildNumber = "103";
private String buildNumber = "104";
private String versionName = "glowing bucket";
private String buildURL = "https://raw.githubusercontent.com/Seil0/Project-HomeFlix/master/updates/buildNumber.txt";
private String downloadLink = "https://raw.githubusercontent.com/Seil0/Project-HomeFlix/master/updates/downloadLink.txt";
private File dir = new File(System.getProperty("user.home") + "/Documents/HomeFlix");
private File file = new File(dir + "/config.xml");
private String updateDataURL;
private String errorUpdateD;
private String errorUpdateV;
String errorUpdateD;
String errorUpdateV;
private String errorPlay;
private String errorOpenStream;
private String errorMode;
@SuppressWarnings("unused")
private String errorLoad;
private String errorSave;
private String noFilmFound;
String noFilmFound;
private String infoText;
private String linuxBugText;
private String vlcNotInstalled;
@@ -218,22 +210,22 @@ public class MainWindowController {
private String datPath;
private String autoUpdate;
private String mode;
private String title;
private String year;
private String rating;
private String publishedOn;
private String duration;
private String genre;
private String director;
private String writer;
private String actors;
private String plot;
private String language;
private String country;
private String awards;
private String metascore;
private String imdbRating;
private String type;
String title;
String year;
String rating;
String publishedOn;
String duration;
String genre;
String director;
String writer;
String actors;
String plot;
String language;
String country;
String awards;
String metascore;
String imdbRating;
String type;
private double size;
private int last;
private int selected;
@@ -241,7 +233,7 @@ public class MainWindowController {
private int local;
private File selectedFolder;
private File selectedStreamingFolder;
private ResourceBundle bundle;
ResourceBundle bundle;
private ObservableList<streamUiData> newDaten = FXCollections.observableArrayList();
private ObservableList<streamUiData> filterData = FXCollections.observableArrayList();
@@ -259,6 +251,9 @@ public class MainWindowController {
private DirectoryChooser directoryChooser = new DirectoryChooser();
Properties props = new Properties();
private updater Updater;
private apiQuery ApiQuery;
//wenn menubtn clicked
/**
* TODO change value of Text-color change
@@ -466,7 +461,7 @@ public class MainWindowController {
@FXML
private void updateBtnAction(){
update();
Updater.update(buildURL, downloadLink, aktBuildNumber, buildNumber);
}
@FXML
@@ -511,6 +506,9 @@ public class MainWindowController {
initTabel();
initActions();
Updater = new updater(this);
ApiQuery = new apiQuery(this);
System.out.println("Mode: "+mode);
debugBtn.setDisable(true); //debugging btn for tests
@@ -526,7 +524,7 @@ public class MainWindowController {
if(autoUpdate.equals("1")){
autoupdateBtn.setSelected(true);
update();
Updater.update(buildURL, downloadLink, aktBuildNumber, buildNumber);
}else{
autoupdateBtn.setSelected(false);
}
@@ -587,9 +585,8 @@ public class MainWindowController {
Name = columnTitel.getCellData(selected); // holt Namen des Aktuelle Items aus der ColumnName
datPath = columnStreamUrl.getCellData(selected); // holt den aktuellen Datei Pfad aus der ColumnDatName
ta1.setText(""); // löscht Text in ta1
apiAbfrage(Name); // startet die api abfrage
ta1.positionCaret(0); // setzt die startposition des Cursors in
// ta1
ApiQuery.startQuery(Name); // startet die api abfrage
ta1.positionCaret(0); // setzt die startposition des Cursors in ta1
}
});
@@ -644,52 +641,8 @@ public class MainWindowController {
});
}
//prüft auf Update und fürht es gegebenenfalls aus
private void update(){
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) {
showErrorMsg(errorUpdateV, e1);
}
System.out.println("Build: "+buildNumber+", Update: "+aktBuildNumber);
//vergleicht die Versionsnummern, bei aktversion > version wird ein Update durchgrf�hrt
int iversion = Integer.parseInt(buildNumber.replace(".", ""));
int iaktVersion = Integer.parseInt(aktBuildNumber.replace(".", ""));
if(iversion >= iaktVersion){
updateBtn.setText(bundle.getString("updateBtnNotavail"));
System.out.println("no update available");
}else{
updateBtn.setText(bundle.getString("updateBtnavail"));
System.out.println("update available");
try {
URL website;
URL downloadURL = new URL(downloadLink);
BufferedReader in = new BufferedReader(new InputStreamReader(downloadURL.openStream()));
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
showErrorMsg(errorUpdateD, e);
}
}
}
//lädt die Daten im angegeben Ordner in newDaten
public void loadData(){
void loadData(){
//load local Data
if(getPath().equals("")||getPath().equals(null)){
System.out.println("Kein Pfad angegeben"); //falls der Pfad null oder "" ist
@@ -737,7 +690,7 @@ public class MainWindowController {
}
}
public void addDataUI(){
void addDataUI(){
if(mode.equals("local")){
for(int i = 0; i < newDaten.size(); i++){
root.getChildren().add(new TreeItem<streamUiData>(newDaten.get(i))); //fügt daten zur Rootnode hinzu
@@ -765,7 +718,7 @@ public class MainWindowController {
}
}
public void loadStreamingSettings(){
void loadStreamingSettings(){
if(getStreamingPath().equals("")||getStreamingPath().equals(null)){
System.out.println("Kein Pfad angegeben"); //falls der Pfad null oder "" ist
}else{
@@ -791,7 +744,7 @@ public class MainWindowController {
}
//setzt die Farben für die UI-Elemente
public void applyColor(){
void applyColor(){
String style = "-fx-background-color: #"+getColor()+";";
String btnStyleBlack = "-fx-button-type: RAISED; -fx-background-color: #"+getColor()+"; -fx-text-fill: BLACK;";
String btnStyleWhite = "-fx-button-type: RAISED; -fx-background-color: #"+getColor()+"; -fx-text-fill: WHITE;";
@@ -937,7 +890,7 @@ public class MainWindowController {
type = bundle.getString("type");
}
private void showErrorMsg(String msg, IOException exception){
public void showErrorMsg(String msg, IOException exception){
Alert alert = new Alert(AlertType.ERROR);
alert.setTitle("Error");
alert.setHeaderText("");
@@ -1072,119 +1025,4 @@ public class MainWindowController {
public String getMode(){
return mode;
}
//API-Query
@SuppressWarnings("deprecation")
private void apiAbfrage(String input){
URL url = null;
Scanner sc = null;
String apiurl = "https://www.omdbapi.com/?"; //API URL
String moviename = null;
String dataurl = null;
String retdata = null;
InputStream is = null;
DataInputStream dis = null;
try {
//get film title
sc = new Scanner(System.in);
moviename = input;
// in case of no or "" Film title
if (moviename == null || moviename.equals("")) {
System.out.println("No movie found");
}
//remove unwanted blank
moviename = moviename.trim();
//replace blank with + for api-query
moviename = moviename.replace(" ", "+");
//URL wird zusammengestellt abfragetypen: http,json,xml (muss json sein um späteres trennen zu ermöglichen)
dataurl = apiurl + "t=" + moviename + "&plot=full&r=json";
url = new URL(dataurl);
is = url.openStream();
dis = new DataInputStream(is);
// lesen der Daten aus dem Antwort Stream
while ((retdata = dis.readLine()) != null) {
//retdata in json object parsen und anschließend das json Objekt "zerschneiden"
System.out.println(retdata);
JsonObject object = Json.parse(retdata).asObject();
String titelV = object.getString("Title", "");
String yearV = object.getString("Year", "");
String ratedV = object.getString("Rated", "");
String releasedV = object.getString("Released", "");
String runtimeV = object.getString("Runtime", "");
String genreV = object.getString("Genre", "");
String directorV = object.getString("Director", "");
String writerV = object.getString("Writer", "");
String actorsV = object.getString("Actors", "");
String plotV = object.getString("Plot", "");
String languageV = object.getString("Language", "");
String countryV = object.getString("Country", "");
String awardsV = object.getString("Awards", "");
String posterURL = object.getString("Poster", "");
String metascoreV = object.getString("Metascore", "");
String imdbRatingV = object.getString("imdbRating", "");
@SuppressWarnings("unused")
String imdbVotesV = object.getString("imdbVotes", "");
@SuppressWarnings("unused")
String imdbIDV = object.getString("imdbID", "");
String typeV = object.getString("Type", "");
String response = object.getString("Response", "");
if(response.equals("False")){
ta1.appendText(noFilmFound);
Image im2 = new Image("recources/icons/close_black_2048x2048.png");
image1.setImage(im2);
}else{
//ausgabe des Textes in ta1 in jeweils neuer Zeile //TODOformatting
ta1.appendText(title+": "+titelV+"\n");
ta1.appendText(year+": "+ yearV+"\n");
ta1.appendText(rating+": "+ratedV+"\n");
ta1.appendText(publishedOn+": "+releasedV+"\n");
ta1.appendText(duration+": "+runtimeV+"\n");
ta1.appendText(genre+": "+genreV+"\n");
ta1.appendText(director+": "+directorV+"\n");
ta1.appendText(writer+": "+writerV+"\n");
ta1.appendText(actors+": "+actorsV+"\n");
ta1.appendText(plot+": "+plotV+"\n");
ta1.appendText(language+": "+languageV+"\n");
ta1.appendText(country+": "+countryV+"\n");
ta1.appendText(awards+": "+awardsV+"\n");
ta1.appendText(metascore+": "+metascoreV+"\n");
ta1.appendText(imdbRating+": "+imdbRatingV+"\n");
ta1.appendText(type+": "+typeV+"\n");
Image im1 = new Image(posterURL);
image1.setImage(im1);
}
}
} catch (Exception e) {
System.out.println(e);
} finally {
//closes datainputStream, InputStream,Scanner if not already done
try {
if (dis != null) {
dis.close();
}
if (is != null) {
is.close();
}
if (sc != null) {
sc.close();
}
} catch (Exception e2) {
;
}
}
}
}
+140
View File
@@ -0,0 +1,140 @@
/**
* apiQuery for Project HomeFlix
* sends a query to the omdb api
*
* TODO build in a caching function
*/
package application;
import java.io.DataInputStream;
import java.io.InputStream;
import java.net.URL;
import java.util.Scanner;
import com.eclipsesource.json.Json;
import com.eclipsesource.json.JsonObject;
import javafx.scene.image.Image;
public class apiQuery {
public apiQuery(MainWindowController m){
mainWindowController=m;
}
private MainWindowController mainWindowController;
@SuppressWarnings("deprecation")
void startQuery(String input){
URL url = null;
Scanner sc = null;
String apiurl = "https://www.omdbapi.com/?"; //API URL
String moviename = null;
String dataurl = null;
String retdata = null;
InputStream is = null;
DataInputStream dis = null;
try {
//get film title
sc = new Scanner(System.in);
moviename = input;
// in case of no or "" Film title
if (moviename == null || moviename.equals("")) {
System.out.println("No movie found");
}
//remove unwanted blank
moviename = moviename.trim();
//replace blank with + for api-query
moviename = moviename.replace(" ", "+");
//URL wird zusammengestellt abfragetypen: http,json,xml (muss json sein um späteres trennen zu ermöglichen)
dataurl = apiurl + "t=" + moviename + "&plot=full&r=json";
url = new URL(dataurl);
is = url.openStream();
dis = new DataInputStream(is);
// lesen der Daten aus dem Antwort Stream
while ((retdata = dis.readLine()) != null) {
//retdata in json object parsen und anschließend das json Objekt "zerschneiden"
System.out.println(retdata);
JsonObject object = Json.parse(retdata).asObject();
String titelV = object.getString("Title", "");
String yearV = object.getString("Year", "");
String ratedV = object.getString("Rated", "");
String releasedV = object.getString("Released", "");
String runtimeV = object.getString("Runtime", "");
String genreV = object.getString("Genre", "");
String directorV = object.getString("Director", "");
String writerV = object.getString("Writer", "");
String actorsV = object.getString("Actors", "");
String plotV = object.getString("Plot", "");
String languageV = object.getString("Language", "");
String countryV = object.getString("Country", "");
String awardsV = object.getString("Awards", "");
String posterURL = object.getString("Poster", "");
String metascoreV = object.getString("Metascore", "");
String imdbRatingV = object.getString("imdbRating", "");
@SuppressWarnings("unused")
String imdbVotesV = object.getString("imdbVotes", "");
@SuppressWarnings("unused")
String imdbIDV = object.getString("imdbID", "");
String typeV = object.getString("Type", "");
String response = object.getString("Response", "");
if(response.equals("False")){
mainWindowController.ta1.appendText(mainWindowController.noFilmFound);
Image im2 = new Image("recources/icons/close_black_2048x2048.png");
mainWindowController.image1.setImage(im2);
}else{
//ausgabe des Textes in ta1 in jeweils neuer Zeile //TODOformatting
mainWindowController.ta1.appendText(mainWindowController.title+": "+titelV+"\n");
mainWindowController.ta1.appendText(mainWindowController.year+": "+ yearV+"\n");
mainWindowController.ta1.appendText(mainWindowController.rating+": "+ratedV+"\n");
mainWindowController.ta1.appendText(mainWindowController.publishedOn+": "+releasedV+"\n");
mainWindowController.ta1.appendText(mainWindowController.duration+": "+runtimeV+"\n");
mainWindowController.ta1.appendText(mainWindowController.genre+": "+genreV+"\n");
mainWindowController.ta1.appendText(mainWindowController.director+": "+directorV+"\n");
mainWindowController.ta1.appendText(mainWindowController.writer+": "+writerV+"\n");
mainWindowController.ta1.appendText(mainWindowController.actors+": "+actorsV+"\n");
mainWindowController.ta1.appendText(mainWindowController.plot+": "+plotV+"\n");
mainWindowController.ta1.appendText(mainWindowController.language+": "+languageV+"\n");
mainWindowController.ta1.appendText(mainWindowController.country+": "+countryV+"\n");
mainWindowController.ta1.appendText(mainWindowController.awards+": "+awardsV+"\n");
mainWindowController.ta1.appendText(mainWindowController.metascore+": "+metascoreV+"\n");
mainWindowController.ta1.appendText(mainWindowController.imdbRating+": "+imdbRatingV+"\n");
mainWindowController.ta1.appendText(mainWindowController.type+": "+typeV+"\n");
Image im1 = new Image(posterURL);
mainWindowController.image1.setImage(im1);
}
}
} catch (Exception e) {
System.out.println(e);
} finally {
//closes datainputStream, InputStream,Scanner if not already done
try {
if (dis != null) {
dis.close();
}
if (is != null) {
is.close();
}
if (sc != null) {
sc.close();
}
} catch (Exception e2) {
;
}
}
}
}
-57
View File
@@ -1,57 +0,0 @@
package application;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
public class uiData {
private DoubleProperty filmBewertung = new SimpleDoubleProperty();
private StringProperty filmName = new SimpleStringProperty();
private StringProperty dataName = new SimpleStringProperty();
//uiData ist der Typ der Daten in der TreeTabelView
public uiData (final Double filmBewertung, final String filmName, final String dataName) {
this.filmBewertung.set(filmBewertung);
this.filmName.set(filmName);
this.dataName.set(dataName);
}
public Double getFilmBewertung() {
return filmBewertung.get();
}
public String getFilmName() {
return filmName.get();
}
public String getDataName() {
return dataName.get();
}
public void setFilmBewertung(Double filmBewertung) {
this.filmBewertung.set(filmBewertung);
}
public void setFilmName(String filmName) {
this.filmName.set(filmName);
}
public void setDataName(StringProperty dataName) {
this.dataName = dataName;
}
public DoubleProperty FilmBewertungProperty(){
return filmBewertung;
}
public StringProperty FilmNameProperty(){
return filmName;
}
public StringProperty DataNameProperty(){
return dataName;
}
}
+63
View File
@@ -0,0 +1,63 @@
/**
* 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 {
public updater(MainWindowController m){
mainWindowController=m;
}
private MainWindowController mainWindowController;
void update(String buildURL,String downloadLink,String aktBuildNumber,String buildNumber){
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 durchgrfhrt
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);
}
}
}
}
Binary file not shown.