From 15009a1047d4a1b984a22264ed9cd5e22133589b Mon Sep 17 00:00:00 2001 From: Seil0 Date: Thu, 2 Feb 2017 20:41:38 +0100 Subject: [PATCH] worked on dbcontroller part 6 / favIcons --- bin/application/DBController.class | Bin 13074 -> 14091 bytes bin/application/MainWindowController$1.class | Bin 2524 -> 2524 bytes bin/application/MainWindowController$2.class | Bin 2799 -> 2799 bytes bin/application/MainWindowController$3.class | Bin 1571 -> 1571 bytes bin/application/MainWindowController$4.class | Bin 1991 -> 1991 bytes bin/application/MainWindowController$5.class | Bin 2509 -> 2509 bytes bin/application/MainWindowController$6.class | Bin 2469 -> 2469 bytes bin/application/MainWindowController.class | Bin 34289 -> 34512 bytes bin/application/streamUiData.class | Bin 3375 -> 4238 bytes src/application/DBController.java | 62 +++++--- src/application/MainWindowController.java | 88 ++++++----- src/application/streamUiData.java | 147 +++++++++++-------- 12 files changed, 170 insertions(+), 127 deletions(-) diff --git a/bin/application/DBController.class b/bin/application/DBController.class index e947aed668ea4b65b196824cb50be7a4be2088ba..d674821300f137ad999350187556a2d8fe9b871e 100644 GIT binary patch literal 14091 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 literal 13074 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 GeEdIvF#9zC diff --git a/bin/application/MainWindowController$1.class b/bin/application/MainWindowController$1.class index 1b2b0b04197f477be9afd43fedd76e8fa28ea3ea..03a46a6341dddc496a84fd31d56538f0c1b722c5 100644 GIT binary patch delta 51 zcmca3d`Eag5eH-JIfOwkM`Ofd}pOtB1EOmPflOz{luObHB=m=Y(a Hah3r9XbTMC diff --git a/bin/application/MainWindowController$2.class b/bin/application/MainWindowController$2.class index a05efd9d85839ee8da113c6cf692d48b53364e42..eb38fcec9e90c9720b7a24f3b96d22d8b9063783 100644 GIT binary patch delta 72 zcmaDa`d)Oy6b{Ck%~LsC7)|RL_?Q|Pl$aVB9GRLK+?iS!3Yl6N`ho13Oq~q#nYtLx a0qI9fJq%x%dKvyQ^)a$AO_F^j diff --git a/bin/application/MainWindowController$5.class b/bin/application/MainWindowController$5.class index 74053a84ee4729f6c5bcdcaa2377ace6300d2c22..8d32ae59d7111c086cf38c4b83e93b7f31abe9e4 100644 GIT binary patch delta 71 zcmV-N0J#6n6U`H_@&^H>lk*4rHK+g&0;vEw0;&K!0;>RK0<8dd0S30;~YA0<8eF01z`0>A(~0>J=g0>c1z0>uE20>%K70>=QJ d0>}WQ0?7cX0?Gie0?Poj0?h!s0?w2B2&#-f8UFwP delta 71 zcmV-N0J#696QvWd$_D|nlgkJDHMRf`0=ED;0=NJ?0=WQY0=ocr0=)o_0=@u~0>1#B d0>A*I0>J>P0>S{W0>c2b0>uEk0>+d32&#Oy8HWG> diff --git a/bin/application/MainWindowController.class b/bin/application/MainWindowController.class index f22111860e6a61bc6676a382f517dd6ee243c681..ac7d7ab3267c8bea5284264928cf82b7d1ec3af1 100644 GIT binary patch literal 34512 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 diff --git a/bin/application/streamUiData.class b/bin/application/streamUiData.class index d0821f1a0a665edbeb61c31582cfc12f03cd0321..034c7a23777cb748bfda8dbf68a8684acab5881f 100644 GIT binary patch literal 4238 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 diff --git a/src/application/DBController.java b/src/application/DBController.java index f6d0c2c..47f3f6e 100644 --- a/src/application/DBController.java +++ b/src/application/DBController.java @@ -24,6 +24,9 @@ import com.eclipsesource.json.JsonArray; import com.eclipsesource.json.JsonObject; import com.eclipsesource.json.JsonValue; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; + public class DBController { public DBController(MainWindowController m) { @@ -32,6 +35,8 @@ public class DBController { private MainWindowController mainWindowController; private String DB_PATH = System.getProperty("user.home") + "\\Documents\\HomeFlix" + "\\" + "Homeflix.db"; // der Pfad der Datenbank-Datei + private ImageView favorite_black = new ImageView(new Image("recources/icons/ic_favorite_black_18dp_1x.png")); + private ImageView favorite_border_black = new ImageView(new Image("recources/icons/ic_favorite_border_black_18dp_1x.png")); private List filmsdbAll = new ArrayList(); private List filmsdbLocal = new ArrayList(); private List filmsdbStream = new ArrayList(); @@ -68,15 +73,15 @@ public class DBController { } void createDatabase() { - System.out.println("<=====starting loading sql=====>"); + System.out.println("<==========starting loading sql==========>"); PreparedStatement ps; PreparedStatement psS; try { Statement stmt = connection.createStatement(); - stmt.executeUpdate("create table if not exists film_local (rating, titel, streamUrl)"); - stmt.executeUpdate("create table if not exists film_streaming (year, season, episode, rating, resolution, titel, streamUrl)"); + stmt.executeUpdate("create table if not exists film_local (rating, titel, streamUrl, favIcon)"); + stmt.executeUpdate("create table if not exists film_streaming (year, season, episode, rating, resolution, titel, streamUrl, favIcon)"); stmt.close(); } catch (SQLException e1) { e1.printStackTrace(); @@ -134,14 +139,15 @@ public class DBController { System.out.println("creating entries ..."); try{ - ps = connection.prepareStatement("insert into film_local values (?, ?, ?)"); - psS = connection.prepareStatement("insert into film_streaming values (?, ?, ?, ?, ?, ?, ?)"); + ps = connection.prepareStatement("insert into film_local values (?, ?, ?, ?)"); + psS = connection.prepareStatement("insert into film_streaming values (?, ?, ?, ?, ?, ?, ?, ?)"); for(int j=0;j!=entries.length;j++) // Geht alle Dateien im Verzeichniss durch { ps.setInt(1, 0); // definiert Bewertung als Integer in der dritten Spalte ps.setString(2, cutOffEnd(entries[j])); // definiert Name als String in der ersten Spalte ps.setString(3,entries[j]); // definiert Pfad als String in der zweiten Spalte + ps.setString(4, "favorite_border_black"); ps.addBatch(); // fügt den Eintrag hinzu } @@ -161,6 +167,7 @@ public class DBController { 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.addBatch(); // fügt den Eintrag hinzu } } catch (IOException e) { @@ -201,7 +208,7 @@ public class DBController { Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM film_local"); while (rs.next()) { - mainWindowController.newDaten.add(new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3))); + mainWindowController.newDaten.add(new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), favorite_border_black)); } stmt.close(); rs.close(); @@ -209,7 +216,7 @@ public class DBController { //load streaming Data TODO check if there are streaming data before loading -> maybe there is an issue now rs = stmt.executeQuery("SELECT * FROM film_streaming;"); while (rs.next()) { - mainWindowController.streamData.add(new streamUiData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7))); + mainWindowController.streamData.add(new streamUiData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7), favorite_border_black)); } stmt.close(); rs.close(); @@ -217,7 +224,7 @@ public class DBController { System.err.println("Ups! an error occured!"); e.printStackTrace(); } - System.out.println("<=====finished loading sql=====>"); + System.out.println("<==========finished loading sql==========>"); } //refreshs the data in mainWindowController.newDaten and mainWindowController.streamData @@ -229,14 +236,22 @@ public class DBController { try { stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM film_local WHERE titel = '"+name+"';" ); - mainWindowController.newDaten.set(i, new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3))); + if(rs.getString(4).equals("favorite_black")){ + mainWindowController.newDaten.set(i, new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), favorite_black)); + }else{ + mainWindowController.newDaten.set(i, new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), favorite_border_black)); + } stmt.close(); rs.close(); } catch (SQLException e) { try { stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM film_streaming WHERE titel = '"+name+"';" ); - mainWindowController.streamData.set(i,new streamUiData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7))); + if(rs.getString(8).equals("favorite_black")){ + mainWindowController.streamData.set(i,new streamUiData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7), favorite_black)); + }else{ + mainWindowController.streamData.set(i,new streamUiData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7), favorite_border_black)); + } stmt.close(); rs.close(); } catch (SQLException e1) { @@ -276,13 +291,13 @@ public class DBController { System.out.println("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 root = new TreeItem<>(new streamUiData(1, 1, 1, 5.0,"1", "filme","1")); + TreeItem root = new TreeItem<>(new streamUiData(1, 1, 1, 5.0,"1", "filme","1", imv1)); @FXML - TreeTableColumn columnRating = new TreeTableColumn<>("Bewertung"); + TreeTableColumn columnRating = new TreeTableColumn<>("Rating"); @FXML - TreeTableColumn columnTitel = new TreeTableColumn<>("Name"); + TreeTableColumn columnTitel = new TreeTableColumn<>("Titel"); @FXML - TreeTableColumn columnStreamUrl = new TreeTableColumn<>("Datei Name"); + TreeTableColumn columnStreamUrl = new TreeTableColumn<>("File Name"); @FXML - TreeTableColumn columnResolution = new TreeTableColumn<>("Auflösung"); + TreeTableColumn columnResolution = new TreeTableColumn<>("Resolution"); @FXML - TreeTableColumn columnYear = new TreeTableColumn<>("Jahr"); + TreeTableColumn columnYear = new TreeTableColumn<>("Year"); @FXML - TreeTableColumn columnSeason = new TreeTableColumn<>("Staffel"); + TreeTableColumn columnSeason = new TreeTableColumn<>("Season"); @FXML TreeTableColumn columnEpisode = new TreeTableColumn<>("Episode"); @FXML - private TreeItem streamingRoot =new TreeItem<>(new streamUiData(1 ,1 ,1 ,1.0 ,"1" ,"filme" ,"1")); + private TreeItem streamingRoot =new TreeItem<>(new streamUiData(1 ,1 ,1 ,1.0 ,"1" ,"filme" ,"1", imv1)); @FXML private TableColumn dataNameColumn = new TableColumn<>("Datei Name"); @FXML @@ -252,9 +250,7 @@ public class MainWindowController { private ImageView skip_next_black = new ImageView(new Image("recources/icons/ic_skip_next_black_18dp_1x.png")); private ImageView play_arrow_white = new ImageView(new Image("recources/icons/ic_play_arrow_white_18dp_1x.png")); private ImageView play_arrow_black = new ImageView(new Image("recources/icons/ic_play_arrow_black_18dp_1x.png")); - @SuppressWarnings("unused") private ImageView favorite_black = new ImageView(new Image("recources/icons/ic_favorite_black_18dp_1x.png")); - @SuppressWarnings("unused") private ImageView favorite_border_black = new ImageView(new Image("recources/icons/ic_favorite_border_black_18dp_1x.png")); private DirectoryChooser directoryChooser = new DirectoryChooser(); private ContextMenu menu = new ContextMenu(); @@ -436,6 +432,7 @@ public class MainWindowController { @FXML private void debugBtnclicked(){ + newDaten.get(selected).setImage(favorite_black); //for testing } @@ -529,8 +526,8 @@ public class MainWindowController { // columnRating.setSortType(TreeTableColumn.SortType.ASCENDING); // } - debugBtn.setDisable(true); //debugging btn for tests - debugBtn.setVisible(false); + debugBtn.setDisable(false); //debugging btn for tests + debugBtn.setVisible(true); tfPath.setText(getPath()); @@ -554,41 +551,52 @@ public class MainWindowController { } //initialisierung der Tabellen für filme(beide Modi) und Streaming-Settings - @SuppressWarnings({ "unchecked", "rawtypes" }) + @SuppressWarnings({ "unchecked"}) private void initTabel(){ //filmtabelle - columnRating.setMaxWidth(120); - columnTitel.setMaxWidth(240); + columnRating.setMaxWidth(80); + columnTitel.setMaxWidth(260); columnStreamUrl.setMaxWidth(0); - dataNameColumn.setPrefWidth(130); + dataNameColumn.setPrefWidth(150); dataNameEndColumn.setPrefWidth(170); + columnRating.setStyle("-fx-alignment: CENTER;"); treeTableViewfilm.setRoot(root); treeTableViewfilm.setColumnResizePolicy( TreeTableView.CONSTRAINED_RESIZE_POLICY ); treeTableViewfilm.setShowRoot(false); //inhalt in Zelle schreiben - columnTitel.setCellValueFactory((CellDataFeatures p) -> - new ReadOnlyStringWrapper(p.getValue().getValue().getTitel())); - - columnRating.setCellValueFactory((CellDataFeatures p) -> - new ReadOnlyObjectWrapper(p.getValue().getValue().getRating())); +// columnTitel.setCellValueFactory((CellDataFeatures p) -> +// new ReadOnlyStringWrapper(p.getValue().getValue().getTitel())); +// +// columnRating.setCellValueFactory((CellDataFeatures p) -> +// new ReadOnlyObjectWrapper(p.getValue().getValue().getRating())); +// +// columnStreamUrl.setCellValueFactory((CellDataFeatures p) -> +// new ReadOnlyStringWrapper(p.getValue().getValue().getStreamUrl())); +// +// columnResolution.setCellValueFactory((CellDataFeatures p) -> +// new ReadOnlyStringWrapper(p.getValue().getValue().getResolution())); +// +// columnYear.setCellValueFactory((CellDataFeatures p) -> +// new ReadOnlyObjectWrapper(p.getValue().getValue().getYear())); +// +// columnSeason.setCellValueFactory((CellDataFeatures p) -> +// new ReadOnlyObjectWrapper(p.getValue().getValue().getSeason())); +// +// columnEpisode.setCellValueFactory((CellDataFeatures p) -> +// new ReadOnlyObjectWrapper(p.getValue().getValue().getEpisode())); - columnStreamUrl.setCellValueFactory((CellDataFeatures p) -> - new ReadOnlyStringWrapper(p.getValue().getValue().getStreamUrl())); - columnResolution.setCellValueFactory((CellDataFeatures p) -> - new ReadOnlyStringWrapper(p.getValue().getValue().getResolution())); - - columnYear.setCellValueFactory((CellDataFeatures p) -> - new ReadOnlyObjectWrapper(p.getValue().getValue().getYear())); - - columnSeason.setCellValueFactory((CellDataFeatures p) -> - new ReadOnlyObjectWrapper(p.getValue().getValue().getSeason())); - - columnEpisode.setCellValueFactory((CellDataFeatures p) -> - new ReadOnlyObjectWrapper(p.getValue().getValue().getEpisode())); + //write content into cell (new) + columnTitel.setCellValueFactory(cellData -> cellData.getValue().getValue().titelProperty()); + columnRating.setCellValueFactory(cellData -> cellData.getValue().getValue().imageProperty()); + columnStreamUrl.setCellValueFactory(cellData -> cellData.getValue().getValue().streamUrlProperty()); + columnResolution.setCellValueFactory(cellData -> cellData.getValue().getValue().resolutionProperty()); + columnYear.setCellValueFactory(cellData -> cellData.getValue().getValue().yearProperty().asObject()); + columnSeason.setCellValueFactory(cellData -> cellData.getValue().getValue().seasonProperty().asObject()); + columnEpisode.setCellValueFactory(cellData -> cellData.getValue().getValue().episodeProperty().asObject()); treeTableViewfilm.getColumns().addAll(columnTitel, columnRating, columnStreamUrl, columnResolution, columnYear, columnSeason, columnEpisode); treeTableViewfilm.getColumns().get(2).setVisible(false); //blendet die Column mit den Dateinamen aus (wichtig um sie abzuspielen) @@ -724,8 +732,8 @@ public class MainWindowController { for(int i = 0; i < newDaten.size(); i++){ root.getChildren().add(new TreeItem(newDaten.get(i))); //fügt daten zur Rootnode hinzu } - columnRating.setMaxWidth(120); - columnTitel.setMaxWidth(240); + columnRating.setMaxWidth(80); + columnTitel.setMaxWidth(280); treeTableViewfilm.getColumns().get(3).setVisible(false); treeTableViewfilm.getColumns().get(4).setVisible(false); treeTableViewfilm.getColumns().get(5).setVisible(false); @@ -756,7 +764,7 @@ public class MainWindowController { if(entries[i].endsWith(".json")){ String titel = ohneEndung(entries[i]); String data = entries[i]; - streamingData.add(new streamUiData(1,1,1,5.0,"1",titel ,data)); + streamingData.add(new streamUiData(1,1,1,5.0,"1",titel ,data, imv1)); } } for(int i = 0; i < streamingData.size(); i++){ diff --git a/src/application/streamUiData.java b/src/application/streamUiData.java index 429d246..8f801c5 100644 --- a/src/application/streamUiData.java +++ b/src/application/streamUiData.java @@ -4,21 +4,24 @@ import javafx.beans.property.DoubleProperty; import javafx.beans.property.IntegerProperty; import javafx.beans.property.SimpleDoubleProperty; import javafx.beans.property.SimpleIntegerProperty; +import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; +import javafx.scene.image.ImageView; public class streamUiData { - private IntegerProperty year = new SimpleIntegerProperty(); - private IntegerProperty season = new SimpleIntegerProperty(); - private IntegerProperty episode = new SimpleIntegerProperty(); - private DoubleProperty rating = new SimpleDoubleProperty(); - private StringProperty resolution = new SimpleStringProperty(); - private StringProperty titel = new SimpleStringProperty(); - private StringProperty streamUrl = new SimpleStringProperty(); + private final IntegerProperty year = new SimpleIntegerProperty(); + private final IntegerProperty season = new SimpleIntegerProperty(); + private final IntegerProperty episode = new SimpleIntegerProperty(); + private final DoubleProperty rating = new SimpleDoubleProperty(); + private final StringProperty resolution = new SimpleStringProperty(); + private final StringProperty titel = new SimpleStringProperty(); + private final StringProperty streamUrl = new SimpleStringProperty(); + private final SimpleObjectProperty image = new SimpleObjectProperty<>(); //uiData ist der Typ der Daten in der TreeTabelView - public streamUiData (final int year, final int season, final int episode, final double rating, final String resolution, final String titel, final String streamUrl) { + public streamUiData (final int year, final int season, final int episode, final double rating, final String resolution, final String titel, final String streamUrl, final ImageView image) { this.year.set(year); this.season.set(season); this.episode.set(episode); @@ -26,63 +29,7 @@ public class streamUiData { this.resolution.set(resolution); this.titel.set(titel); this.streamUrl.set(streamUrl); - } - - public int getYear() { - return year.get(); - } - - public int getSeason() { - return season.get(); - } - - public int getEpisode() { - return episode.get(); - } - - public double getRating() { - return rating.get(); - } - - public String getResolution() { - return resolution.get(); - } - - public String getTitel() { - return titel.get(); - } - - public String getStreamUrl() { - return streamUrl.get(); - } - - - public void setYear(int year) { - this.year.set(year); - } - - public void setSeason(int season) { - this.season.set(season); - } - - public void setEpisode(int season) { - this.episode.set(season); - } - - public void setRating(int rating) { - this.rating.set(rating); - } - - public void setResolution(String resolution) { - this.resolution.set(resolution); - } - - public void setTitel(String titel) { - this.titel.set(titel); - } - - public void setStreamUrl(StringProperty streamUrl) { - this.streamUrl = streamUrl; + this.image.set(image); } public IntegerProperty yearProperty(){ @@ -112,4 +59,74 @@ public class streamUiData { public StringProperty streamUrlProperty(){ return streamUrl; } + + public SimpleObjectProperty imageProperty(){ + return image; + } + + + public final int getYear() { + return yearProperty().get(); + } + + public final int getSeason() { + return seasonProperty().get(); + } + + public final int getEpisode() { + return episodeProperty().get(); + } + + public final double getRating() { + return ratingProperty().get(); + } + + public final String getResolution() { + return resolutionProperty().get(); + } + + public final String getTitel() { + return titelProperty().get(); + } + + public final String getStreamUrl() { + return streamUrlProperty().get(); + } + + public final ImageView getImage() { + return imageProperty().get(); + } + + + public final void setYear(int year) { + yearProperty().set(year); + } + + public final void setSeason(int season) { + seasonProperty().set(season); + } + + public final void setEpisode(int season) { + episodeProperty().set(season); + } + + public final void setRating(int rating) { + ratingProperty().set(rating); + } + + public final void setResolution(String resolution) { + resolutionProperty().set(resolution); + } + + public final void setTitel(String titel) { + titelProperty().set(titel); + } + + public final void setStreamUrl(String streamUrl) { + streamUrlProperty().set(streamUrl); + } + + public final void setImage(ImageView image) { + imageProperty().set(image); + } }