use try with resourcess
continuous-integration/drone/push Build is passing Details

* rename package kellerkinder.HomeFlix to org.mosad.homeflix
This commit is contained in:
Jannik 2020-04-22 18:29:39 +02:00
parent 0d57127d64
commit 5e0fd8063d
Signed by: Seil0
GPG Key ID: E8459F3723C52C24
25 changed files with 386 additions and 340 deletions

View File

@ -3,7 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.kellerkinder</groupId> <groupId>org.mosad</groupId>
<artifactId>Project-HomeFlix</artifactId> <artifactId>Project-HomeFlix</artifactId>
<version>0.8.0</version> <version>0.8.0</version>
<packaging>jar</packaging> <packaging>jar</packaging>
@ -113,7 +113,7 @@
</execution> </execution>
</executions> </executions>
<configuration> <configuration>
<mainClass>kellerkinder.HomeFlix.application.Main</mainClass> <mainClass>org.mosad.homeflix.application.Main</mainClass>
</configuration> </configuration>
</plugin> </plugin>
@ -127,7 +127,7 @@
<transformers> <transformers>
<transformer <transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>kellerkinder.HomeFlix.application.JavaFX11Main</mainClass> <mainClass>org.mosad.homeflix.application.JavaFX11Main</mainClass>
</transformer> </transformer>
</transformers> </transformers>
</configuration> </configuration>

View File

