// ClientTrack(int trackID, String trackName, String path, int albumID, int artistID,int length, // int trackNo) { public ArrayList<ClientTrack> matchLyrics(String searchLyrics, int artistID, int albumID) { CavaResultSet rs = trackDatabase.getLyricsSmart(artistID, albumID); ArrayList<ClientTrack> toReturn = new ArrayList<ClientTrack>(); ClientTrack tempTrack; String lyrics, trackName, path; int trackID, _albumID, _artistID, length, trackNo; searchLyrics = cleanSearchTerm(searchLyrics); while (rs.fetchRow()) { lyrics = rs.fetchString(1); trackID = rs.fetchInt(2); trackName = rs.fetchString(3); path = rs.fetchString(4); _albumID = rs.fetchInt(5); _artistID = rs.fetchInt(6); length = rs.fetchInt(7); trackNo = rs.fetchInt(8); // System.out.println("LYRICS:\n|"+lyrics+"|"); if (lyrics != null) { if (dmp.fuzzyMatch(searchLyrics, lyrics, 0) != -1 && lyrics != null) { // System.out.println(lyrics); tempTrack = new ClientTrack(trackID, trackName, path, _albumID, _artistID, length, trackNo); toReturn.add(tempTrack); } } } return toReturn; }
public void moveTracks(int[] indexesToMove, int insertionPoint, TrackDatabase db) { Arrays.sort(indexesToMove); Track[] oldPlaylist = getTracksInPlaylist(db); int[] newTrackIDs = new int[oldPlaylist.length]; TrackType[] trackTypes = new TrackType[oldPlaylist.length]; boolean allLocal = true; boolean allSpotify = true; // Create the array of track IDs based on the insertion point and indexes to move int addAt = 0; for (int i = 0; i <= oldPlaylist.length; i++) { // if i = row, this is the insertion point. cyle through indexesToMove and copy them across if (i == insertionPoint) { for (int j = 0; j < indexesToMove.length; j++) { newTrackIDs[addAt] = oldPlaylist[indexesToMove[j]].getTrackID(); if (oldPlaylist[indexesToMove[j]] instanceof ClientTrack) { trackTypes[addAt] = TrackType.Local; allSpotify = false; } else { trackTypes[addAt] = TrackType.Spotify; allLocal = false; } addAt++; } } // Add track.get(i) to new tracks if it's not in the list of indexes to move // Also check array bounds -- we have to cycle with i untill one after the length, in case we // drop at the end of the list. if (i < oldPlaylist.length && Arrays.binarySearch(indexesToMove, i) < 0) { newTrackIDs[addAt] = oldPlaylist[i].getTrackID(); if (oldPlaylist[i].isClientTrack()) { trackTypes[addAt] = TrackType.Local; allSpotify = false; } else { trackTypes[addAt] = TrackType.Spotify; allLocal = false; } addAt++; } } // Recreate the playlist with the new trackIDs db.recreatePlaylist(newTrackIDs, this.playlistID, allLocal, allSpotify, trackTypes); }
public void addTracks(ClientTrack[] tracksToAdd, int insertionPoint, TrackDatabase db) { Track[] oldPlaylist = getTracksInPlaylist(db); int[] newTrackIDs = new int[oldPlaylist.length + tracksToAdd.length]; TrackType[] trackTypes = new TrackType[oldPlaylist.length + tracksToAdd.length]; boolean allLocal = true; boolean allSpotify = true; int addAt = 0; for (int i = 0; i <= oldPlaylist.length; i++) { if (i == insertionPoint) { for (int j = 0; j < tracksToAdd.length; j++) { newTrackIDs[addAt] = tracksToAdd[j].getTrackID(); if (tracksToAdd[j] instanceof ClientTrack) { trackTypes[addAt] = TrackType.Local; allSpotify = false; } else { trackTypes[addAt] = TrackType.Spotify; allLocal = false; } addAt++; } } if (i < oldPlaylist.length) { newTrackIDs[addAt] = oldPlaylist[i].getTrackID(); if (oldPlaylist[i] instanceof ClientTrack) { trackTypes[addAt] = TrackType.Local; allSpotify = false; } else { trackTypes[addAt] = TrackType.Spotify; allLocal = false; } addAt++; } } db.recreatePlaylist(newTrackIDs, this.playlistID, allLocal, allSpotify, trackTypes); }
private static void generateSpotifyOperation( ClientTrack[] selectedTracks, TrackDatabase db, PlaylistTableModel playlistTableModel) { Client client = new Client(5000, db); ServerTrack[] seeds = new ServerTrack[selectedTracks.length]; boolean someSCMSDataAvailable = false; for (int i = 0; i < selectedTracks.length; i++) { if (selectedTracks[i].getScms(db) != null) { someSCMSDataAvailable = true; seeds[i] = new ServerTrack( i, selectedTracks[i].getTrackName(), selectedTracks[i].getArtistName(db), selectedTracks[i].getScms()); } else { seeds[i] = null; } } if (someSCMSDataAvailable) { try { db.createNewSpotifyPlaylist(client.similarTracks(seeds)); } catch (Exception e) { new ErrorMessage("Error in connection to server. Could not generate Spotify playlist"); } playlistTableModel.setPlaylists(); playlistTableModel.fireTableDataChanged(); } else { new ErrorMessage("No SCMS data is available for any of the selected tracks"); } // Unset SCMS data in tracks for (int i = 0; i < selectedTracks.length; i++) { if (selectedTracks[i] != null) { selectedTracks[i].unsetScms(); } } }
public Track[] getTracksInPlaylist(TrackDatabase db) { return db.getTracksInPlaylist(this.playlistID); }