diff --git a/.gitignore b/.gitignore index c0f64a8..76de71e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ -dist/ -build/ +dist/ +build/ +/Sqlite/nbproject/private/ +/test/nbproject/private/ \ No newline at end of file diff --git a/lib/mysql-connector-java-5.1.40-bin.jar b/lib/mysql-connector-java-5.1.40-bin.jar deleted file mode 100644 index 60bef5c..0000000 Binary files a/lib/mysql-connector-java-5.1.40-bin.jar and /dev/null differ diff --git a/lib/sqlite-jdbc-3.15.1.jar b/lib/sqlite-jdbc-3.15.1.jar new file mode 100644 index 0000000..f628324 Binary files /dev/null and b/lib/sqlite-jdbc-3.15.1.jar differ diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml index c17496f..5c64cce 100644 --- a/nbproject/private/private.xml +++ b/nbproject/private/private.xml @@ -3,10 +3,26 @@ - file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/Search.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/CreateConnection.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/ItemDeleterController.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/BBSong.java file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/DataBase.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/TimerController.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/PlayList.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/CreatePlaylistController.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/Track.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/BeatBoxer.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/SongEditorController.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/Artist.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/Timer.fxml file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/Directory.java - file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/Show.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/PlaylistEditorController.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/BBScanner.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/Test.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/Album.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/BBGenerator.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/FolderChooserController.java + file:/C:/Users/SANJAY%20TAYAL/Documents/NetBeansProjects/BeatBoxer/src/beatboxer/BeatBoxerController.java diff --git a/nbproject/project.properties b/nbproject/project.properties index e3f1751..c7addcb 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -30,15 +30,14 @@ dist.javadoc.dir=${dist.dir}/javadoc endorsed.classpath= excludes= file.reference.jaudiotagger-2.2.3.jar=lib/jaudiotagger-2.2.3.jar -file.reference.mysql-connector-java-5.1.40-bin.jar-1=lib/mysql-connector-java-5.1.40-bin.jar includes=** # Non-JavaFX jar file creation is deactivated in JavaFX 2.0+ projects jar.archive.disabled=true jar.compress=false javac.classpath=\ - ${file.reference.mysql-connector-java-5.1.40-bin.jar-1}:\ ${file.reference.jaudiotagger-2.2.3.jar}:\ - ${javafx.classpath.extension} + ${javafx.classpath.extension}:\ + ${libs.SqlLite.classpath} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false diff --git a/src/beatboxer/AddTrack.java b/src/beatboxer/AddTrack.java deleted file mode 100644 index e520073..0000000 --- a/src/beatboxer/AddTrack.java +++ /dev/null @@ -1,20 +0,0 @@ -package beatboxer; - -import java.sql.*; - -public class AddTrack extends CreateConnection { - - public AddTrack(String trackName, String artistName, String albumName, String location, String genre) { - try { - PreparedStatement statement = con.prepareStatement("call addtrack(?,?,?,?,?)"); - statement.setString(1, trackName); - statement.setString(2, artistName); - statement.setString(3, albumName); - statement.setString(4, location.replace("\\", "/")); - statement.setString(5, genre); - statement.execute(); - } catch (SQLException e) { - - } - } -} diff --git a/src/beatboxer/Album.java b/src/beatboxer/Album.java new file mode 100644 index 0000000..5377eb7 --- /dev/null +++ b/src/beatboxer/Album.java @@ -0,0 +1,77 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package beatboxer; + +import java.sql.*; +import javafx.collections.ObservableList; + +/** + * + * @author SANJAY TAYAL + */ +public class Album extends CreateConnection { + + public ObservableList ShowAllAlbums() { + Statement count = null; + try { + count = con.createStatement(); + return BBGenerator.item(count.executeQuery("Select * from album order by albumname")); + } catch (SQLException e) { + + } finally { + if (count != null) { + try { + count.close(); + } catch (SQLException e) { + + } + } + } + return null; + } + + public ObservableList ShowAllTracksinAlbum(int albumId) { + PreparedStatement statement = null; + try { + String sql = "select trackid,trackname,artistname,albumname,location,genre,favourite from track natural join artist natural join album WHERE albumid = ? order by trackname"; + statement = con.prepareStatement(sql); + statement.setInt(1, albumId); + return BBGenerator.song(statement.executeQuery()); + } catch (SQLException e) { + + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } + } + return null; + + } + + public ObservableList SearchAlbum(String string) { + PreparedStatement statement = null; + try { + String sql = "select * from album WHERE albumname LIKE ? order by albumname"; + statement = con.prepareStatement(sql); + statement.setString(1, '%' + string + '%'); + return BBGenerator.item(statement.executeQuery()); + } catch (Exception e) { + return null; + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } + } + } +} diff --git a/src/beatboxer/Artist.java b/src/beatboxer/Artist.java new file mode 100644 index 0000000..774bc19 --- /dev/null +++ b/src/beatboxer/Artist.java @@ -0,0 +1,77 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package beatboxer; + +import java.sql.*; +import javafx.collections.ObservableList; + +/** + * + * @author SANJAY TAYAL + */ +public class Artist extends CreateConnection { + + public ObservableList ShowAllArtists() { + Statement count = null; + try { + count = con.createStatement(); + return BBGenerator.item(count.executeQuery("Select * from artist order by artistname")); + } catch (SQLException e) { + + } finally { + if (count != null) { + try { + count.close(); + } catch (SQLException e) { + + } + } + } + return null; + } + + public ObservableList ShowAllTracksByArtists(int artistId) { + PreparedStatement statement = null; + try { + String sql = "select trackid,trackname,artistname,albumname,location,genre,favourite from track natural join artist natural join album WHERE artistid = ? order by trackname"; + statement = con.prepareStatement(sql); + statement.setInt(1, artistId); + return BBGenerator.song(statement.executeQuery()); + } catch (SQLException e) { + + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } + } + return null; + + } + + public ObservableList SearchArtist(String string) { + PreparedStatement statement = null; + try { + String sql = "select * from artist WHERE artistname LIKE ? order by artistname"; + statement = con.prepareStatement(sql); + statement.setString(1, '%' + string + '%'); + return BBGenerator.item(statement.executeQuery()); + } catch (Exception e) { + return null; + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } + } + } +} diff --git a/src/beatboxer/BBGenerator.java b/src/beatboxer/BBGenerator.java index 686b527..3a45940 100644 --- a/src/beatboxer/BBGenerator.java +++ b/src/beatboxer/BBGenerator.java @@ -1,39 +1,41 @@ package beatboxer; + import javafx.collections.*; import java.sql.*; public class BBGenerator { - public static ObservableList item(ResultSet res){ - ObservableList list = FXCollections.observableArrayList(); - try { - while(res.next()){ - list.add(new BBItem(res.getInt(1),res.getString(2))); - } - } catch (SQLException e) { } - return list; - } - public static ObservableList song(ResultSet res){ - ObservableList list = FXCollections.observableArrayList(); - try { - while(res.next()){ - list.add(new BBSong(res.getInt("trackid"),res.getString("trackname"),res.getString("albumname"),res.getString("artistname"),res.getString("genre"),res.getString("location"), res.getBoolean("favourite"))); - } -// ObservableList l = FXCollections.observableArrayList(); -// for(BBSong song : list){ -// if(! l.contains(song)){ -// l.add(song); -// } -// } -// list = l; - } catch (SQLException e) { } - return list; - } - public static int find(ObservableList haystack, BBSong needle){ - for (int i = 0; i < haystack.size(); i++) { - if(haystack.get(i).getId()==needle.getId()) - return i; + + public static ObservableList item(ResultSet res) { + ObservableList list = FXCollections.observableArrayList(); + try { + while (res.next()) { + list.add(new BBItem(res.getInt(1), res.getString(2))); + } + res.close(); + } catch (SQLException e) { + } + return list; + } + + public static ObservableList song(ResultSet res) { + ObservableList list = FXCollections.observableArrayList(); + try { + while (res.next()) { + list.add(new BBSong(res.getInt("trackid"), res.getString("trackname"), res.getString("albumname"), res.getString("artistname"), res.getString("genre"), res.getString("location"), res.getBoolean("favourite"))); + } + res.close(); + } catch (SQLException e) { + } + return list; + } + + public static int find(ObservableList haystack, BBSong needle) { + for (int i = 0; i < haystack.size(); i++) { + if (haystack.get(i).getId() == needle.getId()) { + return i; } - return -1; } -} \ No newline at end of file + return -1; + } +} diff --git a/src/beatboxer/BBScanner.java b/src/beatboxer/BBScanner.java index 1343c32..c999d22 100644 --- a/src/beatboxer/BBScanner.java +++ b/src/beatboxer/BBScanner.java @@ -12,71 +12,89 @@ import javafx.collections.ObservableList; import org.jaudiotagger.audio.*; import org.jaudiotagger.tag.*; + /** * * @author kunal */ public class BBScanner { - private ArrayList songList=null; + + private ArrayList songList = null; private final Object obj = new Object(); private BBSong song; - private HashMap songDetailsMap = new HashMap<>(); - public BBScanner(){ + private HashMap songDetailsMap = new HashMap<>(); + + public BBScanner() { songList = new ArrayList<>(); } - public ArrayList scan(String directory){ + + public ArrayList scan(String directory) { File dir = new File(directory); - for(File file : dir.listFiles()){ - if(file.isDirectory()){ + for (File file : dir.listFiles()) { + if (file.isDirectory()) { scan(file.toPath().toString()); - } - else{ - if(file.getName().toLowerCase().endsWith(".mp3")){ + } else { + if (file.getName().toLowerCase().endsWith(".mp3") || file.getName().toLowerCase().endsWith(".m4a") || file.getName().toLowerCase().endsWith(".wmv")) { songList.add(file.getPath()); } } } return songList; } - public ArrayList scan(ArrayList dirs){ - for(String dir : dirs){ + + public ArrayList scan(ArrayList dirs) { + for (String dir : dirs) { scan(dirs); } return songList; } - public ArrayList getList(){ + + public ArrayList getList() { return songList; } - public void reset(){ + + public void reset() { songList.clear(); - + } - public static BBSong getMeta(String location){ - try{ - AudioFile a = AudioFileIO.read(new File(location)); - Tag tags = a.getTag(); - return new BBSong(-1,tags.getFirst(FieldKey.TITLE), - tags.getFirst(FieldKey.ALBUM), - tags.getFirst(FieldKey.ARTIST), - tags.getFirst(FieldKey.GENRE), - location); - } - catch(Exception e){ - ; + + public static BBSong getMeta(String location) { + File file = new File(location); + if (!file.getName().toLowerCase().endsWith(".mp3")) { + location = location.replace("\\", "/"); + int index = 0; + for (index = location.length() - 1;; index--) { + if (location.charAt(index) == '/') { + break; + } + } + return new BBSong(-1, location.substring(index + 1), "Unknown", "Unkown", "Unkown", location); + } else { + try { + AudioFile a = AudioFileIO.read(file); + Tag tags = a.getTag(); + return new BBSong(-1, tags.getFirst(FieldKey.TITLE), + tags.getFirst(FieldKey.ALBUM), + tags.getFirst(FieldKey.ARTIST), + tags.getFirst(FieldKey.GENRE), + location); + } catch (Exception e) { + ; + } } return null; } - public ObservableList getMeta(ArrayList paths){ + + public ObservableList getMeta(ArrayList paths) { ObservableList list = FXCollections.observableArrayList(); - try{ - for(String path: paths){ + try { + for (String path : paths) { list.add(getMeta(path)); } - } - catch (Exception e){ + } catch (Exception e) { ; } return list; } - + } diff --git a/src/beatboxer/BeatBoxer.java b/src/beatboxer/BeatBoxer.java index 594fb9e..19b826c 100644 --- a/src/beatboxer/BeatBoxer.java +++ b/src/beatboxer/BeatBoxer.java @@ -22,22 +22,25 @@ import javafx.stage.DirectoryChooser; import javafx.stage.Stage; import javafx.util.Duration; + /** * * @author kunal */ public class BeatBoxer extends Application { + public static MediaPlayer mediaPlayer; public static ObservableList nowPlaying; - public static boolean autoPlay=false; - public static int currentIndex=0; + public static boolean autoPlay = false; + public static int currentIndex = 0; public static StringProperty state; public static BBSong defaultSong; public static Timeline timer; public static double volume; + @Override public void start(Stage stage) throws Exception { - state= new SimpleStringProperty("Unknown"); + state = new SimpleStringProperty("Unknown"); nowPlaying = FXCollections.observableArrayList(); defaultSong = new BBSong(1, "", "", "", "", "0.mp3"); nowPlaying.add(defaultSong); @@ -47,120 +50,126 @@ public void start(Stage stage) throws Exception { scene.getStylesheets().add(getClass().getResource("stylesheet.css").toExternalForm()); stage.setScene(scene); stage.setTitle("BeatBoxer"); - stage.getIcons().add(new Image(BeatBoxer.class.getResourceAsStream( "images/BeatBoxer.png" ))); + stage.getIcons().add(new Image(BeatBoxer.class.getResourceAsStream("images/BeatBoxer.png"))); stage.show(); // mediaPlayer.play(); - state.addListener(new ChangeListener(){ + state.addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, String oldValue, String newValue) { - if(newValue.equals("autoPlayNext")){ + if (newValue.equals("autoPlayNext")) { // playNext(); - if(currentIndex==nowPlaying.size()-1){ - BBSong song = (nowPlaying.get(0)); - play(song); - if(!autoPlay) - mediaPlayer.pause(); - currentIndex=0; - } - else{ - BBSong song = (nowPlaying.get(++currentIndex)); - play(song); + if (currentIndex == nowPlaying.size() - 1) { + BBSong song = (nowPlaying.get(0)); + play(song); + if (!autoPlay) { + mediaPlayer.pause(); } - } - else if(newValue.equals("EOF")){ + currentIndex = 0; + } else { + BBSong song = (nowPlaying.get(++currentIndex)); + play(song); + } + } else if (newValue.equals("EOF")) { mediaPlayer.stop(); } - + } - + }); } - public static void play(){ - if(mediaPlayer.getStatus().equals(MediaPlayer.Status.PLAYING)){ + + public static void play() { + if (mediaPlayer.getStatus().equals(MediaPlayer.Status.PLAYING)) { mediaPlayer.pause(); - } - else { + } else { mediaPlayer.play(); } } - public static void playNext(){ - if(currentIndex==nowPlaying.size()-1){ - if(autoPlay){ + + public static void playNext() { + if (currentIndex == nowPlaying.size() - 1) { + if (autoPlay) { BBSong song = nowPlaying.get(0); - currentIndex=0; + currentIndex = 0; // System.out.println("a"); play(song); // System.out.println("b"); - } - else + } else { mediaPlayer.stop(); - } - else{ + } + } else { currentIndex++; BBSong song = nowPlaying.get(currentIndex); play(song); } } - - - - public static void play(BBSong track){ - mediaPlayer.dispose(); - mediaPlayer = toMediaPlayer(track.getLocation()); - initMediaPlayer(); - currentIndex = BBGenerator.find(nowPlaying, track); - mediaPlayer.setVolume(volume); - mediaPlayer.play(); + + public static void play(BBSong track) { + if (new File(track.getLocation()).exists()) { + mediaPlayer.dispose(); + mediaPlayer = toMediaPlayer(track.getLocation()); + initMediaPlayer(); + currentIndex = BBGenerator.find(nowPlaying, track); + mediaPlayer.setVolume(volume); + mediaPlayer.play(); + } else { + Track t = new Track(); + t.DeleteTrack(track.getId()); + nowPlaying.remove(track); + play(nowPlaying.get(currentIndex)); + } } - public static void initMediaPlayer(){ + + public static void initMediaPlayer() { mediaPlayer.currentTimeProperty().addListener(BeatBoxerController.currentTimePropertyListener); mediaPlayer.totalDurationProperty().addListener(BeatBoxerController.totalDurationPropertyListener); - mediaPlayer.seek(Duration.ZERO); + mediaPlayer.seek(Duration.ZERO); mediaPlayer.statusProperty().addListener(BeatBoxerController.statusPropertyListener); } - public static void hey(){ - System.out.println("YOLO"); - } - public static Media toMedia(String URI){ + + public static Media toMedia(String URI) { return (new Media(new File(URI).toURI().toString())); } - public static Media toMedia(BBSong song){ + + public static Media toMedia(BBSong song) { return (toMedia(song.getLocation())); } - public static MediaPlayer toMediaPlayer(String URI){ + + public static MediaPlayer toMediaPlayer(String URI) { return new MediaPlayer(toMedia(URI)); } - public static MediaPlayer toMediaPlayer(BBSong song){ + + public static MediaPlayer toMediaPlayer(BBSong song) { return toMediaPlayer(song.getLocation()); } - public static String getDirectory(){ + + public static String getDirectory() { DirectoryChooser chooser = new DirectoryChooser(); chooser.setTitle("JavaFX Projects"); - + File defaultDirectory = new File("/"); chooser.setInitialDirectory(defaultDirectory); File selectedDirectory = chooser.showDialog(new Stage()); - try{ + try { String path = selectedDirectory.getAbsolutePath(); return path; - } - catch(Exception e){ + } catch (Exception e) { return ""; } } + /** * @param args the command line arguments */ public static void main(String[] args) { - try{ + try { DataBase db = new DataBase(); db.CreateDataBase(); - } - catch(Exception e){ + } catch (Exception e) { ; } launch(args); System.exit(0); } - + } diff --git a/src/beatboxer/BeatBoxerController.java b/src/beatboxer/BeatBoxerController.java index 5a173af..f7061ba 100644 --- a/src/beatboxer/BeatBoxerController.java +++ b/src/beatboxer/BeatBoxerController.java @@ -5,8 +5,6 @@ */ package beatboxer; -import com.sun.deploy.uitoolkit.impl.fx.HostServicesFactory; -import com.sun.javafx.application.HostServicesDelegate; import java.awt.Desktop; import java.io.IOException; import java.net.URI; @@ -135,10 +133,12 @@ private void search() { return; } try { - Search se = new Search(); - songListView.setItems(se.SearchTrack(searchString)); - albumListView.setItems(se.SearchAlbum(searchString)); - artistListView.setItems(se.SearchArtist(searchString)); + Track track = new Track(); + Album album = new Album(); + Artist artist = new Artist(); + songListView.setItems(track.SearchTrack(searchString)); + albumListView.setItems(album.SearchAlbum(searchString)); + artistListView.setItems(artist.SearchArtist(searchString)); } catch (Exception e) { ; } @@ -147,13 +147,13 @@ private void search() { @FXML private void favourite() { try { - Favourites f = new Favourites(); + Track track = new Track(); BBSong song = getCurrentSong(); song.setFavourite(!song.isFavourite()); if (!song.isFavourite()) { - f.unfavourite(song.getId()); + track.unfavourite(song.getId()); } else { - f.favourite(song.getId()); + track.favourite(song.getId()); } BeatBoxer.nowPlaying.set(BeatBoxer.currentIndex, song); @@ -193,8 +193,8 @@ private void editItem() { nowPlayingListView.setItems(BeatBoxer.nowPlaying); } try { - Show show = new Show(); - ObservableList songList = show.ShowAllTracks(); + Track track = new Track(); + ObservableList songList = track.ShowAllTracks(); allsongsListView.setItems(songList); } catch (Exception e) { ; @@ -222,10 +222,10 @@ private void editItem() { stager.setTitle("Modify Playlist : " + selectedPlayList.getName()); stager.showAndWait(); playlistListView.setItems(null); - playlistListView.setItems(new Show().ShowAllPlayLists()); + playlistListView.setItems(new PlayList().ShowAllPlayLists()); } } catch (Exception e) { - System.out.println("Hello");; + ; } } @@ -245,9 +245,9 @@ private void deleteItem() throws Exception { } selectedSong = allsongsListView.getSelectionModel().getSelectedItem(); } - boolean rightNow=false; - if(BeatBoxer.nowPlaying.get(BeatBoxer.currentIndex).equals(selectedSong)){ - rightNow=true; + boolean rightNow = false; + if (BeatBoxer.nowPlaying.get(BeatBoxer.currentIndex).equals(selectedSong)) { + rightNow = true; } FXMLLoader loader = new FXMLLoader(getClass().getResource("ItemDeleter.fxml")); Parent itemDeleterRoot = (Parent) loader.load(); @@ -258,17 +258,17 @@ private void deleteItem() throws Exception { stager.setScene(songEditor); stager.setTitle("Delete Song : " + selectedSong.getName()); stager.showAndWait(); - if(!BeatBoxer.nowPlaying.contains(selectedSong) && rightNow){ + if (!BeatBoxer.nowPlaying.contains(selectedSong) && rightNow) { setVolumeValue(BeatBoxer.nowPlaying.get(BeatBoxer.currentIndex).getGenre()); } - if (new Show().ShowAllTracks().size() == 0 || BeatBoxer.nowPlaying.size() == 0) { + if (new Track().ShowAllTracks().size() == 0 || BeatBoxer.nowPlaying.size() == 0) { refresh(); } nowPlayingListView.setItems(BeatBoxer.nowPlaying); - allsongsListView.setItems(new Show().ShowAllTracks()); + allsongsListView.setItems(new Track().ShowAllTracks()); try { - Show show = new Show(); - ObservableList songList = show.ShowAllTracks(); + Track track = new Track(); + ObservableList songList = track.ShowAllTracks(); allsongsListView.setItems(songList); } catch (Exception e) { ; @@ -291,7 +291,7 @@ private void deleteItem() throws Exception { stager.setTitle("Delete Playlist : " + selectedPlayList.getName()); stager.showAndWait(); playlistListView.setItems(null); - playlistListView.setItems(new Show().ShowAllPlayLists()); + playlistListView.setItems(new PlayList().ShowAllPlayLists()); } } @@ -305,7 +305,7 @@ private void createPlaylist() { stager.setScene(createPlaylist); stager.setTitle("Create a new Playlist"); stager.showAndWait(); - playlistListView.setItems(new Show().ShowAllPlayLists()); + playlistListView.setItems(new PlayList().ShowAllPlayLists()); } catch (Exception e) { ; } @@ -382,15 +382,15 @@ private void showHelp() { } public void playAll() { //play All Songs - Show show = new Show(); - ObservableList allSongs = show.ShowAllTracks(); + Track track = new Track(); + ObservableList allSongs = track.ShowAllTracks(); BeatBoxer.nowPlaying.setAll(allSongs); } public void playAlbum(BBItem album) { try { - Show sh = new Show(); - ObservableList songList = sh.ShowAllTracksinAlbum(album.getId()); + Album al = new Album(); + ObservableList songList = al.ShowAllTracksinAlbum(album.getId()); BeatBoxer.nowPlaying.setAll(songList); for (BBSong song : songList) { // System.out.println(song); @@ -411,8 +411,8 @@ public void playAlbum(BBItem album) { public void playArtist(BBItem artist) { try { - Show sh = new Show(); - ObservableList songList = sh.ShowAllTracksByArtists(artist.getId()); + Artist at = new Artist(); + ObservableList songList = at.ShowAllTracksByArtists(artist.getId()); BeatBoxer.nowPlaying.setAll(songList); nowPlayingListView.setDisable(false); disablePlayGroup(false); @@ -465,10 +465,10 @@ private void refresh() { ObservableList playLists = FXCollections.observableArrayList(); // playLists.add(new BBItem(0, "All Songs")); // playLists.add(new BBItem(-1, "Favourites")); - playLists.addAll(new Show().ShowAllPlayLists()); - Show show = new Show(); - ObservableList songList = show.ShowAllTracks(); - if (songList.size() == 0) { + playLists.addAll(new PlayList().ShowAllPlayLists()); + Track track = new Track(); + ObservableList songList = track.ShowAllTracks(); + if (songList.isEmpty()) { allsongsListView.setDisable(true); playlistListView.setDisable(true); } @@ -483,33 +483,38 @@ private void refresh() { } public void playPlaylist(BBItem playlist) { - if (playlist.getId() == 0) { - playAll(); - } else if (playlist.getId() == -1) { - try { - Show sh = new Show(); - nowPlayingListView.setItems(sh.ShowAllFavourites()); - BeatBoxer.nowPlaying = sh.ShowAllFavourites(); - } catch (Exception e) { - ; - } - } else if (playlist.getId() == -2) { - try { - Show sh = new Show(); - nowPlayingListView.setItems(sh.ShowRecentlyAdded()); - BeatBoxer.nowPlaying = sh.ShowRecentlyAdded(); - } catch (Exception e) { - ; - } - } else { - try { - Show sh = new Show(); - ObservableList l = sh.ShowAllTracksinPlayList(playlist.getId()); - nowPlayingListView.setItems(l); - BeatBoxer.nowPlaying = l; - } catch (Exception e) { - ; - } + switch (playlist.getId()) { + case 0: + playAll(); + break; + case -1: + try { + Track track = new Track(); + nowPlayingListView.setItems(track.ShowAllFavourites()); + BeatBoxer.nowPlaying = track.ShowAllFavourites(); + } catch (Exception e) { + ; + } + break; + case -2: + try { + Track track = new Track(); + nowPlayingListView.setItems(track.ShowRecentlyAdded()); + BeatBoxer.nowPlaying = track.ShowRecentlyAdded(); + } catch (Exception e) { + ; + } + break; + default: + try { + PlayList pl = new PlayList(); + ObservableList l = pl.ShowAllTracksinPlayList(playlist.getId()); + nowPlayingListView.setItems(l); + BeatBoxer.nowPlaying = l; + } catch (Exception e) { + ; + } + break; } nowPlayingListView.setDisable(false); disablePlayGroup(false); @@ -561,8 +566,8 @@ public void changed(ObservableValue observable, Object oldValu for (MenuItem m : modeMenu.getItems()) { m.setOnAction(e -> { - Show sh = new Show(); - ObservableList list = sh.ShowByMode(m.getText()); + Track track = new Track(); + ObservableList list = track.ShowByMode(m.getText()); BeatBoxer.nowPlaying.clear(); BeatBoxer.nowPlaying.setAll(list); nowPlayingListView.setDisable(false); @@ -571,7 +576,7 @@ public void changed(ObservableValue observable, Object oldValu favouriteButton.setDisable(false); listViewTabPane.getSelectionModel().select(0); nowPlayingListView.setItems(BeatBoxer.nowPlaying); - if (BeatBoxer.nowPlaying.size() == 0) { + if (BeatBoxer.nowPlaying.isEmpty()) { disablePlayGroup(true); favouriteButton.setDisable(true); } else { @@ -619,14 +624,13 @@ public void changed( // bb.mediaPlayer.dispose(); // if(BeatBoxer.autoPlay){ BeatBoxer.state.setValue("autoPlayNext"); - if(BeatBoxer.currentIndex==BeatBoxer.nowPlaying.size()-1){ + if (BeatBoxer.currentIndex == BeatBoxer.nowPlaying.size() - 1) { BBSong song = (BeatBoxer.nowPlaying.get(0)); setVolumeValue(song.getGenre()); - } - else{ - BBSong song = (BeatBoxer.nowPlaying.get(BeatBoxer.currentIndex+1)); + } else { + BBSong song = (BeatBoxer.nowPlaying.get(BeatBoxer.currentIndex + 1)); setVolumeValue(song.getGenre()); - } + } // BeatBoxer.play(); // } // else diff --git a/src/beatboxer/CreateConnection.java b/src/beatboxer/CreateConnection.java index c0ef61d..7f1e538 100644 --- a/src/beatboxer/CreateConnection.java +++ b/src/beatboxer/CreateConnection.java @@ -8,8 +8,9 @@ public class CreateConnection { CreateConnection() { try { - con = DriverManager.getConnection("jdbc:mysql://localhost:3306/beatboxer", "root", "123"); - } catch (SQLException e) { + Class.forName("org.sqlite.JDBC"); + con = DriverManager.getConnection("jdbc:sqlite:beatboxer.db"); + } catch (Exception e) { } } diff --git a/src/beatboxer/CreatePlaylistController.java b/src/beatboxer/CreatePlaylistController.java index 82bf924..ce82cd5 100644 --- a/src/beatboxer/CreatePlaylistController.java +++ b/src/beatboxer/CreatePlaylistController.java @@ -56,8 +56,8 @@ private void checkName(KeyEvent event) throws Exception { ok.setDisable(true); errorLabel.setText(""); } else { - Show sh = new Show(); - ObservableList list = sh.ShowAllPlayLists(); + PlayList pl = new PlayList(); + ObservableList list = pl.ShowAllPlayLists(); for (BBItem playList : list) { if (playList.getName().equalsIgnoreCase(newPlaylist)) { ok.setDisable(true); diff --git a/src/beatboxer/DataBase.java b/src/beatboxer/DataBase.java index 8d64d93..3635316 100644 --- a/src/beatboxer/DataBase.java +++ b/src/beatboxer/DataBase.java @@ -2,15 +2,13 @@ import java.sql.*; -public class DataBase { +public class DataBase extends CreateConnection { public void CreateDataBase() { + Statement statement = null; try { - Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306", "root", "123"); - Statement check = con.createStatement(); - check.execute("create database beatboxer"); - check.execute("use beatboxer"); - check.execute("create table track(" + statement = con.createStatement(); + statement.execute("create table if not exists track(" + "trackid int primary key NOT NULL," + "artistid int NOT NULL," + "albumid int NOT NULL," @@ -18,157 +16,98 @@ public void CreateDataBase() { + "dateadded timestamp NOT NULL DEFAULT current_timestamp," + "location varchar(500) NOT NULL UNIQUE," + "genre varchar(30)," - + "favourite boolean default false)"); - check.execute("create table artist(" + + "favourite boolean default 0)"); + statement.clearBatch(); + } catch (Exception e) { + } + try { + statement = con.createStatement(); + statement.execute("create table if not exists artist(" + "artistid int primary key NOT NULL," + "artistname varchar(50) NOT NULL UNIQUE)"); - check.execute("create table album(" + statement.clearBatch(); + } catch (Exception e) { + } + try { + statement = con.createStatement(); + statement.execute("create table if not exists album(" + "albumid int primary key NOT NULL," + "albumname varchar(100) NOT NULL UNIQUE)"); - check.execute("create table directories(folderlocation varchar(500) NOT NULL UNIQUE)"); - check.execute("create table playlist(" + statement.clearBatch(); + } catch (Exception e) { + } + try { + statement = con.createStatement(); + statement.execute("create table if not exists directories(folderlocation varchar(500) NOT NULL UNIQUE)"); + statement.clearBatch(); + } catch (Exception e) { + } + try { + statement = con.createStatement(); + statement.execute("create table if not exists playlist(" + "playlistid int primary key NOT NULL," + "playlistname varchar(100) NOT NULL UNIQUE)"); - check.execute("create table playlistinfo(" + statement.clearBatch(); + } catch (Exception e) { + } + try { + statement = con.createStatement(); + statement.execute("create table if not exists playlistinfo(" + "playlistid int NOT NULL," + "trackid int NOT NULL," + "trackorder int NOT NULL," + "primary key(playlistid, trackid))"); - check.execute("create table id(newid int, playlistid int)"); - check.execute("insert into id values(1,1)"); - check.execute("create trigger incrementidinsert after insert on track for each row update id set newid = newid + 1"); - check.execute("create trigger incrementplaylistid after insert on playlist for each row update id set playlistid = playlistid + 1"); - check.execute("create trigger deleterefresh after delete on track " - + "for each row begin " + statement.clearBatch(); + } catch (Exception e) { + } + try { + statement = con.createStatement(); + statement.execute("create table id(newid int, playlistid int)"); + statement.clearBatch(); + statement.execute("insert into id values(1,1)"); + statement.clearBatch(); + } catch (Exception e) { + } + try { + statement = con.createStatement(); + statement.execute("create trigger if not exists incrementidinsert after insert on track begin update id set newid = newid + 1; end;"); + statement.clearBatch(); + } catch (Exception e) { + } + try { + statement = con.createStatement(); + statement.execute("create trigger if not exists incrementplaylistid after insert on playlist begin update id set playlistid = playlistid + 1; end;"); + statement.clearBatch(); + } catch (Exception e) { + } + try { + statement = con.createStatement(); + statement.execute("create trigger if not exists deleterefresh after delete on track " + + "begin " + "delete from album where albumid not in (select distinct albumid from track); " + "delete from artist where artistid not in (select distinct artistid from track); " - + "end"); - check.execute("create trigger updaterefresh after update on track " - + "for each row begin " + + "end;"); + statement.clearBatch(); + } catch (Exception e) { + } + try { + statement = con.createStatement(); + statement.execute("create trigger if not exists updaterefresh after update on track " + + "begin " + "delete from album where albumid not in (select distinct albumid from track); " + "delete from artist where artistid not in (select distinct artistid from track); " + "update id set newid = newid + 1;" - + "end"); - - check.execute("CREATE PROCEDURE addtrack(in trackname varchar(50),in artistname varchar(50),in albumname varchar(100),in location varchar(500),in genre varchar(30)) " - + "begin " - + "declare artistid int; " - + "declare albumid int; " - + "declare trackid int; " - + "set trackid = (select newid from id); " - + "set artistid = searchartist(artistname); " - + "set albumid = searchalbum(albumname); " - + "if (artistid = -1) then " - + " set artistid = (select newid from id); " - + " insert into artist values (artistid, artistname); " - + "end if; " - + "if (albumid = -1) then " - + " set albumid = (select newid from id); " - + " insert into album values (albumid, albumname); " - + "end if; " - + "insert into track(trackid,artistid,albumid,trackname,location,genre) values(trackid,artistid,albumid,trackname,location,genre); " - + "end"); - check.execute("CREATE PROCEDURE adddirectory(in location varchar(500)) " - + "BEGIN " - + "insert into directories values (location); " - + "END"); - check.execute("CREATE PROCEDURE deletedirectory(in location varchar(500)) " - + "BEGIN " - + "delete from playlistinfo where playlistinfo.trackid in (select track.trackid from track where track.location like concat(location, '%'));" - + "delete from track where track.location like concat(location, '%'); " - + "delete from directories where folderlocation = location; " - + "END"); - check.execute("CREATE PROCEDURE movetrack(in pid int, in tid int, in direction int) " - + "BEGIN " - + "declare swaptid int; " - + "declare torder int; " - + "set torder = (select trackorder from playlistinfo where playlistid = pid and trackid = tid); " - + "if(direction = 0) then " - + " set swaptid = (select trackid from playlistinfo where playlistid = pid and trackorder = torder - 1); " - + " update playlistinfo set trackorder = torder where playlistid = pid and trackid = swaptid; " - + " update playlistinfo set trackorder = torder - 1 where playlistid = pid and trackid = tid; " - + "else " - + " set swaptid = (select trackid from playlistinfo where playlistid = pid and trackorder = torder + 1); " - + " update playlistinfo set trackorder = torder where playlistid = pid and trackid = swaptid; " - + " update playlistinfo set trackorder = torder + 1 where playlistid = pid and trackid = tid; " - + "end if; " - + "END"); - check.execute("CREATE PROCEDURE addtracktoplaylist(in pid int,in tid int) " - + "BEGIN " - + "declare torder int; " - + "set torder = (select count(*) from playlistinfo where playlistid=pid); " - + "set torder = torder + 1; " - + "insert into playlistinfo values(pid,tid,torder); " - + "END"); - check.execute("CREATE PROCEDURE createplaylist(in PlaylistName varchar(100)) " - + "BEGIN " - + "declare pid int; " - + "set pid = (select playlistid from id); " - + "insert into playlist values(pid,PlaylistName); " - + "END"); - check.execute("CREATE PROCEDURE deletefromplaylist(in pid int,in tid int) " - + "BEGIN " - + "declare torder int; " - + "set torder=(select trackorder from playlistinfo where playlistid=pid and trackid=tid); " - + "delete from playlistinfo where playlistid=pid and trackid=tid; " - + "update playlistinfo set trackorder=trackorder-1 where playlistid=pid and trackorder>torder; " - + "END"); - check.execute("CREATE PROCEDURE deleteplaylist(in pid int) " - + "BEGIN " - + "delete from playlist where playlistid=pid; " - + "delete from playlistinfo where playlistid=pid; " - + "END"); - check.execute("CREATE PROCEDURE deletetrack(in TrackId int) " - + "BEGIN " - + "delete from track where track.trackid=TrackId; " - + "delete from playlistinfo where playlistinfo.trackid=TrackId; " - + "END"); - check.execute("CREATE PROCEDURE favourite(in TrackId int) " - + "BEGIN " - + "update track set favourite=True where track.trackid=TrackId; " - + "END"); - check.execute("CREATE PROCEDURE unfavourite(in TrackId int) " - + "BEGIN " - + "update track set favourite=false where track.trackid=TrackId; " - + "END"); - check.execute("CREATE PROCEDURE updatetrack(in TrackId int,in newtrack varchar(50),in newartist varchar(50),in newalbum varchar(100),in newgenre varchar(30)) " - + "BEGIN " - + "declare ArtistId int; " - + "declare AlbumId int; " - + "set ArtistId=searchartist(newartist); " - + "set AlbumId=searchalbum(newalbum); " - + "if (ArtistId = -1) then " - + " set ArtistId=(select newid from id); " - + " insert into artist values (ArtistId,newartist); " - + "end if; " - + "if (AlbumId = -1) then " - + " set AlbumId = (select newid from id); " - + " insert into album values (AlbumId,newalbum); " - + "end if; " - + "update track set trackname = newtrack,genre = newgenre,track.artistid = ArtistId,track.albumid = AlbumId where track.trackid = TrackId; " - + "END"); - check.execute("CREATE FUNCTION searchartist(name varchar(50)) RETURNS int(11) " - + "BEGIN " - + "declare id int; " - + "set id = (select artistid from artist where artistname = name); " - + "if (id > 0) then return id; " - + "end if; " - + "RETURN -1; " - + "END"); - check.execute("CREATE FUNCTION searchalbum(name varchar(100)) RETURNS int(11) " - + "BEGIN " - + "declare id int; " - + "set id = (select albumid from album where albumname = name); " - + "if (id > 0) then return id; " - + "end if; " - + "RETURN -1; " - + "END"); - check.execute("CREATE PROCEDURE updateplaylist(in pid int, in newname varchar(50)) " - + "BEGIN " - + "update playlist set playlistname = newname where playlistid = pid; " - + "END"); + + "end;"); + statement.clearBatch(); } catch (Exception e) { + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + } + } } } } diff --git a/src/beatboxer/Delete.java b/src/beatboxer/Delete.java deleted file mode 100644 index 361a6fb..0000000 --- a/src/beatboxer/Delete.java +++ /dev/null @@ -1,17 +0,0 @@ -package beatboxer; - -import java.sql.*; - -public class Delete extends CreateConnection { - - public void deleteTrack(int TrackId) { - try { - PreparedStatement statement = con.prepareStatement("call deletetrack(?)"); - statement.setInt(1, TrackId); - statement.executeUpdate(); - } catch (SQLException e) { - - } - - } -} diff --git a/src/beatboxer/Directory.java b/src/beatboxer/Directory.java index e7b9cd4..7815c72 100644 --- a/src/beatboxer/Directory.java +++ b/src/beatboxer/Directory.java @@ -6,36 +6,72 @@ public class Directory extends CreateConnection { public void add(String Location) { + PreparedStatement statement = null; try { - PreparedStatement statement = con.prepareStatement("call adddirectory(?)"); + statement = con.prepareStatement("insert into directories(folderlocation) values(?)"); statement.setString(1, Location.replace("\\", "/")); - statement.executeUpdate(); + statement.execute(); } catch (SQLException e) { + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + } + } } } public void delete(String Location) { + Location = Location.replace("\\", "/"); + PreparedStatement statement = null; try { - PreparedStatement statement = con.prepareStatement("call deletedirectory(?)"); - statement.setString(1, Location.replace("\\", "/")); - statement.executeUpdate(); + statement = con.prepareStatement("delete from playlistinfo where playlistinfo.trackid in (select track.trackid from track where track.location like ?)"); + statement.setString(1, Location + '%'); + statement.execute(); + statement.clearBatch(); + statement = con.prepareStatement("delete from track where track.location like ?"); + statement.setString(1, Location + '%'); + statement.execute(); + statement.clearBatch(); + statement = con.prepareStatement("delete from directories where folderlocation = ?"); + statement.setString(1, Location); + statement.execute(); + statement.clearBatch(); } catch (SQLException e) { + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + } + } } } public ArrayList Show() { ArrayList list = new ArrayList(); + Statement statement = null; try { - Statement statement = con.createStatement(); + statement = con.createStatement(); ResultSet res = statement.executeQuery("select * from directories"); while (res.next()) { list.add(res.getString("folderlocation")); } + res.close(); return list; } catch (SQLException e) { + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } } return null; } diff --git a/src/beatboxer/Favourites.java b/src/beatboxer/Favourites.java deleted file mode 100644 index b89d4e4..0000000 --- a/src/beatboxer/Favourites.java +++ /dev/null @@ -1,26 +0,0 @@ -package beatboxer; - -import java.sql.*; - -public class Favourites extends CreateConnection { - - public void favourite(int trackid) { - try { - PreparedStatement statement = con.prepareStatement("call favourite(?)"); - statement.setInt(1, trackid); - statement.execute(); - } catch (SQLException e) { - - } - } - - public void unfavourite(int trackid) { - try { - PreparedStatement statement = con.prepareStatement("call unfavourite(?)"); - statement.setInt(1, trackid); - statement.execute(); - } catch (SQLException e) { - - } - } -} diff --git a/src/beatboxer/FolderChooserController.java b/src/beatboxer/FolderChooserController.java index 666ec4e..651c9d6 100644 --- a/src/beatboxer/FolderChooserController.java +++ b/src/beatboxer/FolderChooserController.java @@ -101,7 +101,7 @@ private void scanNow(){ pathList = scanner.getList(); songList = scanner.getMeta(pathList); for(BBSong song : songList){ - new AddTrack(song.getName(), song.getArtist(), song.getAlbum(), song.getLocation(), song.getGenre()); + new Track().AddTrack(song.getName(), song.getArtist(), song.getAlbum(), song.getLocation(), song.getGenre()); } } catch (Exception e) { ; diff --git a/src/beatboxer/ItemDeleterController.java b/src/beatboxer/ItemDeleterController.java index bb69625..99af8d5 100644 --- a/src/beatboxer/ItemDeleterController.java +++ b/src/beatboxer/ItemDeleterController.java @@ -5,6 +5,7 @@ */ package beatboxer; +import java.io.File; import java.net.URL; import java.util.ResourceBundle; import javafx.event.ActionEvent; @@ -40,57 +41,59 @@ public class ItemDeleterController implements Initializable { @Override public void initialize(URL url, ResourceBundle rb) { // TODO - } - public void initSong(BBSong song){ + } + + public void initSong(BBSong song) { isSong = true; this.song = song; detailsLabel.setText(detailsLabel.getText() + " song ?\n" + song.getName() + " by " + song.getArtist()); } - public void initPlayList(BBItem playList){ + + public void initPlayList(BBItem playList) { isSong = false; this.playList = playList; detailsLabel.setText(detailsLabel.getText() + " playlist ?\n" + playList.getName()); } + @FXML private void cancel(ActionEvent event) { Stage currentStage = (Stage) cancel.getScene().getWindow(); - currentStage.close(); + currentStage.close(); } @FXML private void okExecute(ActionEvent event) { - try{ - if(isSong){ - Delete d = new Delete(); - d.deleteTrack(song.getId()); - if(BeatBoxer.nowPlaying.size()==1 && BeatBoxer.nowPlaying.contains(song)){ + try { + if (isSong) { + Track track = new Track(); + track.DeleteTrack(song.getId()); + System.out.println(song.getLocation()); + File file = new File(song.getLocation()); + file.delete(); + if (BeatBoxer.nowPlaying.size() == 1 && BeatBoxer.nowPlaying.contains(song)) { BeatBoxer.play(BeatBoxer.defaultSong); BeatBoxer.mediaPlayer.stop(); - } - else if (new Show().ShowAllTracks().size()==0){ + } else if (new Track().ShowAllTracks().isEmpty()) { BeatBoxer.play(BeatBoxer.defaultSong); BeatBoxer.mediaPlayer.stop(); - } - else if(BeatBoxer.nowPlaying.get(BeatBoxer.currentIndex).equals(song)){ + } else if (BeatBoxer.nowPlaying.get(BeatBoxer.currentIndex).equals(song)) { int size = BeatBoxer.nowPlaying.size(); - BeatBoxer.play(BeatBoxer.nowPlaying.get((BeatBoxer.currentIndex + 1)%size)); + BeatBoxer.play(BeatBoxer.nowPlaying.get((BeatBoxer.currentIndex + 1) % size)); } - if(BeatBoxer.nowPlaying.contains(song)){ + if (BeatBoxer.nowPlaying.contains(song)) { BBSong newSong = BeatBoxer.nowPlaying.get(BeatBoxer.currentIndex); BeatBoxer.nowPlaying.remove(song); BeatBoxer.currentIndex = BBGenerator.find(BeatBoxer.nowPlaying, newSong); } - } - else{ + } else { PlayList d = new PlayList(); d.delete(playList.getId()); } cancel(new ActionEvent()); + } catch (Exception e) { + } - catch(Exception e){ - - } - + } - + } diff --git a/src/beatboxer/PlayList.java b/src/beatboxer/PlayList.java index c0df03b..3396afb 100644 --- a/src/beatboxer/PlayList.java +++ b/src/beatboxer/PlayList.java @@ -1,37 +1,245 @@ package beatboxer; import java.sql.*; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; public class PlayList extends CreateConnection { public void create(String playlistname) { + Statement st = null; + PreparedStatement statement = null; try { - PreparedStatement statement = con.prepareStatement("call createplaylist(?)"); - statement.setString(1, playlistname); + st = con.createStatement(); + ResultSet res = st.executeQuery("select playlistid from id"); + res.next(); + int pid = res.getInt("playlistid"); + res.close(); + statement = con.prepareStatement("insert into playlist(playlistid,playlistname) values(?,?)"); + statement.setInt(1, pid); + statement.setString(2, playlistname.trim()); statement.execute(); } catch (Exception e) { + } finally { + if (st != null) { + try { + st.close(); + } catch (SQLException e) { + + } + } + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } } } public void delete(int playlistid) { + PreparedStatement statement = null; try { - PreparedStatement statement = con.prepareStatement("call deleteplaylist(?)"); + statement = con.prepareStatement("delete from playlist where playlistid = ?"); + statement.setInt(1, playlistid); + statement.execute(); + statement.clearBatch(); + statement = con.prepareStatement("delete from playlistinfo where playlistid =?"); statement.setInt(1, playlistid); statement.execute(); } catch (SQLException e) { + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } } } public void update(int playlistid, String newname) { + PreparedStatement statement = null; + try { + statement = con.prepareStatement("update playlist set playlistname = ? where playlistid = ?"); + statement.setString(1, newname); + statement.setInt(2, playlistid); + statement.execute(); + } catch (SQLException e) { + + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } + } + } + + public void addtrack(int playlistid, int trackid) { + PreparedStatement statement = null; + try { + statement = con.prepareStatement("select count(*) from playlistinfo where playlistid = ?"); + statement.setInt(1, playlistid); + ResultSet res = statement.executeQuery(); + res.next(); + int torder = res.getInt(1); + res.close(); + statement.clearBatch(); + statement = con.prepareStatement("insert into playlistinfo(playlistid,trackid,trackorder) values (?,?,?)"); + statement.setInt(1, playlistid); + statement.setInt(2, trackid); + statement.setInt(3, torder + 1); + statement.execute(); + } catch (SQLException e) { + + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } + } + } + + public void deletetrack(int playlistid, int trackid) { + PreparedStatement statement = null; try { - String sql = "call updateplaylist(?,?)"; - PreparedStatement statement = con.prepareStatement(sql); + statement = con.prepareStatement("delete from playlistinfo where playlistid=? and trackid=?"); statement.setInt(1, playlistid); - statement.setString(2, newname); + statement.setInt(2, trackid); statement.execute(); } catch (SQLException e) { + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } + } + } + + public void move(int playlistid, int trackid, String direction) { + PreparedStatement statement = null; + try { + statement = con.prepareStatement("select trackorder from playlistinfo where playlistid = ? and trackid = ?"); + statement.setInt(1, playlistid); + statement.setInt(2, trackid); + ResultSet res = statement.executeQuery(); + res.next(); + int torder = res.getInt("trackorder"); + res.close(); + statement.clearBatch(); + int swaptid, torder1; + if (direction.equals("up")) { + statement = con.prepareStatement("select trackid, trackorder from playlistinfo where playlistid = ? and trackorder < ? order by trackorder desc limit 1"); + statement.setInt(1, playlistid); + statement.setInt(2, torder); + res = statement.executeQuery(); + res.next(); + swaptid = res.getInt("trackid"); + torder1 = res.getInt("trackorder"); + res.close(); + statement.clearBatch(); + statement = con.prepareStatement("update playlistinfo set trackorder = ? where playlistid = ? and trackid = ?"); + statement.setInt(1, torder); + statement.setInt(2, playlistid); + statement.setInt(3, swaptid); + statement.execute(); + statement.clearBatch(); + statement = con.prepareStatement("update playlistinfo set trackorder = ? where playlistid = ? and trackid = ?"); + statement.setInt(1, torder1); + statement.setInt(2, playlistid); + statement.setInt(3, trackid); + statement.execute(); + } else { + statement = con.prepareStatement("select trackid, trackorder from playlistinfo where playlistid = ? and trackorder > ? order by trackorder limit 1"); + statement.setInt(1, playlistid); + statement.setInt(2, torder); + res = statement.executeQuery(); + res.next(); + swaptid = res.getInt("trackid"); + torder1 = res.getInt("trackorder"); + res.close(); + statement.clearBatch(); + statement = con.prepareStatement("update playlistinfo set trackorder = ? where playlistid = ? and trackid = ?"); + statement.setInt(1, torder); + statement.setInt(2, playlistid); + statement.setInt(3, swaptid); + statement.execute(); + statement.clearBatch(); + statement = con.prepareStatement("update playlistinfo set trackorder = ? where playlistid = ? and trackid = ?"); + statement.setInt(1, torder1); + statement.setInt(2, playlistid); + statement.setInt(3, trackid); + statement.execute(); + } + } catch (SQLException e) { + + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } + } + } + + public ObservableList ShowAllPlayLists() { + Statement count = null; + try { + count = con.createStatement(); + String sql = "Select * from playlist order by playlistname"; + ObservableList list = FXCollections.observableArrayList(); + list.add(new BBItem(0, "All Songs")); + list.add(new BBItem(-1, "Favourites")); + list.add(new BBItem(-2, "Recently Added")); + list.addAll(BBGenerator.item(count.executeQuery(sql))); + return list; + } catch (SQLException e) { + + } finally { + if (count != null) { + try { + count.close(); + } catch (SQLException e) { + + } + } + } + return null; + } + + public ObservableList ShowAllTracksinPlayList(int playlistid) { + PreparedStatement tracks = null; + try { + String sql = "select trackid,trackname,artistname,albumname,location,genre,favourite from track natural join artist natural join album natural join playlistinfo where playlistid = ? order by trackorder"; + tracks = con.prepareStatement(sql); + tracks.setInt(1, playlistid); + return BBGenerator.song(tracks.executeQuery()); + } catch (SQLException e) { + + } finally { + if (tracks != null) { + try { + tracks.close(); + } catch (SQLException e) { + + } + } } + return null; } } diff --git a/src/beatboxer/PlayListInfo.java b/src/beatboxer/PlayListInfo.java deleted file mode 100644 index 8ed95d5..0000000 --- a/src/beatboxer/PlayListInfo.java +++ /dev/null @@ -1,44 +0,0 @@ -package beatboxer; - -import java.sql.*; - -public class PlayListInfo extends CreateConnection { - - public void addtrack(int playlistid, int trackid) { - try { - PreparedStatement statement = con.prepareStatement("call addtracktoplaylist(?,?)"); - statement.setInt(1, playlistid); - statement.setInt(2, trackid); - statement.execute(); - } catch (SQLException e) { - - } - } - - public void deletetrack(int playlistid, int trackid) { - try { - PreparedStatement statement = con.prepareStatement("call deletefromplaylist(?,?)"); - statement.setInt(1, playlistid); - statement.setInt(2, trackid); - statement.execute(); - } catch (SQLException e) { - - } - } - - public void move(int playlistid, int trackid, String direction) { - try { - PreparedStatement statement = con.prepareStatement("call movetrack(?,?,?)"); - statement.setInt(1, playlistid); - statement.setInt(2, trackid); - if (direction.equals("up")) { - statement.setInt(3, 0); - } else { - statement.setInt(3, 1); - } - statement.execute(); - } catch (SQLException e) { - - } - } -} diff --git a/src/beatboxer/PlaylistEditorController.java b/src/beatboxer/PlaylistEditorController.java index 12785ae..ab8e00e 100644 --- a/src/beatboxer/PlaylistEditorController.java +++ b/src/beatboxer/PlaylistEditorController.java @@ -50,82 +50,81 @@ public class PlaylistEditorController implements Initializable { private Button down; @FXML private ListView playListListView; - private ArrayList> instructions; //1-4 = R,L,U,D + private ArrayList> instructions; //1-4 = R,L,U,D private BBItem playlist; + /** * Initializes the controller class. */ @Override public void initialize(URL url, ResourceBundle rb) { instructions = new ArrayList<>(); - allSongsListView.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener(){ + allSongsListView.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Number oldValue, Number newValue) { - if(newValue.intValue()==-1){ + if (newValue.intValue() == -1) { right.setDisable(true); - } - else{ + } else { right.setDisable(false); } } }); - playListListView.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener(){ + playListListView.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Number oldValue, Number newValue) { - if(newValue.intValue()==-1){ + if (newValue.intValue() == -1) { left.setDisable(true); up.setDisable(true); down.setDisable(true); - } - else{ + } else { left.setDisable(false); up.setDisable(false); down.setDisable(false); - if(newValue.intValue()==0){ + if (newValue.intValue() == 0) { up.setDisable(true); } - if(newValue.intValue() == playListListView.getItems().size()-1){ + if (newValue.intValue() == playListListView.getItems().size() - 1) { down.setDisable(true); } } } - + }); - } - public void initData(BBItem playlist){ + } + + public void initData(BBItem playlist) { this.playlist = playlist; this.nameField.setText(playlist.toString()); - Show sh = new Show(); ObservableList playlistList; ObservableList allsongList; - playlistList = sh.ShowAllTracksinPlayList(playlist.getId()); - allsongList = sh.ShowAllTracks(); + playlistList = new PlayList().ShowAllTracksinPlayList(playlist.getId()); + allsongList = new Track().ShowAllTracks(); allsongList.removeAll(playlistList); allSongsListView.setItems(allsongList); playListListView.setItems(playlistList); } + @FXML private void checkName(KeyEvent event) { String newPlaylist = nameField.getText(); newPlaylist = newPlaylist.trim(); - if(newPlaylist.equals("")){ + if (newPlaylist.equals("")) { ok.setDisable(true); errorLabel.setText(""); - } - else{ - Show sh = new Show(); - ObservableList list = sh.ShowAllPlayLists(); - for(BBItem playList : list){ - if(playList.getName().equalsIgnoreCase(newPlaylist) && !newPlaylist.equalsIgnoreCase(playList.getName())){ + } else { + PlayList pl = new PlayList(); + ObservableList list = pl.ShowAllPlayLists(); + for (BBItem playList : list) { + if (playList.getName().equalsIgnoreCase(newPlaylist) && !newPlaylist.equalsIgnoreCase(playList.getName())) { ok.setDisable(true); errorLabel.setText("A playlist with that name already exists. Please enter \na different name."); return; } } - if(newPlaylist.equalsIgnoreCase("All Songs") || newPlaylist.equalsIgnoreCase("Favourites")){ + if (newPlaylist.equalsIgnoreCase("All Songs") || newPlaylist.equalsIgnoreCase("Favourites")) { ok.setDisable(true); errorLabel.setText("A playlist with that name already exists. Please enter \na different name."); - return; + return; } errorLabel.setText(""); ok.setDisable(false); @@ -134,10 +133,10 @@ private void checkName(KeyEvent event) { @FXML private void okExecute(ActionEvent event) { - try{ - PlayListInfo p = new PlayListInfo(); - for(Pair k: instructions){ - switch(k.getKey()){ + try { + PlayList p = new PlayList(); + for (Pair k : instructions) { + switch (k.getKey()) { case 1: p.addtrack(playlist.getId(), k.getValue()); break; @@ -154,9 +153,8 @@ private void okExecute(ActionEvent event) { } cancel(new ActionEvent()); String playlistString = nameField.getText().trim(); - new PlayList().update(playlist.getId(),playlistString); - } - catch(Exception e){ + new PlayList().update(playlist.getId(), playlistString); + } catch (Exception e) { ; } } @@ -174,57 +172,57 @@ private void right(ActionEvent event) { int index = BBGenerator.find(list, song); list.remove(song); allSongsListView.setItems(list); - if(list.size()!=index){ + if (list.size() != index) { allSongsListView.getSelectionModel().clearAndSelect(index); } list = playListListView.getItems(); list.add(song); playListListView.setItems(list); - instructions.add(new Pair(1,song.getId())); + instructions.add(new Pair(1, song.getId())); } @FXML private void left(ActionEvent event) { - BBSong song = playListListView.getSelectionModel().getSelectedItem(); + BBSong song = playListListView.getSelectionModel().getSelectedItem(); ObservableList list = playListListView.getItems(); int index = BBGenerator.find(list, song); list.remove(song); playListListView.setItems(list); - if(list.size()!=index){ + if (list.size() != index) { playListListView.getSelectionModel().clearAndSelect(index); } list = allSongsListView.getItems(); list.add(song); - FXCollections.sort(list, (a,b) -> a.getName().compareToIgnoreCase(b.getName())); + FXCollections.sort(list, (a, b) -> a.getName().compareToIgnoreCase(b.getName())); allSongsListView.setItems(list); - if(allSongsListView.getSelectionModel().getSelectedIndex()==-1){ + if (allSongsListView.getSelectionModel().getSelectedIndex() == -1) { allSongsListView.getSelectionModel().select(song); } - instructions.add(new Pair(2,song.getId())); + instructions.add(new Pair(2, song.getId())); } @FXML private void up(ActionEvent event) { int index = playListListView.getSelectionModel().getSelectedIndex(); - BBSong song = playListListView.getSelectionModel().getSelectedItem(); + BBSong song = playListListView.getSelectionModel().getSelectedItem(); ObservableList list = playListListView.getItems(); list.remove(song); - list.add(index-1, song); + list.add(index - 1, song); playListListView.setItems(list); - playListListView.getSelectionModel().clearAndSelect(index-1); - instructions.add(new Pair(3,song.getId())); + playListListView.getSelectionModel().clearAndSelect(index - 1); + instructions.add(new Pair(3, song.getId())); } @FXML private void down(ActionEvent event) { int index = playListListView.getSelectionModel().getSelectedIndex(); - BBSong song = playListListView.getSelectionModel().getSelectedItem(); + BBSong song = playListListView.getSelectionModel().getSelectedItem(); ObservableList list = playListListView.getItems(); list.remove(song); - list.add(index+1, song); + list.add(index + 1, song); playListListView.setItems(list); - playListListView.getSelectionModel().clearAndSelect(index+1); - instructions.add(new Pair(4,song.getId())); + playListListView.getSelectionModel().clearAndSelect(index + 1); + instructions.add(new Pair(4, song.getId())); } - -} \ No newline at end of file + +} diff --git a/src/beatboxer/Search.java b/src/beatboxer/Search.java deleted file mode 100644 index 8a6d2e7..0000000 --- a/src/beatboxer/Search.java +++ /dev/null @@ -1,43 +0,0 @@ -package beatboxer; - -import java.sql.*; -import javafx.collections.ObservableList; - -public class Search extends CreateConnection { - - public ObservableList SearchAlbum(String string) { - try { - String sql = "select * from album WHERE albumname LIKE ? order by albumname"; - PreparedStatement statement = con.prepareStatement(sql); - statement.setString(1, '%' + string + '%'); - ResultSet res = statement.executeQuery(); - return BBGenerator.item(res); - } catch (Exception e) { - return null; - } - } - - public ObservableList SearchTrack(String string) { - try { - String sql = "select * from track natural join artist natural join album where trackname LIKE ? order by trackname"; - PreparedStatement statement = con.prepareStatement(sql); - statement.setString(1, "%" + string + "%"); - ResultSet res = statement.executeQuery(); - return BBGenerator.song(res); - } catch (Exception e) { - } - return null; - } - - public ObservableList SearchArtist(String string) { - try { - String sql = "select * from artist WHERE artistname LIKE ? order by artistname"; - PreparedStatement statement = con.prepareStatement(sql); - statement.setString(1, '%' + string + '%'); - ResultSet res = statement.executeQuery(); - return BBGenerator.item(res); - } catch (Exception e) { - return null; - } - } -} diff --git a/src/beatboxer/Show.java b/src/beatboxer/Show.java deleted file mode 100644 index d0c7dd7..0000000 --- a/src/beatboxer/Show.java +++ /dev/null @@ -1,184 +0,0 @@ -package beatboxer; - -import java.sql.*; -import java.util.ArrayList; -import javafx.collections.*; - -public class Show extends CreateConnection { - - public ObservableList ShowAllTracks() { - try { - Statement count = con.createStatement(); - ResultSet res = count.executeQuery("select trackid,trackname,artistname,albumname,location,genre,favourite from track natural join artist natural join album order by trackname"); - return BBGenerator.song(res); - } catch (SQLException e) { - - } - return null; - } - - public ObservableList ShowAllArtists() { - try { - Statement count = con.createStatement(); - ResultSet res = count.executeQuery("Select * from artist order by artistname"); - return BBGenerator.item(res); - } catch (SQLException e) { - - } - return null; - } - - public ObservableList ShowAllTracksByArtists(int artistId) { - try { - String sql = "select trackid,trackname,artistname,albumname,location,genre,favourite from track natural join artist natural join album WHERE artistid = ? order by trackname"; - PreparedStatement statement = con.prepareStatement(sql); - statement.setInt(1, artistId); - ResultSet res = statement.executeQuery(); - return BBGenerator.song(res); - } catch (SQLException e) { - - } - return null; - - } - - public ObservableList ShowAllAlbums() { - try { - Statement count = con.createStatement(); - ResultSet res = count.executeQuery("Select * from album order by albumname"); - return BBGenerator.item(res); - } catch (SQLException e) { - - } - return null; - } - - public ObservableList ShowAllTracksinAlbum(int albumId) { - try { - String sql = "select trackid,trackname,artistname,albumname,location,genre,favourite from track natural join artist natural join album WHERE albumid = ? order by trackname"; - PreparedStatement statement = con.prepareStatement(sql); - statement.setInt(1, albumId); - ResultSet res = statement.executeQuery(); - return BBGenerator.song(res); - } catch (SQLException e) { - - } - return null; - - } - - public ObservableList ShowAllPlayLists() { - try { - Statement count = con.createStatement(); - ResultSet res = count.executeQuery("Select * from playlist order by playlistname"); - ObservableList list = FXCollections.observableArrayList(); - list.add(new BBItem(0, "All Songs")); - list.add(new BBItem(-1, "Favourites")); - list.add(new BBItem(-2, "Recently Added")); - list.addAll(BBGenerator.item(res)); - return list; - } catch (SQLException e) { - - } - return null; - } - - public ObservableList ShowAllTracksinPlayList(int playlistid) { - try { - String sql = "select trackid,trackname,artistname,albumname,location,genre,favourite from track natural join artist natural join album natural join playlistinfo where playlistid = ? order by trackorder"; - PreparedStatement tracks = con.prepareStatement(sql); - tracks.setInt(1, playlistid); - ResultSet res = tracks.executeQuery(); - return BBGenerator.song(res); - } catch (SQLException e) { - - } - return null; - } - - public ObservableList ShowAllFavourites() { - try { - String sql = "select trackid,trackname,artistname,albumname,location,genre,favourite from track natural join artist natural join album where favourite = true order by trackname"; - Statement tracks = con.createStatement(); - ResultSet res = tracks.executeQuery(sql); - return BBGenerator.song(res); - } catch (SQLException e) { - - } - return null; - } - - public ObservableList ShowByMode(String mode) { - mode = mode.toLowerCase(); - ArrayList genre = new ArrayList<>(); - switch (mode) { - case "driving": - genre.add("Rap"); - genre.add("Rock"); - genre.add("Romantic"); - genre.add("Pop"); - genre.add("Soul and R&B"); - return BBGenerator.song(ShowByGenre(genre)); - case "exercise": - genre.add("Dance"); - genre.add("Hip-hop"); - genre.add("Hiphop"); - genre.add("Edm"); - genre.add("Rock"); - genre.add("Pop"); - return BBGenerator.song(ShowByGenre(genre)); - case "party": - genre.add("House"); - genre.add("Progresive"); - genre.add("Edm"); - genre.add("Dance"); - genre.add("Rap"); - genre.add("Hip hop"); - genre.add("Hip-hop"); - genre.add("Pop"); - genre.add("Electro"); - return BBGenerator.song(ShowByGenre(genre)); - case "soothing": - genre.add("Romantic"); - genre.add("Ambient"); - genre.add("Soft"); - genre.add("Trap"); - genre.add("Soothing"); - genre.add("Paino"); - genre.add("Tropical"); - genre.add("Soul"); - return BBGenerator.song(ShowByGenre(genre)); - } - return null; - } - - public ObservableList ShowRecentlyAdded() { - try { - String sql = "select trackid,trackname,artistname,albumname,location,genre,favourite from track natural join artist natural join album where to_seconds(dateadded) + 86400 >= to_seconds(current_timestamp()) order by dateadded desc limit 50"; - Statement tracks = con.createStatement(); - ResultSet res = tracks.executeQuery(sql); - return BBGenerator.song(res); - } catch (SQLException e) { - - } - return null; - } - - private ResultSet ShowByGenre(ArrayList genre) { - try { - String sql = "select trackid,trackname,artistname,albumname,location,genre,favourite from track natural join artist natural join album where genre like ?"; - for (int i = 0; i < genre.size() - 1; i++) { - sql += " or genre like ?"; - } - sql += " order by trackname"; - PreparedStatement tracks = con.prepareStatement(sql); - for (int i = 0; i < genre.size(); i++) { - tracks.setString(i + 1, '%' + genre.get(i) + '%'); - } - return tracks.executeQuery(); - } catch (SQLException e) { - - } - return null; - } -} diff --git a/src/beatboxer/SongEditorController.java b/src/beatboxer/SongEditorController.java index e3a059a..f0929dd 100644 --- a/src/beatboxer/SongEditorController.java +++ b/src/beatboxer/SongEditorController.java @@ -39,9 +39,9 @@ public class SongEditorController implements Initializable { @FXML private void okExecute() { try { - Update u = new Update(); + Track track = new Track(); String songString = songField.getText().trim(), albumString = albumField.getText().trim(), artistString = artistField.getText().trim(), genreString = genreField.getText().trim(); - u.updateTrack(song.getId(), songString, artistString, albumString, genreString); + track.UpdateTrack(song.getId(), songString, artistString, albumString, genreString); song.setName(songString); song.setAlbum(albumString); song.setArtist(artistString); @@ -52,7 +52,7 @@ private void okExecute() { } cancel(); } catch (Exception e) { - ; + System.out.println("hey"); } } diff --git a/src/beatboxer/Test.java b/src/beatboxer/Test.java new file mode 100644 index 0000000..012967c --- /dev/null +++ b/src/beatboxer/Test.java @@ -0,0 +1,16 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package beatboxer; + +/** + * + * @author SANJAY TAYAL + */ +public class Test { + public static void main(String[] args) { + + } +} diff --git a/src/beatboxer/Track.java b/src/beatboxer/Track.java new file mode 100644 index 0000000..0c8fb63 --- /dev/null +++ b/src/beatboxer/Track.java @@ -0,0 +1,385 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package beatboxer; + +import java.sql.*; +import java.util.ArrayList; +import javafx.collections.ObservableList; + +/** + * + * @author SANJAY TAYAL + */ +public class Track extends CreateConnection { + + public void AddTrack(String trackName, String artistName, String albumName, String location, String genre) { + if (artistName.isEmpty()) { + artistName = "Unknown"; + } + if (albumName.isEmpty()) { + albumName = "Unknown"; + } + System.out.println("runned"); + Statement st = null; + PreparedStatement statement = null; + ResultSet res = null; + try { + st = con.createStatement(); + res = st.executeQuery("select newid from id"); + res.next(); + int trackid = res.getInt("newid"); + res.close(); + int artistid, albumid; + statement = con.prepareStatement("select artistid from artist where lower(artistname) = ?"); + statement.setString(1, artistName.toLowerCase().trim()); + res = statement.executeQuery(); + if (!res.next()) { + res.close(); + res = st.executeQuery("select newid from id"); + res.next(); + artistid = res.getInt("newid"); + res.close(); + statement = con.prepareStatement("insert into artist(artistid,artistname) values (?,?)"); + statement.setInt(1, artistid); + statement.setString(2, artistName.trim()); + statement.execute(); + } else { + artistid = res.getInt("artistid"); + res.close(); + } + statement = con.prepareStatement("select albumid from album where lower(albumname) = ?"); + statement.setString(1, albumName.toLowerCase().trim()); + res = statement.executeQuery(); + if (!res.next()) { + res.close(); + res = st.executeQuery("select newid from id"); + res.next(); + albumid = res.getInt("newid"); + res.close(); + statement = con.prepareStatement("insert into album(albumid,albumname) values (?,?)"); + statement.setInt(1, albumid); + statement.setString(2, albumName.trim()); + statement.execute(); + } else { + albumid = res.getInt("albumid"); + res.close(); + } + statement = con.prepareStatement("insert into track(trackid,artistid,albumid,trackname,location,genre) values(?,?,?,?,?,?)"); + statement.setInt(1, trackid); + statement.setInt(2, artistid); + statement.setInt(3, albumid); + statement.setString(4, trackName.trim()); + statement.setString(5, location.replace("\\", "/")); + statement.setString(6, genre.trim()); + statement.execute(); + } catch (SQLException e) { + } finally { + if (st != null) { + try { + st.close(); + } catch (SQLException e) { + + } + } + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } + } + } + + public void UpdateTrack(int TrackId, String newTrackName, String newArtistName, String newAlbumName, String newGenre) { + Statement st = null; + PreparedStatement statement = null; + int artistid, albumid; + try { + st = con.createStatement(); + statement = con.prepareStatement("select artistid from artist where lower(artistname) = ?"); + statement.setString(1, newArtistName.toLowerCase().trim()); + ResultSet res = statement.executeQuery(); + if (!res.next()) { + res.close(); + res = st.executeQuery("select newid from id"); + res.next(); + artistid = res.getInt("newid"); + res.close(); + st.clearBatch(); + statement.clearBatch(); + statement = con.prepareStatement("insert into artist(artistid,artistname) values (?,?)"); + statement.setInt(1, artistid); + statement.setString(2, newArtistName.trim()); + statement.execute(); + } else { + artistid = res.getInt("artistid"); + res.close(); + } + statement.clearBatch(); + statement = con.prepareStatement("select albumid from album where lower(albumname) = ?"); + statement.setString(1, newAlbumName.toLowerCase().trim()); + res = statement.executeQuery(); + if (!res.next()) { + res.close(); + res = st.executeQuery("select newid from id"); + res.next(); + albumid = res.getInt("newid"); + res.close(); + st.clearBatch(); + statement.clearBatch(); + statement = con.prepareStatement("insert into album(albumid,albumname) values (?,?)"); + statement.setInt(1, albumid); + statement.setString(2, newAlbumName.trim()); + statement.execute(); + } else { + albumid = res.getInt("albumid"); + res.close(); + } + statement.clearBatch(); + statement = con.prepareStatement("update track set trackname = ?,genre = ?,artistid = ?,albumid = ? where trackid = ?"); + statement.setString(1, newTrackName.trim()); + statement.setString(2, newGenre.trim()); + statement.setInt(3, artistid); + statement.setInt(4, albumid); + statement.setInt(5, TrackId); + statement.execute(); + statement.clearBatch(); + statement.close(); + } catch (SQLException e) { + + } finally { + if (st != null) { + try { + st.close(); + } catch (SQLException e) { + + } + } + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } + } + } + + public void DeleteTrack(int TrackId) { + PreparedStatement statement = null; + try { + statement = con.prepareStatement("delete from track where trackid = ?"); + statement.setInt(1, TrackId); + statement.execute(); + statement.clearBatch(); + statement = con.prepareStatement("delete from playlistinfo where trackid = ?"); + statement.setInt(1, TrackId); + statement.execute(); + statement.clearBatch(); + } catch (SQLException e) { + + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } + } + + } + + public ObservableList ShowAllTracks() { + Statement count = null; + try { + count = con.createStatement(); + String sql = "select trackid,trackname,artistname,albumname,location,genre,favourite from track natural join artist natural join album order by trackname"; + return BBGenerator.song(count.executeQuery(sql)); + } catch (SQLException e) { + + } finally { + if (count != null) { + try { + count.close(); + } catch (SQLException e) { + + } + } + } + return null; + } + + public ObservableList ShowAllFavourites() { + Statement tracks = null; + try { + String sql = "select trackid,trackname,artistname,albumname,location,genre,favourite from track natural join artist natural join album where favourite = 1 order by trackname"; + tracks = con.createStatement(); + return BBGenerator.song(tracks.executeQuery(sql)); + } catch (SQLException e) { + + } finally { + if (tracks != null) { + try { + tracks.close(); + } catch (SQLException e) { + + } + } + } + return null; + } + + public ObservableList ShowByMode(String mode) { + mode = mode.toLowerCase(); + ArrayList genre = new ArrayList<>(); + switch (mode) { + case "driving": + genre.add("Rap"); + genre.add("Rock"); + genre.add("Romantic"); + genre.add("Pop"); + genre.add("Soul and R&B"); + return BBGenerator.song(ShowByGenre(genre)); + case "exercise": + genre.add("Dance"); + genre.add("Hip-hop"); + genre.add("Hiphop"); + genre.add("Edm"); + genre.add("Rock"); + genre.add("Pop"); + return BBGenerator.song(ShowByGenre(genre)); + case "party": + genre.add("House"); + genre.add("Progresive"); + genre.add("Edm"); + genre.add("Dance"); + genre.add("Rap"); + genre.add("Hip hop"); + genre.add("Hip-hop"); + genre.add("Pop"); + genre.add("Electro"); + return BBGenerator.song(ShowByGenre(genre)); + case "soothing": + genre.add("Romantic"); + genre.add("Ambient"); + genre.add("Soft"); + genre.add("Trap"); + genre.add("Soothing"); + genre.add("Paino"); + genre.add("Tropical"); + genre.add("Soul"); + return BBGenerator.song(ShowByGenre(genre)); + } + return null; + } + + public ObservableList ShowRecentlyAdded() { + Statement tracks = null; + try { + String sql = "select trackid,trackname,artistname,albumname,location,genre,favourite from track natural join artist natural join album where strftime('%s',current_timestamp) - strftime('%s',dateadded) <= 86400 order by dateadded desc limit 50"; + tracks = con.createStatement(); + return BBGenerator.song(tracks.executeQuery(sql)); + } catch (SQLException e) { + + } finally { + if (tracks != null) { + try { + tracks.close(); + } catch (SQLException e) { + + } + } + } + return null; + } + + private ResultSet ShowByGenre(ArrayList genre) { + PreparedStatement tracks = null; + try { + String sql = "select trackid,trackname,artistname,albumname,location,genre,favourite from track natural join artist natural join album where genre like ?"; + for (int i = 0; i < genre.size() - 1; i++) { + sql += " or genre like ?"; + } + sql += " order by trackname"; + tracks = con.prepareStatement(sql); + for (int i = 0; i < genre.size(); i++) { + tracks.setString(i + 1, '%' + genre.get(i) + '%'); + } + return tracks.executeQuery(); + } catch (SQLException e) { + + } finally { + if (tracks != null) { + try { + tracks.close(); + } catch (SQLException e) { + + } + } + } + return null; + } + + public ObservableList SearchTrack(String string) { + PreparedStatement statement = null; + try { + String sql = "select * from track natural join artist natural join album where trackname like ? order by trackname"; + statement = con.prepareStatement(sql); + statement.setString(1, "%" + string + "%"); + return BBGenerator.song(statement.executeQuery()); + } catch (Exception e) { + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } + } + return null; + } + + public void favourite(int trackid) { + PreparedStatement statement = null; + try { + statement = con.prepareStatement("update track set favourite = 1 where trackid = ?"); + statement.setInt(1, trackid); + statement.execute(); + } catch (SQLException e) { + + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } + } + } + + public void unfavourite(int trackid) { + PreparedStatement statement = null; + try { + statement = con.prepareStatement("update track set favourite = 0 where trackid=?"); + statement.setInt(1, trackid); + statement.execute(); + } catch (SQLException e) { + + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + + } + } + } + } +} diff --git a/src/beatboxer/Update.java b/src/beatboxer/Update.java deleted file mode 100644 index fe8a0e2..0000000 --- a/src/beatboxer/Update.java +++ /dev/null @@ -1,20 +0,0 @@ -package beatboxer; - -import java.sql.*; - -public class Update extends CreateConnection { - - public void updateTrack(int TrackId, String newTrackName, String newArtistName, String newAlbumName, String newGenre) { - try { - PreparedStatement statement = con.prepareStatement("call updatetrack(?,?,?,?,?)"); - statement.setInt(1, TrackId); - statement.setString(2, newTrackName); - statement.setString(3, newArtistName); - statement.setString(4, newAlbumName); - statement.setString(5, newGenre); - statement.execute(); - } catch (SQLException e) { - - } - } -}