code cleanup
This commit is contained in:
parent
8dbce96a25
commit
f14159407f
@ -64,11 +64,12 @@ public class DBController {
|
||||
private Image favorite_black = new Image("icons/ic_favorite_black_18dp_1x.png");
|
||||
private Image favorite_border_black = new Image("icons/ic_favorite_border_black_18dp_1x.png");
|
||||
private List<String> filmsdbAll = new ArrayList<String>();
|
||||
private List<String> filmsdbLocal = new ArrayList<String>();
|
||||
private List<String> filmsdbDir = new ArrayList<String>();
|
||||
private List<String> filmsdbStream = new ArrayList<String>();
|
||||
private List<String> filmsdbStreamURL = new ArrayList<String>();
|
||||
private List<String> filmsAll = new ArrayList<String>();
|
||||
private List<String> filmsDir = new ArrayList<String>();
|
||||
private List<String> filmsDirURL = new ArrayList<String>();
|
||||
private List<String> filmsStream = new ArrayList<String>();
|
||||
private List<String> filmsStreamURL = new ArrayList<String>();
|
||||
private List<String> filmsStreamData = new ArrayList<String>();
|
||||
@ -84,11 +85,7 @@ public class DBController {
|
||||
}
|
||||
|
||||
public void loadDatabase() {
|
||||
if (System.getProperty("os.name").equals("Linux")) {
|
||||
DB_PATH = System.getProperty("user.home") + "/HomeFlix/Homeflix.db";
|
||||
}else{
|
||||
DB_PATH = System.getProperty("user.home") + "\\Documents\\HomeFlix" + "\\" + "Homeflix.db";
|
||||
}
|
||||
DB_PATH = main.getDirectory() + "/Homeflix.db";
|
||||
try {
|
||||
// create a database connection
|
||||
connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH);
|
||||
@ -101,23 +98,30 @@ public class DBController {
|
||||
}
|
||||
|
||||
public void createDatabase() {
|
||||
PreparedStatement ps;
|
||||
PreparedStatement psS;
|
||||
|
||||
/**
|
||||
* if tables don't exist create them
|
||||
* cache table: streamUrl is primary key
|
||||
*/
|
||||
try {
|
||||
Statement stmt = connection.createStatement();
|
||||
stmt.executeUpdate("create table if not exists film_local (rating, titel, streamUrl, favIcon, cached)");
|
||||
stmt.executeUpdate("create table if not exists film_streaming (year, season, episode, rating, resolution, titel, streamUrl, favIcon, cached)");
|
||||
stmt.executeUpdate("create table if not exists film_streaming (year, season, episode,"
|
||||
+ " rating, resolution, titel, streamUrl, favIcon, cached)");
|
||||
stmt.executeUpdate("create table if not exists cache ("
|
||||
+ "streamUrl, Title, Year, Rated, Released, Runtime, Genre, Director, Writer,"
|
||||
+ " Actors, Plot, Language, Country, Awards, Metascore, imdbRating, imdbVotes,"
|
||||
+ " imdbID, Type, Poster, Response)");
|
||||
stmt.close();
|
||||
} catch (SQLException e) {
|
||||
LOGGER.error(e);
|
||||
}
|
||||
|
||||
|
||||
// get all entries from the tables
|
||||
try {
|
||||
Statement stmt = connection.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("SELECT * FROM film_local");
|
||||
while (rs.next()) {
|
||||
filmsdbLocal.add(rs.getString(2));
|
||||
filmsdbDir.add(rs.getString(2));
|
||||
}
|
||||
stmt.close();
|
||||
rs.close();
|
||||
@ -133,23 +137,22 @@ public class DBController {
|
||||
LOGGER.error("Ups! an error occured!", e);
|
||||
}
|
||||
|
||||
// getting all files from the selected directory TODO rework
|
||||
String[] entries = new File(mainWindowController.getPath()).list();
|
||||
if (mainWindowController.getPath().equals("") || mainWindowController.getPath() == null) {
|
||||
LOGGER.warn("no path selected!");
|
||||
} else if (new File(mainWindowController.getPath()).exists()) {
|
||||
LOGGER.info(entries.length);
|
||||
for (int i = 0; i != entries.length; i++) {
|
||||
filmsDir.add(cutOffEnd(entries[i]));
|
||||
// getting all files from the selected directory
|
||||
if (new File(mainWindowController.getPath()).exists()) {
|
||||
for (String entry : new File(mainWindowController.getPath()).list()) {
|
||||
filmsDir.add(cutOffEnd(entry));
|
||||
filmsDirURL.add(entry);
|
||||
// System.out.println(cutOffEnd(entry));
|
||||
// System.out.println(entry);
|
||||
}
|
||||
} else {
|
||||
LOGGER.error(mainWindowController.getPath() + "dosen't exist!");
|
||||
}
|
||||
|
||||
// getting all entries from the streaming lists
|
||||
for (int v = 0; v < mainWindowController.getStreamingData().size(); v++) {
|
||||
for (int i = 0; i < mainWindowController.getStreamingData().size(); i++) {
|
||||
String fileName = mainWindowController.getStreamingPath() + "/"
|
||||
+ mainWindowController.getStreamingData().get(v).getStreamUrl();
|
||||
+ mainWindowController.getStreamingData().get(i).getStreamUrl();
|
||||
try {
|
||||
JsonObject object = Json.parse(new FileReader(fileName)).asObject();
|
||||
JsonArray items = object.get("entries").asArray();
|
||||
@ -157,6 +160,10 @@ public class DBController {
|
||||
filmsStream.add(item.asObject().getString("titel", ""));
|
||||
filmsStreamURL.add(item.asObject().getString("streamUrl", ""));
|
||||
filmsStreamData.add(fileName);
|
||||
|
||||
// System.out.println(item.asObject().getString("titel", ""));
|
||||
// System.out.println(item.asObject().getString("streamUrl", ""));
|
||||
// System.out.println(fileName);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
@ -166,73 +173,18 @@ public class DBController {
|
||||
// add all entries to filmsAll and filmsdbAl, for later comparing
|
||||
filmsAll.addAll(filmsDir);
|
||||
filmsAll.addAll(filmsStream);
|
||||
filmsdbAll.addAll(filmsdbLocal);
|
||||
filmsdbAll.addAll(filmsdbDir);
|
||||
filmsdbAll.addAll(filmsdbStream);
|
||||
LOGGER.info("films in directory: " + filmsAll.size());
|
||||
LOGGER.info("filme in db: " + filmsdbAll.size());
|
||||
|
||||
|
||||
/**
|
||||
* if filmsdbAll.size() == 0 database is empty, we need to fill it else check if
|
||||
* there is something to remove or to add TODO separate local and streaming for
|
||||
* better error handling
|
||||
* if filmsdbAll.size() == 0 the database is empty, we need to fill it with loadFilms()
|
||||
* else check if there is something to remove or to add
|
||||
*/
|
||||
if (filmsdbAll.size() == 0) {
|
||||
LOGGER.info("Database is empty, creating tables ...");
|
||||
|
||||
try {
|
||||
ps = connection.prepareStatement("insert into film_local values (?, ?, ?, ?, ?)");
|
||||
psS = connection.prepareStatement("insert into film_streaming values (?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
|
||||
if (mainWindowController.getPath().equals("") || mainWindowController.getPath() == null) {
|
||||
LOGGER.warn("no path selected!");
|
||||
} else if (new File(mainWindowController.getPath()).exists()) {
|
||||
for (int j = 0; j != entries.length; j++) // goes through all the files in the directory
|
||||
{
|
||||
ps.setInt(1, 0); // rating as integer 1. column
|
||||
ps.setString(2, cutOffEnd(entries[j])); // name as String without ending 2. column
|
||||
ps.setString(3, entries[j]); // path as String 3. column
|
||||
ps.setString(4, "favorite_border_black");
|
||||
ps.setBoolean(5, false);
|
||||
ps.addBatch(); // add command to prepared statement
|
||||
}
|
||||
}
|
||||
|
||||
if (mainWindowController.getStreamingPath().equals("") || mainWindowController.getStreamingPath().equals(null)) {
|
||||
LOGGER.warn("no path selected!");
|
||||
} else {
|
||||
for (int i = 0; i < mainWindowController.getStreamingData().size(); i++) {
|
||||
String fileNamea = mainWindowController.getStreamingPath() + "/"
|
||||
+ mainWindowController.getStreamingData().get(i).getStreamUrl();
|
||||
try {
|
||||
JsonObject object = Json.parse(new FileReader(fileNamea)).asObject();
|
||||
JsonArray items = object.get("entries").asArray();
|
||||
for (JsonValue item : items) {
|
||||
psS.setInt(1, item.asObject().getInt("year", 0));
|
||||
psS.setInt(2, item.asObject().getInt("season", 0));
|
||||
psS.setInt(3, item.asObject().getInt("episode", 0));
|
||||
psS.setInt(4, 0);
|
||||
psS.setString(5, item.asObject().getString("resolution", ""));
|
||||
psS.setString(6, item.asObject().getString("titel", ""));
|
||||
psS.setString(7, item.asObject().getString("streamUrl", ""));
|
||||
psS.setString(8, "favorite_border_black");
|
||||
psS.setBoolean(9, false);
|
||||
psS.addBatch(); // add command to prepared statement
|
||||
}
|
||||
} catch (IOException e) {
|
||||
LOGGER.error(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
ps.executeBatch(); // execute statement to write entries into table
|
||||
psS.executeBatch();
|
||||
connection.commit();
|
||||
ps.close();
|
||||
psS.close();
|
||||
} catch (SQLException e) {
|
||||
LOGGER.error(e);
|
||||
}
|
||||
loadFilms();
|
||||
} else {
|
||||
// check if film added or removed
|
||||
try {
|
||||
checkAddEntry();
|
||||
checkRemoveEntry();
|
||||
@ -240,35 +192,80 @@ public class DBController {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// if cache table dosen't exist create it
|
||||
}
|
||||
|
||||
private void loadFilms() {
|
||||
PreparedStatement ps;
|
||||
PreparedStatement psS;
|
||||
LOGGER.info("Database is empty, filling tables ...");
|
||||
|
||||
try {
|
||||
Statement stmt = connection.createStatement();
|
||||
// streamUrl is primary key
|
||||
stmt.executeUpdate("create table if not exists cache ("
|
||||
+ "streamUrl, Title, Year, Rated, Released, Runtime, Genre, Director, Writer,"
|
||||
+ " Actors, Plot, Language, Country, Awards, Metascore, imdbRating, imdbVotes,"
|
||||
+" imdbID, Type, Poster, Response)"
|
||||
);
|
||||
stmt.close();
|
||||
ps = connection.prepareStatement("insert into film_local values (?, ?, ?, ?, ?)");
|
||||
psS = connection.prepareStatement("insert into film_streaming values (?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
|
||||
if (new File(mainWindowController.getPath()).exists()) {
|
||||
// go through all the files in the directory
|
||||
for (int j = 0; j != filmsDir.size(); j++)
|
||||
{
|
||||
ps.setInt(1, 0); // rating as integer 1. column
|
||||
ps.setString(2, filmsDir.get(j)); // name as String without ending 2. column
|
||||
ps.setString(3, filmsDirURL.get(j)); // path as String 3. column
|
||||
ps.setString(4, "favorite_border_black");
|
||||
ps.setBoolean(5, false);
|
||||
ps.addBatch(); // add command to prepared statement
|
||||
}
|
||||
}
|
||||
|
||||
if (mainWindowController.getStreamingPath().equals("") || mainWindowController.getStreamingPath().equals(null)) {
|
||||
LOGGER.warn("no path selected!");
|
||||
} else {
|
||||
for (int i = 0; i < mainWindowController.getStreamingData().size(); i++) {
|
||||
String fileNamea = mainWindowController.getStreamingPath() + "/"
|
||||
+ mainWindowController.getStreamingData().get(i).getStreamUrl();
|
||||
try {
|
||||
JsonObject object = Json.parse(new FileReader(fileNamea)).asObject();
|
||||
JsonArray items = object.get("entries").asArray();
|
||||
for (JsonValue item : items) {
|
||||
psS.setInt(1, item.asObject().getInt("year", 0));
|
||||
psS.setInt(2, item.asObject().getInt("season", 0));
|
||||
psS.setInt(3, item.asObject().getInt("episode", 0));
|
||||
psS.setInt(4, 0);
|
||||
psS.setString(5, item.asObject().getString("resolution", ""));
|
||||
psS.setString(6, item.asObject().getString("titel", ""));
|
||||
psS.setString(7, item.asObject().getString("streamUrl", ""));
|
||||
psS.setString(8, "favorite_border_black");
|
||||
psS.setBoolean(9, false);
|
||||
psS.addBatch(); // add command to prepared statement
|
||||
}
|
||||
} catch (IOException e) {
|
||||
LOGGER.error(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
ps.executeBatch(); // execute statement to write entries into table
|
||||
psS.executeBatch();
|
||||
connection.commit();
|
||||
ps.close();
|
||||
psS.close();
|
||||
} catch (SQLException e) {
|
||||
LOGGER.error(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// loading data from database to mainWindowController
|
||||
public void loadData(){
|
||||
public void loadData() {
|
||||
LOGGER.info("loading data to mwc ...");
|
||||
try {
|
||||
try {
|
||||
//load local Data
|
||||
Statement stmt = connection.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("SELECT * FROM film_local ORDER BY titel");
|
||||
while (rs.next()) {
|
||||
if(rs.getString(4).equals("favorite_black")){
|
||||
mainWindowController.getLocalFilms().add( new tableData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_black),rs.getBoolean(5)));
|
||||
}else{
|
||||
mainWindowController.getLocalFilms().add( new tableData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_border_black),rs.getBoolean(5)));
|
||||
if (rs.getString(4).equals("favorite_black")) {
|
||||
mainWindowController.getLocalFilms().add(new tableData(1, 1, 1, rs.getDouble(1), "1",
|
||||
rs.getString(2), rs.getString(3), new ImageView(favorite_black), rs.getBoolean(5)));
|
||||
} else {
|
||||
mainWindowController.getLocalFilms().add(new tableData(1, 1, 1, rs.getDouble(1), "1",
|
||||
rs.getString(2), rs.getString(3), new ImageView(favorite_border_black), rs.getBoolean(5)));
|
||||
}
|
||||
}
|
||||
stmt.close();
|
||||
@ -277,10 +274,14 @@ public class DBController {
|
||||
//load streaming Data FIXME check if there are streaming data before loading -> maybe there is an issue now
|
||||
rs = stmt.executeQuery("SELECT * FROM film_streaming ORDER BY titel;");
|
||||
while (rs.next()) {
|
||||
if(rs.getString(8).equals("favorite_black")){
|
||||
mainWindowController.getStreamingFilms().add(new tableData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7), new ImageView(favorite_black),rs.getBoolean(9)));
|
||||
}else{
|
||||
mainWindowController.getStreamingFilms().add(new tableData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7), new ImageView(favorite_border_black),rs.getBoolean(9)));
|
||||
if (rs.getString(8).equals("favorite_black")) {
|
||||
mainWindowController.getStreamingFilms().add(new tableData(rs.getInt(1),
|
||||
rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6),
|
||||
rs.getString(7), new ImageView(favorite_black),rs.getBoolean(9)));
|
||||
} else {
|
||||
mainWindowController.getStreamingFilms().add(new tableData(rs.getInt(1),
|
||||
rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6),
|
||||
rs.getString(7), new ImageView(favorite_border_black), rs.getBoolean(9)));
|
||||
}
|
||||
}
|
||||
stmt.close();
|
||||
@ -297,15 +298,17 @@ public class DBController {
|
||||
//FIXME it seems that there is an issue at the moment with streaming refreshing wrong entry if there is more than one with the same name
|
||||
public void refresh(String name, int i) throws SQLException {
|
||||
LOGGER.info("refresh ...");
|
||||
Statement stmt;
|
||||
Statement stmt;
|
||||
|
||||
try {
|
||||
stmt = connection.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("SELECT * FROM film_local WHERE titel = \""+name+"\";" );
|
||||
if(rs.getString(4).equals("favorite_black")){
|
||||
mainWindowController.getLocalFilms().set(i, new tableData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_black),rs.getBoolean(5)));
|
||||
}else{
|
||||
mainWindowController.getLocalFilms().set(i, new tableData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_border_black),rs.getBoolean(5)));
|
||||
if (rs.getString(4).equals("favorite_black")) {
|
||||
mainWindowController.getLocalFilms().set(i, new tableData(1, 1, 1, rs.getDouble(1), "1",
|
||||
rs.getString(2), rs.getString(3), new ImageView(favorite_black), rs.getBoolean(5)));
|
||||
} else {
|
||||
mainWindowController.getLocalFilms().set(i, new tableData(1, 1, 1, rs.getDouble(1), "1",
|
||||
rs.getString(2), rs.getString(3), new ImageView(favorite_border_black), rs.getBoolean(5)));
|
||||
}
|
||||
stmt.close();
|
||||
rs.close();
|
||||
@ -314,10 +317,14 @@ public class DBController {
|
||||
try {
|
||||
stmt = connection.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("SELECT * FROM film_streaming WHERE titel = \""+name+"\";" );
|
||||
if(rs.getString(8).equals("favorite_black")){
|
||||
mainWindowController.getStreamingFilms().set(i,new tableData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7), new ImageView(favorite_black),rs.getBoolean(9)));
|
||||
}else{
|
||||
mainWindowController.getStreamingFilms().set(i,new tableData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7), new ImageView(favorite_border_black),rs.getBoolean(9)));
|
||||
if (rs.getString(8).equals("favorite_black")) {
|
||||
mainWindowController.getStreamingFilms().set(i, new tableData(rs.getInt(1), rs.getInt(2),
|
||||
rs.getInt(3), rs.getDouble(4),rs.getString(5), rs.getString(6), rs.getString(7),
|
||||
new ImageView(favorite_black), rs.getBoolean(9)));
|
||||
} else {
|
||||
mainWindowController.getStreamingFilms().set(i, new tableData(rs.getInt(1), rs.getInt(2),
|
||||
rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7),
|
||||
new ImageView(favorite_border_black), rs.getBoolean(9)));
|
||||
}
|
||||
stmt.close();
|
||||
rs.close();
|
||||
@ -329,33 +336,32 @@ public class DBController {
|
||||
|
||||
/**
|
||||
* check if there are any entries that have been removed from the film-directory
|
||||
*
|
||||
* @throws SQLException
|
||||
*/
|
||||
private void checkRemoveEntry() throws SQLException {
|
||||
LOGGER.info("checking for entrys to remove to DB ...");
|
||||
Statement stmt = connection.createStatement();
|
||||
|
||||
for (int a = 0; a < filmsdbLocal.size(); a++) {
|
||||
if (!filmsDir.contains(filmsdbLocal.get(a))) {
|
||||
for (int i = 0; i < filmsdbDir.size(); i++) {
|
||||
if (!filmsDir.contains(filmsdbDir.get(i))) {
|
||||
try {
|
||||
stmt.executeUpdate("delete from film_local where titel = \"" + filmsdbLocal.get(a) + "\"");
|
||||
stmt.executeUpdate("delete from film_local where titel = \"" + filmsdbDir.get(i) + "\"");
|
||||
connection.commit();
|
||||
stmt.close();
|
||||
LOGGER.info("removed \"" + filmsdbLocal.get(a) + "\" from database");
|
||||
LOGGER.info("removed \"" + filmsdbDir.get(i) + "\" from database");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int b = 0; b < filmsdbStreamURL.size(); b++) {
|
||||
if (!filmsStreamURL.contains(filmsdbStreamURL.get(b))) {
|
||||
for (int j = 0; j < filmsdbStreamURL.size(); j++) {
|
||||
if (!filmsStreamURL.contains(filmsdbStreamURL.get(j))) {
|
||||
try {
|
||||
stmt.executeUpdate("delete from film_streaming where titel = \"" + filmsdbStream.get(b) + "\"");
|
||||
stmt.executeUpdate("delete from film_streaming where titel = \"" + filmsdbStream.get(j) + "\"");
|
||||
connection.commit();
|
||||
stmt.close();
|
||||
LOGGER.info("removed \"" + filmsdbStream.get(b) + "\" from database");
|
||||
LOGGER.info("removed \"" + filmsdbStream.get(j) + "\" from database");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -365,24 +371,21 @@ public class DBController {
|
||||
|
||||
/**
|
||||
* check if there are new films in the film-directory
|
||||
*
|
||||
* @throws SQLException
|
||||
* @throws FileNotFoundException
|
||||
* @throws IOException
|
||||
* if lastName != filmsStreamData.get(b) then set i = 0, file
|
||||
* changed
|
||||
* if lastName != filmsStreamData.get(b) then set i = 0, file changed
|
||||
*/
|
||||
private void checkAddEntry() throws SQLException, FileNotFoundException, IOException {
|
||||
String lastName = "";
|
||||
LOGGER.info("checking for entrys to add to DB ...");
|
||||
String[] entries = new File(mainWindowController.getPath()).list();
|
||||
Statement stmt = connection.createStatement();
|
||||
PreparedStatement ps = connection
|
||||
.prepareStatement("insert into film_streaming values (?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
PreparedStatement ps = connection.prepareStatement("insert into film_streaming values (?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
int i = 0;
|
||||
|
||||
for (int a = 0; a < filmsDir.size(); a++) {
|
||||
if (!filmsdbLocal.contains(filmsDir.get(a))) {
|
||||
if (!filmsdbDir.contains(filmsDir.get(a))) {
|
||||
stmt.executeUpdate("insert into film_local values (0, \"" + cutOffEnd(entries[a]) + "\", \""
|
||||
+ entries[a] + "\",\"favorite_border_black\",0)");
|
||||
connection.commit();
|
||||
@ -479,8 +482,7 @@ public class DBController {
|
||||
LOGGER.info("streaming:" + rsS.getString("rating") + ", " + rsS.getString("titel") + ", " + rsS.getString("favIcon"));
|
||||
stmtS.close();
|
||||
rsS.close();
|
||||
}
|
||||
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
LOGGER.error("Ups! an error occured!", e);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user