@ -20,7 +20,7 @@
* *
*/ */
package kellerkinder.HomeFlix.application; package org.mosad.homeflix.application;
import java.awt.Desktop; import java.awt.Desktop;
import java.io.File; import java.io.File;
@ -28,6 +28,10 @@ import java.io.IOException;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.mosad.homeflix.controller.DBController;
import org.mosad.homeflix.controller.XMLController;
import org.mosad.homeflix.datatypes.OMDbAPIResponseDataType;
import org.mosad.homeflix.player.Player;
import com.jfoenix.controls.JFXButton; import com.jfoenix.controls.JFXButton;
@ -39,9 +43,6 @@ import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
import javafx.scene.text.Text; import javafx.scene.text.Text;
import javafx.util.Duration; import javafx.util.Duration;
import kellerkinder.HomeFlix.controller.DBController;
import kellerkinder.HomeFlix.controller.XMLController;
import kellerkinder.HomeFlix.player.Player;
public class FilmDetailView { public class FilmDetailView {
@ -136,29 +137,29 @@ public class FilmDetailView {
*/ */
public void setFilm(String streamURL) { public void setFilm(String streamURL) {
currentStreamURL = streamURL; currentStreamURL = streamURL;
String[] cacheInfo = dbController.readCache(streamURL); // get the cache data from the database OMDbAPIResponseDataType cacheInfo = dbController.readCache(streamURL); // get the cache data from the database
// add the cache data to the GUI // add the cache data to the GUI
lblTitle.setText(cacheInfo[0]); lblTitle.setText(cacheInfo.getTitle());
lblYear.setText("(" + cacheInfo[1] + ")"); lblYear.setText("(" + cacheInfo.getYear() + ")");
lblScore.setText(XMLController.getLocalBundle().getString("score") + ": " + cacheInfo[15] + "%"); lblScore.setText(XMLController.getLocalBundle().getString("score") + ": " + cacheInfo.getMetascore() + "%");
textPlot.setText(cacheInfo[11]); textPlot.setText(cacheInfo.getPlot());
lblDirectors.setText(cacheInfo[8]); lblDirectors.setText(cacheInfo.getDirector());
lblWriters.setText(cacheInfo[9]); lblWriters.setText(cacheInfo.getWriter());
lblActors.setText(cacheInfo[10]); lblActors.setText(cacheInfo.getActors());
lblRuntime.setText(cacheInfo[6]); lblRuntime.setText(cacheInfo.getRuntime());
lblLanguage.setText(cacheInfo[12]); lblLanguage.setText(cacheInfo.getLanguage());
lblRevenue.setText(cacheInfo[18]); lblRevenue.setText(cacheInfo.getBoxOffice());
lblRating.setText(cacheInfo[2]); lblRating.setText(cacheInfo.getRated());
try { try {
if (new File(cacheInfo[20]).isFile()) { if (new File(cacheInfo.getPoster()).isFile()) {
imgPoster.setImage(new Image(new File(cacheInfo[20]).toURI().toString())); imgPoster.setImage(new Image(new File(cacheInfo.getPoster()).toURI().toString()));
} else { } else {
imgPoster.setImage(new Image(cacheInfo[20])); imgPoster.setImage(new Image(cacheInfo.getPoster()));
} }
} catch (Exception e) { } catch (Exception e) {
imgPoster.setImage(new Image("icons/Homeflix_Poster.png")); imgPoster.setImage(new Image("icons/Homeflix_Poster.png"));

View File

@ -1,4 +1,4 @@
package kellerkinder.HomeFlix.application; package org.mosad.homeflix.application;
public class JavaFX11Main { public class JavaFX11Main {

View File

@ -20,13 +20,15 @@
* *
*/ */
package kellerkinder.HomeFlix.application; package org.mosad.homeflix.application;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.mosad.homeflix.controller.DBController;
import org.mosad.homeflix.controller.XMLController;
import javafx.application.Application; import javafx.application.Application;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
@ -34,7 +36,6 @@ import javafx.scene.Scene;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage; import javafx.stage.Stage;
import kellerkinder.HomeFlix.controller.XMLController;
public class Main extends Application { public class Main extends Application {
@ -62,7 +63,10 @@ public class Main extends Application {
//primaryStage.setResizable(false); //primaryStage.setResizable(false);
primaryStage.setTitle("Project HomeFlix"); primaryStage.setTitle("Project HomeFlix");
primaryStage.getIcons().add(new Image(Main.class.getResourceAsStream("/icons/Homeflix_Icon_64x64.png"))); //adds application icon primaryStage.getIcons().add(new Image(Main.class.getResourceAsStream("/icons/Homeflix_Icon_64x64.png"))); //adds application icon
primaryStage.setOnCloseRequest(event -> System.exit(0)); primaryStage.setOnCloseRequest(event -> {
DBController.getInstance().closeDBConnection();
System.exit(0);
});
// generate window // generate window
scene = new Scene(pane); // create new scene, append pane to scene scene = new Scene(pane); // create new scene, append pane to scene
@ -100,7 +104,9 @@ public class Main extends Application {
LOGGER.info("Java: " + XMLController.getJavaVend() + " " + XMLController.getJavaVers()); LOGGER.info("Java: " + XMLController.getJavaVend() + " " + XMLController.getJavaVers());
LOGGER.info("User: " + XMLController.getUserName() + " " + XMLController.getUserHome()); LOGGER.info("User: " + XMLController.getUserName() + " " + XMLController.getUserHome());
xmlController = new XMLController(); xmlController = new XMLController(); // Initialize the XMLController
// TODO run Migrations
if (!XMLController.getConfigFile().exists()) { if (!XMLController.getConfigFile().exists()) {
xmlController.saveSettings(); // save the settings file with default values if it doesn't exist xmlController.saveSettings(); // save the settings file with default values if it doesn't exist

View File

@ -20,7 +20,7 @@
* *
*/ */
package kellerkinder.HomeFlix.application; package org.mosad.homeflix.application;
import java.io.File; import java.io.File;
import java.io.FileReader; import java.io.FileReader;
@ -39,6 +39,12 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.kellerkinder.Alerts.JFX2BtnCancelAlert; import org.kellerkinder.Alerts.JFX2BtnCancelAlert;
import org.kellerkinder.Alerts.JFXInfoAlert; import org.kellerkinder.Alerts.JFXInfoAlert;
import org.mosad.homeflix.controller.DBController;
import org.mosad.homeflix.controller.OMDbAPIController;
import org.mosad.homeflix.controller.UpdateController;
import org.mosad.homeflix.controller.XMLController;
import org.mosad.homeflix.datatypes.FilmTabelDataType;
import org.mosad.homeflix.datatypes.PosterModeElement;
import com.eclipsesource.json.Json; import com.eclipsesource.json.Json;
import com.eclipsesource.json.JsonArray; import com.eclipsesource.json.JsonArray;
@ -63,12 +69,6 @@ import javafx.stage.DirectoryChooser;
import javafx.stage.FileChooser; import javafx.stage.FileChooser;
import javafx.stage.Stage; import javafx.stage.Stage;
import javafx.util.Duration; import javafx.util.Duration;
import kellerkinder.HomeFlix.controller.DBController;
import kellerkinder.HomeFlix.controller.OMDbAPIController;
import kellerkinder.HomeFlix.controller.UpdateController;
import kellerkinder.HomeFlix.controller.XMLController;
import kellerkinder.HomeFlix.datatypes.FilmTabelDataType;
import kellerkinder.HomeFlix.datatypes.PosterModeElement;
public class MainWindowController { public class MainWindowController {

View File

@ -20,7 +20,7 @@
* *
*/ */
package kellerkinder.HomeFlix.application; package org.mosad.homeflix.application;
import java.awt.Desktop; import java.awt.Desktop;
import java.io.File; import java.io.File;
@ -28,6 +28,11 @@ import java.io.IOException;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.mosad.homeflix.controller.DBController;
import org.mosad.homeflix.controller.XMLController;
import org.mosad.homeflix.datatypes.OMDbAPIResponseDataType;
import org.mosad.homeflix.datatypes.SeriresDVEpisode;
import org.mosad.homeflix.player.Player;
import com.jfoenix.controls.JFXButton; import com.jfoenix.controls.JFXButton;
@ -45,10 +50,6 @@ import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.text.Text; import javafx.scene.text.Text;
import javafx.util.Duration; import javafx.util.Duration;
import kellerkinder.HomeFlix.controller.DBController;
import kellerkinder.HomeFlix.controller.XMLController;
import kellerkinder.HomeFlix.datatypes.SeriresDVEpisode;
import kellerkinder.HomeFlix.player.Player;
public class SeriesDetailView { public class SeriesDetailView {
@ -144,21 +145,21 @@ public class SeriesDetailView {
*/ */
public void setSeries(String streamURL) { public void setSeries(String streamURL) {
currentStreamURL = streamURL; currentStreamURL = streamURL;
String[] cacheInfo = dbController.readCache(streamURL); // get the cache data from the database OMDbAPIResponseDataType cacheInfo = dbController.readCache(streamURL); // get the cache data from the database
// add the cache data to the GUI // add the cache data to the GUI
lblTitle.setText(cacheInfo[0]); lblTitle.setText(cacheInfo.getTitle());
lblYear.setText("(" + cacheInfo[1] + ")"); lblYear.setText("(" + cacheInfo.getYear() + ")");
lblScore.setText(XMLController.getLocalBundle().getString("score") + ": " + cacheInfo[15] + "%"); lblScore.setText(XMLController.getLocalBundle().getString("score") + ": " + cacheInfo.getMetascore() + "%");
textPlot.setText(cacheInfo[11]); textPlot.setText(cacheInfo.getPlot());
lblDirectors.setText(cacheInfo[8]); lblDirectors.setText(cacheInfo.getDirector());
lblWriters.setText(cacheInfo[9]); lblWriters.setText(cacheInfo.getWriter());
lblActors.setText(cacheInfo[10]); lblActors.setText(cacheInfo.getActors());
try { try {
imgPoster.setImage(new Image(new File(cacheInfo[20]).toURI().toString())); imgPoster.setImage(new Image(new File(cacheInfo.getPoster()).toURI().toString()));
} catch (Exception e) { } catch (Exception e) {
imgPoster.setImage(new Image("icons/Homeflix_Poster.png")); imgPoster.setImage(new Image("icons/Homeflix_Poster.png"));
LOGGER.error("No Poster found, useing default."); LOGGER.error("No Poster found, useing default.");

View File

@ -20,7 +20,7 @@
* *
*/ */
package kellerkinder.HomeFlix.application; package org.mosad.homeflix.application;
import java.io.File; import java.io.File;
import java.io.FileReader; import java.io.FileReader;
@ -30,6 +30,10 @@ import java.io.Writer;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.mosad.homeflix.controller.DBController;
import org.mosad.homeflix.controller.UpdateController;
import org.mosad.homeflix.controller.XMLController;
import org.mosad.homeflix.datatypes.SourceDataType;
import com.eclipsesource.json.Json; import com.eclipsesource.json.Json;
import com.eclipsesource.json.JsonArray; import com.eclipsesource.json.JsonArray;
@ -54,10 +58,6 @@ import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import javafx.stage.DirectoryChooser; import javafx.stage.DirectoryChooser;
import javafx.stage.FileChooser; import javafx.stage.FileChooser;
import kellerkinder.HomeFlix.controller.DBController;
import kellerkinder.HomeFlix.controller.UpdateController;
import kellerkinder.HomeFlix.controller.XMLController;
import kellerkinder.HomeFlix.datatypes.SourceDataType;
public class SettingsView { public class SettingsView {

View File

@ -19,7 +19,7 @@
* MA 02110-1301, USA. * MA 02110-1301, USA.
*/ */
package kellerkinder.HomeFlix.controller; package org.mosad.homeflix.controller;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@ -38,14 +38,14 @@ import java.util.List;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.mosad.homeflix.datatypes.DatabaseDataType;
import org.mosad.homeflix.datatypes.FilmTabelDataType;
import org.mosad.homeflix.datatypes.OMDbAPIResponseDataType;
import org.mosad.homeflix.datatypes.PosterModeElement;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import kellerkinder.HomeFlix.datatypes.DatabaseDataType;
import kellerkinder.HomeFlix.datatypes.FilmTabelDataType;
import kellerkinder.HomeFlix.datatypes.OMDbAPIResponseDataType;
import kellerkinder.HomeFlix.datatypes.PosterModeElement;
public class DBController { public class DBController {
@ -103,15 +103,13 @@ public class DBController {
* cache table: streamUrl is primary key * cache table: streamUrl is primary key
*/ */
private void createDatabase() { private void createDatabase() {
try { try (Statement stmt = connection.createStatement();) {
Statement stmt = connection.createStatement();
stmt.executeUpdate("create table if not exists films (streamUrl, title, season, episode, favorite, cached, currentTime)"); stmt.executeUpdate("create table if not exists films (streamUrl, title, season, episode, favorite, cached, currentTime)");
stmt.executeUpdate("create table if not exists cache (" stmt.executeUpdate("create table if not exists cache ("
+ "streamUrl, Title, Year, Rated, Released, Season, Episode ,Runtime, Genre, Director, Writer," + "streamUrl, Title, Year, Rated, Released, Season, Episode ,Runtime, Genre, Director, Writer,"
+ " Actors, Plot, Language, Country, Awards, Poster, Metascore, imdbRating, imdbVotes," + " Actors, Plot, Language, Country, Awards, Poster, Metascore, imdbRating, imdbVotes,"
+ " imdbID, Type, dvd, BoxOffice, Website, Response)"); + " imdbID, Type, dvd, BoxOffice, Website, Response)");
connection.commit(); connection.commit();
stmt.close();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.error(e); LOGGER.error(e);
} }
@ -122,16 +120,16 @@ public class DBController {
*/ */
private void loadDatabase() { private void loadDatabase() {
// get all entries from the table // get all entries from the table
try { try (Statement stmt = connection.createStatement();) {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM films"); try (ResultSet rs = stmt.executeQuery("SELECT * FROM films");) {
while (rs.next()) { while (rs.next()) {
databaseStreams.add(new DatabaseDataType(rs.getString("streamUrl"), databaseStreams.add(new DatabaseDataType(rs.getString("streamUrl"),
rs.getString("title"), rs.getString("season"), rs.getString("episode"), rs.getString("title"), rs.getString("season"), rs.getString("episode"),
rs.getInt("favorite"), rs.getDouble("currentTime"))); rs.getInt("favorite"), rs.getDouble("currentTime")));
}
} }
stmt.close();
rs.close();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.error("Ups! an error occured!", e); LOGGER.error("Ups! an error occured!", e);
} }
@ -145,6 +143,18 @@ public class DBController {
sourceStreams = sourcesController.loadSources(); sourceStreams = sourcesController.loadSources();
} }
/**
* try to close the databse connection
*/
public void closeDBConnection( ) {
try {
connection.commit();
connection.close();
} catch (SQLException e) {
LOGGER.error("Error while trying to close the databse connection", e);
}
}
/** /**
* load all streams from the database to a ObservableList, order entries by title * load all streams from the database to a ObservableList, order entries by title
* @return a ObservableList that contains all streams from the database * @return a ObservableList that contains all streams from the database
@ -152,17 +162,17 @@ public class DBController {
public ObservableList<FilmTabelDataType> getStreamsList() { public ObservableList<FilmTabelDataType> getStreamsList() {
ObservableList<FilmTabelDataType> filmsList = FXCollections.observableArrayList(); ObservableList<FilmTabelDataType> filmsList = FXCollections.observableArrayList();
LOGGER.info("loading data from database ..."); LOGGER.info("loading data from database ...");
try {
//load local Data //load local Data
Statement stmt = connection.createStatement(); try (Statement stmt = connection.createStatement(); ) {
ResultSet rs = stmt.executeQuery("SELECT * FROM films ORDER BY title");
while (rs.next()) { try (ResultSet rs = stmt.executeQuery("SELECT * FROM films ORDER BY title");) {
filmsList.add(new FilmTabelDataType(rs.getString("streamUrl"), while (rs.next()) {
rs.getString("title"), rs.getString("season"), rs.getString("episode"))); filmsList.add(new FilmTabelDataType(rs.getString("streamUrl"),
rs.getString("title"), rs.getString("season"), rs.getString("episode")));
}
} }
stmt.close();
rs.close();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.error("Ups! an error occured!", e); LOGGER.error("Ups! an error occured!", e);
} }
@ -178,17 +188,16 @@ public class DBController {
public FilmTabelDataType getStream(String streamUrl) { public FilmTabelDataType getStream(String streamUrl) {
FilmTabelDataType film = null; FilmTabelDataType film = null;
LOGGER.info("refresh data for " + streamUrl); LOGGER.info("refresh data for " + streamUrl);
try { try (PreparedStatement ps = connection.prepareStatement("SELECT * FROM films WHERE streamUrl = ?");) {
PreparedStatement ps = connection.prepareStatement("SELECT * FROM films WHERE streamUrl = ?");
ps.setString(1, streamUrl); ps.setString(1, streamUrl);
ResultSet rs = ps.executeQuery();
while (rs.next()) { try (ResultSet rs = ps.executeQuery();) {
film = new FilmTabelDataType(rs.getString("streamUrl"), while (rs.next()) {
rs.getString("title"), rs.getString("season"), rs.getString("episode")); film = new FilmTabelDataType(rs.getString("streamUrl"),
rs.getString("title"), rs.getString("season"), rs.getString("episode"));
}
} }
rs.close();
ps.close();
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("Ups! error while refreshing mwc!", e); LOGGER.error("Ups! error while refreshing mwc!", e);
} }
@ -201,25 +210,24 @@ public class DBController {
* @return a ObservableList of PosterModeElements * @return a ObservableList of PosterModeElements
*/ */
public ObservableList<PosterModeElement> getPosterElementsList() { public ObservableList<PosterModeElement> getPosterElementsList() {
ObservableList<PosterModeElement> posterElementsList = FXCollections.observableArrayList(); ObservableList<PosterModeElement> posterElementsList = FXCollections.observableArrayList();
LOGGER.info("loading data from database ..."); LOGGER.info("loading data from database ...");
try {
//load local Data //load local Data
Statement stmt = connection.createStatement(); try (Statement stmt = connection.createStatement();) {
ResultSet rs = stmt.executeQuery("SELECT * FROM films WHERE season = '' OR season = '0' ORDER BY title");
while (rs.next()) { try (ResultSet rs = stmt.executeQuery("SELECT * FROM films WHERE season = '' OR season = '0' ORDER BY title");) {
String[] cacheData = readCache(rs.getString("streamUrl")); // get from the cache table while (rs.next()) {
String[] cacheData = readCacheLegacy(rs.getString("streamUrl")); // get from the cache table
if(cacheData[20] != null && cacheData[20].length() > 0) {
posterElementsList.add(new PosterModeElement(rs.getString("streamUrl"), cacheData[0], new Image(new File(cacheData[20]).toURI().toString()))); if(cacheData[20] != null && cacheData[20].length() > 0) {
} else { posterElementsList.add(new PosterModeElement(rs.getString("streamUrl"), cacheData[0], new Image(new File(cacheData[20]).toURI().toString())));
posterElementsList.add(new PosterModeElement(rs.getString("streamUrl"), cacheData[0], new Image("icons/Homeflix_Poster.png"))); } else {
posterElementsList.add(new PosterModeElement(rs.getString("streamUrl"), cacheData[0], new Image("icons/Homeflix_Poster.png")));
}
} }
} }
stmt.close();
rs.close();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.error("An error occured while getting all PosterElements!", e); LOGGER.error("An error occured while getting all PosterElements!", e);
} }
@ -256,69 +264,71 @@ public class DBController {
* check if there are any entries that have been removed from the film-directory * check if there are any entries that have been removed from the film-directory
* @throws SQLException * @throws SQLException
*/ */
private void checkRemoveEntry() throws SQLException { private void checkRemoveEntry() {
PreparedStatement ps = connection.prepareStatement("DELETE FROM films WHERE streamUrl = ?");
LOGGER.info("checking for entrys to remove to DB ..."); LOGGER.info("checking for entrys to remove to DB ...");
for (DatabaseDataType dbStreamEntry : databaseStreams) { try (PreparedStatement ps = connection.prepareStatement("DELETE FROM films WHERE streamUrl = ?");) {
// if the directory doen't contain the entry form the database, remove it for (DatabaseDataType dbStreamEntry : databaseStreams) {
// if the directory doen't contain the entry form the database, remove it
// if sourceStreams has a item where StreamUrl equals dbStreamEntry.getStreamUrl() return it, else null
DatabaseDataType result = sourceStreams.stream() // if sourceStreams has a item where StreamUrl equals dbStreamEntry.getStreamUrl() return it, else null
.filter(x -> dbStreamEntry.getStreamUrl().equals(x.getStreamUrl())) DatabaseDataType result = sourceStreams.stream()
.findAny() .filter(x -> dbStreamEntry.getStreamUrl().equals(x.getStreamUrl()))
.orElse(null); .findAny()
.orElse(null);
// if the result is null, the file is missing, remove it from the database
if (result == null) { // if the result is null, the file is missing, remove it from the database
ps.setString(1, dbStreamEntry.getStreamUrl()); if (result == null) {
ps.addBatch(); ps.setString(1, dbStreamEntry.getStreamUrl());
LOGGER.info("removed \"" + dbStreamEntry.getTitle() + "\" from database"); ps.addBatch();
LOGGER.info("removed \"" + dbStreamEntry.getTitle() + "\" from database");
}
} }
ps.executeBatch();
connection.commit();
} catch (SQLException e) {
LOGGER.error("An error occured, while cheking for media to remove", e);
} }
ps.executeBatch();
connection.commit();
ps.close();
} }
/** /**
* check if there are new films in the film-directory * check for new media in the source directories
* @throws SQLException
* @throws FileNotFoundException * @throws FileNotFoundException
* @throws IOException * @throws IOException
*/ */
private void checkAddEntry() throws SQLException, FileNotFoundException, IOException { private void checkAddEntry() throws FileNotFoundException, IOException {
PreparedStatement ps = connection.prepareStatement("insert into films values (?, ?, ?, ?, ?, ?, ?)");
LOGGER.info("checking for entrys to add to DB ..."); LOGGER.info("checking for entrys to add to DB ...");
// new try (PreparedStatement ps = connection.prepareStatement("insert into films values (?, ?, ?, ?, ?, ?, ?)");) {
for (DatabaseDataType sourceStreamEntry : sourceStreams) { for (DatabaseDataType sourceStreamEntry : sourceStreams) {
// if databaseStream has a item where StreamUrl equals sourceStreamEntry.getStreamUrl() return it, else null // if databaseStream has a item where StreamUrl equals sourceStreamEntry.getStreamUrl() return it, else null
DatabaseDataType result = databaseStreams.stream() DatabaseDataType result = databaseStreams.stream()
.filter(x -> sourceStreamEntry.getStreamUrl().equals(x.getStreamUrl())) .filter(x -> sourceStreamEntry.getStreamUrl().equals(x.getStreamUrl()))
.findAny() .findAny()
.orElse(null); .orElse(null);
// if the result is null, the entry is missing, add it to the database // if the result is null, the entry is missing, add it to the database
if (result == null) { if (result == null) {
ps.setString(1, sourceStreamEntry.getStreamUrl()); ps.setString(1, sourceStreamEntry.getStreamUrl());
ps.setString(2, sourceStreamEntry.getTitle()); ps.setString(2, sourceStreamEntry.getTitle());
ps.setString(3, sourceStreamEntry.getSeason()); ps.setString(3, sourceStreamEntry.getSeason());
ps.setString(4, sourceStreamEntry.getEpisode()); ps.setString(4, sourceStreamEntry.getEpisode());
ps.setInt(5, sourceStreamEntry.getFavorite()); ps.setInt(5, sourceStreamEntry.getFavorite());
ps.setDate(6, new Date(0)); ps.setDate(6, new Date(0));
ps.setDouble(7, sourceStreamEntry.getCurrentTime()); ps.setDouble(7, sourceStreamEntry.getCurrentTime());
ps.addBatch(); // adds the entry ps.addBatch(); // adds the entry
LOGGER.info("Added \"" + sourceStreamEntry.getTitle() + "\" to database"); LOGGER.info("Added \"" + sourceStreamEntry.getTitle() + "\" to database");
databaseStreams.add(sourceStreamEntry); databaseStreams.add(sourceStreamEntry);
}
} }
ps.executeBatch();
connection.commit();
} catch (SQLException e) {
LOGGER.error("An error occured, while cheking for new media", e);
} }
ps.executeBatch();
connection.commit();
ps.close();
} }
/** /**
@ -327,44 +337,42 @@ public class DBController {
*/ */
public void printAllDBEntriesDEBUG() { public void printAllDBEntriesDEBUG() {
System.out.println("Outputting all entries ... \n"); System.out.println("Outputting all entries ... \n");
try { try (Statement stmt = connection.createStatement();) {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM films"); try (ResultSet rs = stmt.executeQuery("SELECT * FROM films");) {
while (rs.next()) { while (rs.next()) {
System.out.println(rs.getString("streamUrl")); System.out.println(rs.getString("streamUrl"));
System.out.println(rs.getString("title")); System.out.println(rs.getString("title"));
System.out.println(rs.getString("season")); System.out.println(rs.getString("season"));
System.out.println(rs.getString("episode")); System.out.println(rs.getString("episode"));
System.out.println(rs.getString("rating")); System.out.println(rs.getString("rating"));
System.out.println(rs.getString("cached")); System.out.println(rs.getString("cached"));
System.out.println(rs.getString("currentTime") + "\n"); System.out.println(rs.getString("currentTime") + "\n");
}
} }
rs.close();
stmt.close();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.error("An error occured, while printing all entries", e); LOGGER.error("An error occured, while printing all entries", e);
} }
} }
/** /**
* return the favorite state for a stream * return the favorite status of a media entry
* @param streamURL URL of the stream * @param mediaURL URL of the media
* @return 0 if it's not a favorite, else 1 * @return 0 if it's not a favorite, else 1
*/ */
public int getFavoriteState(String streamURL) { public int getFavoriteState(String mediaURL) {
int favoriteState = 0; int favoriteState = 0;
PreparedStatement ps;
try { try (PreparedStatement ps = connection.prepareStatement("SELECT favorite FROM films WHERE streamUrl = ?");) {
ps = connection.prepareStatement("SELECT favorite FROM films WHERE streamUrl = ?"); ps.setString(1, mediaURL);
ps.setString(1, streamURL);
ResultSet rs = ps.executeQuery();
while (rs.next()) { try (ResultSet rs = ps.executeQuery();) {
favoriteState = rs.getInt("favorite"); while (rs.next()) {
favoriteState = rs.getInt("favorite");
}
} }
rs.close();
ps.close();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.error("Ups! an error occured!", e); LOGGER.error("Ups! an error occured!", e);
} }
@ -373,18 +381,13 @@ public class DBController {
} }
public void toggleFavoriteState(String streamURL) { public void toggleFavoriteState(String streamURL) {
PreparedStatement ps; int fav = getFavoriteState(streamURL) == 0 ? 1 : 0;
try {
if (getFavoriteState(streamURL) == 0) { try (PreparedStatement ps = connection.prepareStatement("UPDATE films SET favorite = ? WHERE streamUrl = ?");) {
ps = connection.prepareStatement("UPDATE films SET favorite = 1 WHERE streamUrl = ?"); ps.setInt(1, fav);
} else { ps.setString(2, streamURL);
ps = connection.prepareStatement("UPDATE films SET favorite = 0 WHERE streamUrl = ?");
}
ps.setString(1, streamURL);
ps.executeUpdate(); ps.executeUpdate();
connection.commit(); connection.commit();
ps.close();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.error("Ups! an error occured!", e); LOGGER.error("Ups! an error occured!", e);
} }
@ -396,12 +399,11 @@ public class DBController {
*/ */
public void dislike(String streamUrl) { public void dislike(String streamUrl) {
LOGGER.info("dislike " + streamUrl); LOGGER.info("dislike " + streamUrl);
try {
PreparedStatement ps = connection.prepareStatement("UPDATE films SET favorite = 0 WHERE streamUrl = ?"); try (PreparedStatement ps = connection.prepareStatement("UPDATE films SET favorite = 0 WHERE streamUrl = ?");){
ps.setString(1, streamUrl); ps.setString(1, streamUrl);
ps.executeUpdate(); ps.executeUpdate();
connection.commit(); connection.commit();
ps.close();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.error("Ups! an error occured!", e); LOGGER.error("Ups! an error occured!", e);
} }
@ -413,12 +415,11 @@ public class DBController {
*/ */
public void like(String streamUrl) { public void like(String streamUrl) {
LOGGER.info("like " + streamUrl); LOGGER.info("like " + streamUrl);
try {
PreparedStatement ps = connection.prepareStatement("UPDATE films SET favorite = 1 WHERE streamUrl = ?"); try (PreparedStatement ps = connection.prepareStatement("UPDATE films SET favorite = 1 WHERE streamUrl = ?");) {
ps.setString(1, streamUrl); ps.setString(1, streamUrl);
ps.executeUpdate(); ps.executeUpdate();
connection.commit(); connection.commit();
ps.close();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.error("Ups! An error occured!", e); LOGGER.error("Ups! An error occured!", e);
} }
@ -429,13 +430,11 @@ public class DBController {
* @param streamUrl URL of the film * @param streamUrl URL of the film
*/ */
public void setCached(String streamUrl) { public void setCached(String streamUrl) {
try { try (PreparedStatement ps = connection.prepareStatement("UPDATE films SET cached = ? WHERE streamUrl = ?");) {
PreparedStatement ps = connection.prepareStatement("UPDATE films SET cached = ? WHERE streamUrl = ?");
ps.setDate(1, new Date(System.currentTimeMillis())); ps.setDate(1, new Date(System.currentTimeMillis()));
ps.setString(2, streamUrl); ps.setString(2, streamUrl);
ps.executeUpdate(); ps.executeUpdate();
connection.commit(); connection.commit();
ps.close();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.error("Ups! An error occured, while setting cached = DATE for {}.", streamUrl, e); LOGGER.error("Ups! An error occured, while setting cached = DATE for {}.", streamUrl, e);
} }
@ -447,17 +446,16 @@ public class DBController {
*/ */
public LocalDate getCacheDate(String streamUrl) { public LocalDate getCacheDate(String streamUrl) {
LocalDate cacheDate = LocalDate.now().minusDays(31); LocalDate cacheDate = LocalDate.now().minusDays(31);
try {
PreparedStatement ps = connection.prepareStatement("SELECT cached FROM films WHERE streamUrl = ?"); try (PreparedStatement ps = connection.prepareStatement("SELECT cached FROM films WHERE streamUrl = ?");){
ps.setString(1, streamUrl); ps.setString(1, streamUrl);
ResultSet rs = ps.executeQuery();
while (rs.next()) { try (ResultSet rs = ps.executeQuery();) {
cacheDate = rs.getDate("cached").toLocalDate(); while (rs.next()) {
cacheDate = rs.getDate("cached").toLocalDate();
}
} }
rs.close();
ps.close();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.error("Ups! An error occured, while rerading the cached date for {}.", streamUrl, e); LOGGER.error("Ups! An error occured, while rerading the cached date for {}.", streamUrl, e);
} }
@ -471,10 +469,9 @@ public class DBController {
* @param omdbResponse the response data from omdbAPI * @param omdbResponse the response data from omdbAPI
*/ */
public void addCache(String streamUrl, OMDbAPIResponseDataType omdbResponse) { public void addCache(String streamUrl, OMDbAPIResponseDataType omdbResponse) {
try { LOGGER.info("adding cache for: " + streamUrl);
PreparedStatement ps = connection.prepareStatement("insert into cache values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
try (PreparedStatement ps = connection.prepareStatement("insert into cache values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");){
LOGGER.info("adding cache for: " + streamUrl);
ps.setString(1,streamUrl); ps.setString(1,streamUrl);
ps.setString(2,omdbResponse.getTitle()); ps.setString(2,omdbResponse.getTitle());
ps.setString(3,omdbResponse.getYear()); ps.setString(3,omdbResponse.getYear());
@ -505,7 +502,6 @@ public class DBController {
ps.addBatch(); ps.addBatch();
ps.executeBatch(); ps.executeBatch();
connection.commit(); connection.commit();
ps.close();
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("Ups! An error while adding cache data for {}.", streamUrl, e); LOGGER.error("Ups! An error while adding cache data for {}.", streamUrl, e);
} }
@ -518,13 +514,13 @@ public class DBController {
*/ */
public boolean searchCacheByURL(String streamUrl) { public boolean searchCacheByURL(String streamUrl) {
boolean retValue = false; boolean retValue = false;
try { try (PreparedStatement ps = connection.prepareStatement("SELECT * FROM cache WHERE streamUrl = ?");) {
PreparedStatement ps = connection.prepareStatement("SELECT * FROM cache WHERE streamUrl = ?");
ps.setString(1, streamUrl); ps.setString(1, streamUrl);
ResultSet rs = ps.executeQuery();
retValue = rs.next(); try (ResultSet rs = ps.executeQuery();) {
rs.close(); retValue = rs.next();
ps.close(); }
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("Ups! An error while searching for {} in the cache.", streamUrl, e); LOGGER.error("Ups! An error while searching for {} in the cache.", streamUrl, e);
} }
@ -537,40 +533,38 @@ public class DBController {
* @param streamUrl URL of the film * @param streamUrl URL of the film
* @return a String array (length = 21) with all cached data * @return a String array (length = 21) with all cached data
*/ */
public String[] readCache(String streamUrl) { public String[] readCacheLegacy(String streamUrl) {
String[] cacheData = new String[21]; String[] cacheData = new String[21];
try { try (PreparedStatement ps = connection.prepareStatement("SELECT * FROM cache WHERE streamUrl = ?");) {
PreparedStatement ps = connection.prepareStatement("SELECT * FROM cache WHERE streamUrl = ?");
ps.setString(1, streamUrl); ps.setString(1, streamUrl);
ResultSet rs = ps.executeQuery();
while (rs.next()) { try (ResultSet rs = ps.executeQuery();) {
cacheData[0] = rs.getString("Title"); while (rs.next()) {
cacheData[1] = rs.getString("Year"); cacheData[0] = rs.getString("Title");
cacheData[2] = rs.getString("Rated"); cacheData[1] = rs.getString("Year");
cacheData[3] = rs.getString("Released"); cacheData[2] = rs.getString("Rated");
cacheData[4] = rs.getString("Season"); cacheData[3] = rs.getString("Released");
cacheData[5] = rs.getString("Episode"); cacheData[4] = rs.getString("Season");
cacheData[6] = rs.getString("Runtime"); cacheData[5] = rs.getString("Episode");
cacheData[7] = rs.getString("Genre"); cacheData[6] = rs.getString("Runtime");
cacheData[8] = rs.getString("Director"); cacheData[7] = rs.getString("Genre");
cacheData[9] = rs.getString("Writer"); cacheData[8] = rs.getString("Director");
cacheData[10] = rs.getString("Actors"); cacheData[9] = rs.getString("Writer");
cacheData[11] = rs.getString("Plot"); cacheData[10] = rs.getString("Actors");
cacheData[12] = rs.getString("Language"); cacheData[11] = rs.getString("Plot");
cacheData[13] = rs.getString("Country"); cacheData[12] = rs.getString("Language");
cacheData[14] = rs.getString("Awards"); cacheData[13] = rs.getString("Country");
cacheData[15] = rs.getString("metascore"); cacheData[14] = rs.getString("Awards");
cacheData[16] = rs.getString("imdbRating"); cacheData[15] = rs.getString("metascore");
cacheData[17] = rs.getString("Type"); cacheData[16] = rs.getString("imdbRating");
cacheData[18] = rs.getString("BoxOffice"); cacheData[17] = rs.getString("Type");
cacheData[19] = rs.getString("Website"); cacheData[18] = rs.getString("BoxOffice");
cacheData[20] = rs.getString("Poster"); cacheData[19] = rs.getString("Website");
cacheData[20] = rs.getString("Poster");
}
} }
rs.close();
ps.close();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.error("Ups! error while getting the current time for {}.", streamUrl, e); LOGGER.error("Ups! error while getting the current time for {}.", streamUrl, e);
} }
@ -578,6 +572,50 @@ public class DBController {
return cacheData; return cacheData;
} }
public OMDbAPIResponseDataType readCache(String streamUrl) {
OMDbAPIResponseDataType omdbResponse = new OMDbAPIResponseDataType();
try (PreparedStatement ps = connection.prepareStatement("SELECT * FROM cache WHERE streamUrl = ?");) {
ps.setString(1, streamUrl);
try (ResultSet rs = ps.executeQuery();) {
while (rs.next()) {
omdbResponse.setTitle(rs.getString("Title"));
omdbResponse.setYear(rs.getString("Year"));
omdbResponse.setRated(rs.getString("Rated"));
omdbResponse.setReleased(rs.getString("Released"));
omdbResponse.setSeason(rs.getString("Season"));
omdbResponse.setEpisode(rs.getString("Episode"));
omdbResponse.setRuntime(rs.getString("Runtime"));
omdbResponse.setGenre(rs.getString("Genre"));
omdbResponse.setDirector(rs.getString("Director"));
omdbResponse.setWriter(rs.getString("Writer"));
omdbResponse.setActors(rs.getString("Actors"));
omdbResponse.setPlot(rs.getString("Plot"));
omdbResponse.setLanguage(rs.getString("Language"));
omdbResponse.setCountry(rs.getString("Country"));
omdbResponse.setAwards(rs.getString("Awards"));
omdbResponse.setMetascore(rs.getString("metascore"));
omdbResponse.setImdbRating(rs.getString("imdbRating"));
omdbResponse.setImdbVotes(rs.getString("imdbVotes"));
omdbResponse.setImdbID(rs.getString("imdbID"));
omdbResponse.setType(rs.getString("Type"));
omdbResponse.setDvd(rs.getString("dvd"));
omdbResponse.setBoxOffice(rs.getString("BoxOffice"));
//omdbResponse.setProduction(object.getString("Production", ""));
omdbResponse.setWebsite(rs.getString("Website"));
omdbResponse.setResponse(rs.getString("Response"));
omdbResponse.setPoster(rs.getString("Poster"));
}
}
} catch (SQLException e) {
LOGGER.error("Ups! error while getting the current time for {}.", streamUrl, e);
}
return omdbResponse;
}
/** /**
* get all NOT cached entries * get all NOT cached entries
* @return a {@link ArrayList} of all NOT cached entries * @return a {@link ArrayList} of all NOT cached entries
@ -585,15 +623,15 @@ public class DBController {
public ArrayList<FilmTabelDataType> getAllNotCachedEntries() { public ArrayList<FilmTabelDataType> getAllNotCachedEntries() {
ArrayList<FilmTabelDataType> notCachedEntries = new ArrayList<>(); ArrayList<FilmTabelDataType> notCachedEntries = new ArrayList<>();
try { try (Statement stmt = connection.createStatement();) {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM films WHERE cached = 0"); try (ResultSet rs = stmt.executeQuery("SELECT * FROM films WHERE cached = 0");) {
while (rs.next()) { while (rs.next()) {
notCachedEntries.add(new FilmTabelDataType(rs.getString("streamUrl"), notCachedEntries.add(new FilmTabelDataType(rs.getString("streamUrl"),
rs.getString("title"), rs.getString("season"), rs.getString("episode"))); rs.getString("title"), rs.getString("season"), rs.getString("episode")));
}
} }
stmt.close();
rs.close();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.error("An error occured, while getting all NOT cached entries", e); LOGGER.error("An error occured, while getting all NOT cached entries", e);
} }
@ -610,13 +648,14 @@ public class DBController {
public double getCurrentTime(String streamUrl) { public double getCurrentTime(String streamUrl) {
LOGGER.info("get currentTime for " + streamUrl); LOGGER.info("get currentTime for " + streamUrl);
double currentTime = 0; double currentTime = 0;
try {
PreparedStatement ps = connection.prepareStatement("SELECT * FROM films WHERE streamUrl = ?"); try (PreparedStatement ps = connection.prepareStatement("SELECT * FROM films WHERE streamUrl = ?");) {
ps.setString(1, streamUrl); ps.setString(1, streamUrl);
ResultSet rs = ps.executeQuery();
currentTime = rs.getDouble("currentTime"); try (ResultSet rs = ps.executeQuery();) {
rs.close(); currentTime = rs.getDouble("currentTime");
ps.close(); }
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("Ups! error while getting the current time!", e); LOGGER.error("Ups! error while getting the current time!", e);
} }
@ -631,13 +670,12 @@ public class DBController {
*/ */
public void setCurrentTime(String streamUrl, double currentTime) { public void setCurrentTime(String streamUrl, double currentTime) {
LOGGER.info("set currentTime = " + currentTime + " for " + streamUrl); LOGGER.info("set currentTime = " + currentTime + " for " + streamUrl);
try {
PreparedStatement ps = connection.prepareStatement("UPDATE films SET currentTime = ? WHERE streamUrl = ?"); try (PreparedStatement ps = connection.prepareStatement("UPDATE films SET currentTime = ? WHERE streamUrl = ?");) {
ps.setDouble(1, currentTime); ps.setDouble(1, currentTime);
ps.setString(2, streamUrl); ps.setString(2, streamUrl);
ps.executeUpdate(); ps.executeUpdate();
connection.commit(); connection.commit();
ps.close();
} catch (SQLException e) { } catch (SQLException e) {
LOGGER.error("Ups! error while updateing the current time!", e); LOGGER.error("Ups! error while updateing the current time!", e);
} }
@ -651,18 +689,19 @@ public class DBController {
*/ */
public ArrayList<String[]> getEpisodes(String title, int season) { public ArrayList<String[]> getEpisodes(String title, int season) {
ArrayList<String[]> episodePosters =new ArrayList<>(); ArrayList<String[]> episodePosters =new ArrayList<>();
try {
// try to get a all episode of one season // try to get a all episode of one season
PreparedStatement ps = connection.prepareStatement("SELECT streamUrl, episode FROM films WHERE title = ? AND season = ?"); try (PreparedStatement ps = connection.prepareStatement("SELECT streamUrl, episode FROM films WHERE title = ? AND season = ?");) {
ps.setString(1, title); ps.setString(1, title);
ps.setString(2, Integer.toString(season)); ps.setString(2, Integer.toString(season));
ResultSet rs = ps.executeQuery();
// for each episode load cache data try (ResultSet rs = ps.executeQuery();) {
while (rs.next()) { // for each episode load cache data
String[] cacheData = readCache(rs.getString("streamUrl")); while (rs.next()) {
String[] ret = {rs.getString("streamUrl"), rs.getString("episode"), cacheData[20]}; String[] cacheData = readCacheLegacy(rs.getString("streamUrl"));
episodePosters.add(ret); String[] ret = {rs.getString("streamUrl"), rs.getString("episode"), cacheData[20]};
episodePosters.add(ret);
}
} }
} catch(Exception e) { } catch(Exception e) {
LOGGER.error("Ups! error while getting episodes of a season!", e); LOGGER.error("Ups! error while getting episodes of a season!", e);

View File

@ -20,7 +20,7 @@
* *
*/ */
package kellerkinder.HomeFlix.controller; package org.mosad.homeflix.controller;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.BufferedReader; import java.io.BufferedReader;
@ -32,14 +32,13 @@ import javax.imageio.ImageIO;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.mosad.homeflix.datatypes.FilmTabelDataType;
import org.mosad.homeflix.datatypes.OMDbAPIResponseDataType;
import com.eclipsesource.json.Json; import com.eclipsesource.json.Json;
import com.eclipsesource.json.JsonObject; import com.eclipsesource.json.JsonObject;
import com.eclipsesource.json.JsonValue; import com.eclipsesource.json.JsonValue;
import kellerkinder.HomeFlix.datatypes.FilmTabelDataType;
import kellerkinder.HomeFlix.datatypes.OMDbAPIResponseDataType;
public class OMDbAPIController implements Runnable { public class OMDbAPIController implements Runnable {
private DBController dbController; private DBController dbController;

View File

@ -20,7 +20,7 @@
* *
*/ */
package kellerkinder.HomeFlix.controller; package org.mosad.homeflix.controller;
import java.io.File; import java.io.File;
import java.io.FileReader; import java.io.FileReader;
@ -31,14 +31,13 @@ import java.util.List;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.mosad.homeflix.datatypes.DatabaseDataType;
import com.eclipsesource.json.Json; import com.eclipsesource.json.Json;
import com.eclipsesource.json.JsonArray; import com.eclipsesource.json.JsonArray;
import com.eclipsesource.json.JsonObject; import com.eclipsesource.json.JsonObject;
import com.eclipsesource.json.JsonValue; import com.eclipsesource.json.JsonValue;
import kellerkinder.HomeFlix.datatypes.DatabaseDataType;
public class SourcesController { public class SourcesController {
private List<DatabaseDataType> sourceStreams = new ArrayList<DatabaseDataType>(); private List<DatabaseDataType> sourceStreams = new ArrayList<DatabaseDataType>();
@ -85,10 +84,10 @@ public class SourcesController {
for (File file : new File(path).listFiles()) { for (File file : new File(path).listFiles()) {
// if it's valid file add it to the sourceStreams // if it's valid file add it to the sourceStreams
if (isValidFile(file)) { if (isValidFile(file)) {
sourceStreams.add(new DatabaseDataType(file.getPath(), cutOffEnd(file.getName()), "", "", 0, 0.0)); sourceStreams.add(new DatabaseDataType(file.getPath(), cutOffEnd(file.getName().replace("_", " ")), "", "", 0, 0.0));
} else if(isValidSeriesRoot(file)) { } else if(isValidSeriesRoot(file)) {
// get all directories (series), root and season must be directories // get all directories (series), root and season must be directories
sourceStreams.add(new DatabaseDataType(file.getPath(), file.getName(), "0", "0", 0, 0.0)); // add the series root node sourceStreams.add(new DatabaseDataType(file.getPath(), file.getName().replace("_", " "), "0", "0", 0, 0.0)); // add the series root node
int sn = 1; int sn = 1;
for (File season : file.listFiles()) { for (File season : file.listFiles()) {
if (season.isDirectory()) { if (season.isDirectory()) {

View File

@ -19,7 +19,7 @@
* MA 02110-1301, USA. * MA 02110-1301, USA.
*/ */
package kellerkinder.HomeFlix.controller; package org.mosad.homeflix.controller;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File; import java.io.File;
@ -34,14 +34,13 @@ import javax.swing.ProgressMonitorInputStream;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.mosad.homeflix.application.Main;
import com.eclipsesource.json.Json; import com.eclipsesource.json.Json;
import com.eclipsesource.json.JsonArray; import com.eclipsesource.json.JsonArray;
import com.eclipsesource.json.JsonObject; import com.eclipsesource.json.JsonObject;
import com.eclipsesource.json.JsonValue; import com.eclipsesource.json.JsonValue;
import kellerkinder.HomeFlix.application.Main;
public class UpdateController { public class UpdateController {
private static int updateBuildNumber; // tag_name from gitea private static int updateBuildNumber; // tag_name from gitea

View File

@ -20,7 +20,7 @@
* *
*/ */
package kellerkinder.HomeFlix.controller; package org.mosad.homeflix.controller;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File; import java.io.File;

View File

@ -20,7 +20,7 @@
* *
*/ */
package kellerkinder.HomeFlix.datatypes; package org.mosad.homeflix.datatypes;
public class DatabaseDataType { public class DatabaseDataType {

View File

@ -18,7 +18,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA. * MA 02110-1301, USA.
*/ */
package kellerkinder.HomeFlix.datatypes; package org.mosad.homeflix.datatypes;
public class FilmTabelDataType { public class FilmTabelDataType {
private String streamUrl; private String streamUrl;

View File

@ -20,36 +20,36 @@
* *
*/ */
package kellerkinder.HomeFlix.datatypes; package org.mosad.homeflix.datatypes;
public class OMDbAPIResponseDataType { public class OMDbAPIResponseDataType {
private String title; private String title = "";
private String year; private String year = "";
private String rated; private String rated = "";
private String released; private String released = "";
private String season; private String season = "";
private String episode; private String episode = "";
private String runtime; private String runtime = "";
private String genre; private String genre = "";
private String director; private String director = "";
private String writer; private String writer = "";
private String actors; private String actors = "";
private String plot; private String plot = "";
private String language; private String language = "";
private String country; private String country = "";
private String awards; private String awards = "";
private String poster; private String poster = "";
private String metascore; private String metascore = "";
private String imdbRating; private String imdbRating = "";
private String imdbVotes; private String imdbVotes = "";
private String imdbID; private String imdbID = "";
private String type; private String type = "";
private String dvd; private String dvd = "";
private String boxOffice; private String boxOffice = "";
private String production; private String production = "";
private String website; private String website = "";
private String response; private String response = "";
/** /**
* OMDbAPIResponseDataType is the data-type for the omdbAPI response * OMDbAPIResponseDataType is the data-type for the omdbAPI response
@ -71,7 +71,7 @@ public class OMDbAPIResponseDataType {
} }
public void setYear(String year) { public void setYear(String year) {
this.year = year; this.year = year == null ? "N/A" : year;
} }
public String getRated() { public String getRated() {
@ -79,7 +79,7 @@ public class OMDbAPIResponseDataType {
} }
public void setRated(String rated) { public void setRated(String rated) {
this.rated = rated; this.rated = rated == null ? "N/A" : rated;
} }
public String getReleased() { public String getReleased() {
@ -87,7 +87,7 @@ public class OMDbAPIResponseDataType {
} }
public void setReleased(String released) { public void setReleased(String released) {
this.released = released; this.released = released == null ? "N/A" : released;
} }
public String getSeason() { public String getSeason() {
@ -127,7 +127,7 @@ public class OMDbAPIResponseDataType {
} }
public void setDirector(String director) { public void setDirector(String director) {
this.director = director; this.director = director == null ? "N/A" : director;
} }
public String getWriter() { public String getWriter() {
@ -135,7 +135,7 @@ public class OMDbAPIResponseDataType {
} }
public void setWriter(String writer) { public void setWriter(String writer) {
this.writer = writer; this.writer = writer == null ? "N/A" : writer;
} }
public String getActors() { public String getActors() {
@ -143,7 +143,7 @@ public class OMDbAPIResponseDataType {
} }
public void setActors(String actors) { public void setActors(String actors) {
this.actors = actors; this.actors = actors == null ? "N/A" : actors;
} }
public String getPlot() { public String getPlot() {
@ -151,7 +151,7 @@ public class OMDbAPIResponseDataType {
} }
public void setPlot(String plot) { public void setPlot(String plot) {
this.plot = plot; this.plot = plot == null ? "N/A" : plot;
} }
public String getLanguage() { public String getLanguage() {
@ -159,7 +159,7 @@ public class OMDbAPIResponseDataType {
} }
public void setLanguage(String language) { public void setLanguage(String language) {
this.language = language; this.language = language == null ? "N/A" : language;
} }
public String getCountry() { public String getCountry() {
@ -167,7 +167,7 @@ public class OMDbAPIResponseDataType {
} }
public void setCountry(String country) { public void setCountry(String country) {
this.country = country; this.country = country == null ? "N/A" : country;
} }
public String getAwards() { public String getAwards() {
@ -175,7 +175,7 @@ public class OMDbAPIResponseDataType {
} }
public void setAwards(String awards) { public void setAwards(String awards) {
this.awards = awards; this.awards = awards == null ? "N/A" : awards;
} }
public String getPoster() { public String getPoster() {
@ -191,7 +191,7 @@ public class OMDbAPIResponseDataType {
} }
public void setMetascore(String metascore) { public void setMetascore(String metascore) {
this.metascore = metascore; this.metascore = metascore == null ? "N/A" : metascore;
} }
public String getImdbRating() { public String getImdbRating() {
@ -199,7 +199,7 @@ public class OMDbAPIResponseDataType {
} }
public void setImdbRating(String imdbRating) { public void setImdbRating(String imdbRating) {
this.imdbRating = imdbRating; this.imdbRating = imdbRating == null ? "N/A" : imdbRating;
} }
public String getImdbVotes() { public String getImdbVotes() {
@ -207,7 +207,7 @@ public class OMDbAPIResponseDataType {
} }
public void setImdbVotes(String imdbVotes) { public void setImdbVotes(String imdbVotes) {
this.imdbVotes = imdbVotes; this.imdbVotes = imdbVotes == null ? "N/A" : imdbVotes;
} }
public String getImdbID() { public String getImdbID() {
@ -231,7 +231,7 @@ public class OMDbAPIResponseDataType {
} }
public void setDvd(String dvd) { public void setDvd(String dvd) {
this.dvd = dvd; this.dvd = dvd == null ? "N/A" : dvd;
} }
public String getBoxOffice() { public String getBoxOffice() {
@ -239,7 +239,7 @@ public class OMDbAPIResponseDataType {
} }
public void setBoxOffice(String boxOffice) { public void setBoxOffice(String boxOffice) {
this.boxOffice = boxOffice; this.boxOffice = boxOffice == null ? "N/A" : boxOffice;
} }
public String getProduction() { public String getProduction() {
@ -247,7 +247,7 @@ public class OMDbAPIResponseDataType {
} }
public void setProduction(String production) { public void setProduction(String production) {
this.production = production; this.production = production == null ? "N/A" : production;
} }
public String getWebsite() { public String getWebsite() {
@ -255,7 +255,7 @@ public class OMDbAPIResponseDataType {
} }
public void setWebsite(String website) { public void setWebsite(String website) {
this.website = website; this.website = website == null ? "N/A" : website;
} }
public String getResponse() { public String getResponse() {

View File

@ -20,7 +20,7 @@
* *
*/ */
package kellerkinder.HomeFlix.datatypes; package org.mosad.homeflix.datatypes;
import com.jfoenix.controls.JFXButton; import com.jfoenix.controls.JFXButton;

View File

@ -1,11 +1,12 @@
package kellerkinder.HomeFlix.datatypes; package org.mosad.homeflix.datatypes;
import org.mosad.homeflix.player.Player;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import javafx.scene.image.ImageView; import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent; import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
import kellerkinder.HomeFlix.player.Player;
public class SeriresDVEpisode extends AnchorPane { public class SeriresDVEpisode extends AnchorPane {

View File

@ -18,7 +18,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA. * MA 02110-1301, USA.
*/ */
package kellerkinder.HomeFlix.datatypes; package org.mosad.homeflix.datatypes;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty; import javafx.beans.property.StringProperty;

View File

@ -20,7 +20,7 @@
* *
*/ */
package kellerkinder.HomeFlix.player; package org.mosad.homeflix.player;
import uk.co.caprica.vlcj.media.MediaRef; import uk.co.caprica.vlcj.media.MediaRef;
import uk.co.caprica.vlcj.media.TrackType; import uk.co.caprica.vlcj.media.TrackType;

View File

@ -20,7 +20,7 @@
* *
*/ */
package kellerkinder.HomeFlix.player; package org.mosad.homeflix.player;
import java.awt.Desktop; import java.awt.Desktop;
import java.io.BufferedReader; import java.io.BufferedReader;
@ -31,6 +31,7 @@ import java.net.URLConnection;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.mosad.homeflix.application.Main;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Scene; import javafx.scene.Scene;
@ -38,7 +39,6 @@ import javafx.scene.image.Image;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.Pane; import javafx.scene.layout.Pane;
import javafx.stage.Stage; import javafx.stage.Stage;
import kellerkinder.HomeFlix.application.Main;
public class Player { public class Player {

View File

@ -20,13 +20,17 @@
* *
*/ */
package kellerkinder.HomeFlix.player; package org.mosad.homeflix.player;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.mosad.homeflix.controller.DBController;
import org.mosad.homeflix.controller.XMLController;
import org.mosad.homeflix.datatypes.FilmTabelDataType;
import com.jfoenix.controls.JFXButton; import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXSlider; import com.jfoenix.controls.JFXSlider;
@ -47,9 +51,6 @@ import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import javafx.scene.media.MediaView; import javafx.scene.media.MediaView;
import kellerkinder.HomeFlix.controller.DBController;
import kellerkinder.HomeFlix.controller.XMLController;
import kellerkinder.HomeFlix.datatypes.FilmTabelDataType;
import uk.co.caprica.vlcj.factory.MediaPlayerFactory; import uk.co.caprica.vlcj.factory.MediaPlayerFactory;
import uk.co.caprica.vlcj.player.base.MediaPlayer; import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer; import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;

View File

@ -12,7 +12,7 @@
<?import javafx.scene.text.Text?> <?import javafx.scene.text.Text?>
<?import javafx.scene.text.TextFlow?> <?import javafx.scene.text.TextFlow?>
<AnchorPane fx:id="filmDVPane" prefHeight="568.0" prefWidth="1130.0" style="-fx-background-color: #595959;" visible="false" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="kellerkinder.HomeFlix.application.FilmDetailView"> <AnchorPane fx:id="filmDVPane" prefHeight="568.0" prefWidth="1130.0" style="-fx-background-color: #595959;" visible="false" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.mosad.homeflix.application.FilmDetailView">
<children> <children>
<HBox layoutX="22.0" layoutY="21.0" prefWidth="808.0" spacing="10.0" AnchorPane.leftAnchor="22.0" AnchorPane.rightAnchor="300.0" AnchorPane.topAnchor="22.0"> <HBox layoutX="22.0" layoutY="21.0" prefWidth="808.0" spacing="10.0" AnchorPane.leftAnchor="22.0" AnchorPane.rightAnchor="300.0" AnchorPane.topAnchor="22.0">
<children> <children>

View File

@ -10,7 +10,7 @@
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<AnchorPane fx:id="mainAnchorPane" prefHeight="600.0" prefWidth="1130.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="kellerkinder.HomeFlix.application.MainWindowController"> <AnchorPane fx:id="mainAnchorPane" prefHeight="600.0" prefWidth="1130.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.mosad.homeflix.application.MainWindowController">
<children> <children>
<ScrollPane fx:id="posterModeScrollPane" fitToWidth="true" layoutX="10.0" layoutY="48.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="32.0"> <ScrollPane fx:id="posterModeScrollPane" fitToWidth="true" layoutX="10.0" layoutY="48.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="32.0">
<content> <content>

View File

@ -14,7 +14,7 @@
<?import javafx.scene.text.Text?> <?import javafx.scene.text.Text?>
<?import javafx.scene.text.TextFlow?> <?import javafx.scene.text.TextFlow?>
<AnchorPane fx:id="seriesDVPane" prefHeight="568.0" prefWidth="1130.0" style="-fx-background-color: #595959;" visible="false" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="kellerkinder.HomeFlix.application.SeriesDetailView"> <AnchorPane fx:id="seriesDVPane" prefHeight="568.0" prefWidth="1130.0" style="-fx-background-color: #595959;" visible="false" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.mosad.homeflix.application.SeriesDetailView">
<children> <children>
<HBox layoutX="22.0" layoutY="21.0" prefWidth="808.0" spacing="10.0" AnchorPane.leftAnchor="22.0" AnchorPane.rightAnchor="310.0" AnchorPane.topAnchor="22.0"> <HBox layoutX="22.0" layoutY="21.0" prefWidth="808.0" spacing="10.0" AnchorPane.leftAnchor="22.0" AnchorPane.rightAnchor="310.0" AnchorPane.topAnchor="22.0">
<children> <children>

View File

@ -16,7 +16,7 @@
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<ScrollPane fx:id="settingsScrollPane" fitToHeight="true" fitToWidth="true" prefHeight="568.0" prefWidth="980.0" style="-fx-background-color: #ffffff;" visible="false" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="kellerkinder.HomeFlix.application.SettingsView"> <ScrollPane fx:id="settingsScrollPane" fitToHeight="true" fitToWidth="true" prefHeight="568.0" prefWidth="980.0" style="-fx-background-color: #ffffff;" visible="false" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.mosad.homeflix.application.SettingsView">
<content> <content>
<AnchorPane fx:id="settingsAnchorPane" style="-fx-background-color: #ffffff;"> <AnchorPane fx:id="settingsAnchorPane" style="-fx-background-color: #ffffff;">
<children> <children>