-
Notifications
You must be signed in to change notification settings - Fork 0
/
Playlist.java
99 lines (88 loc) · 2.88 KB
/
Playlist.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import java.util.ArrayList;
public class Playlist {
private String playlistTitle;
private ArrayList<Song> songs = new ArrayList<>();
public Playlist() { //Default constructor
}
public Playlist (String playlistTitle) { //Constructor with playlistTitle parameter
this.playlistTitle = playlistTitle;
}
public String getPlaylistTitle() { //PlaylistTitle accessor
return playlistTitle;
}
public void setTitle(String playlistTitle) { //PlaylistTitle mutator
this.playlistTitle = playlistTitle;
}
public void addSong(Song input) { //Adds Song given Song object
songs.add(input);
}
public void removeSong(String inputName) { //Removes Song given Song title
for (int i = 0; i < songs.size(); i++) {
if (songs.get(i).getSongName().equals(inputName)) {
songs.remove(i);
return;
}
}
}
public void swapSongs(Song song1, Song song2) { //Swaps the positions of two songs
String song1Name = song1.getSongName();
String song2Name = song2.getSongName();
Song temp1 = null;
Song temp2 = null;
int song1Index = 0;
int song2Index = 0;
boolean song1Exists = false;
boolean song2Exists = false;
for (int i = 0; i < songs.size(); i++) {
if (songs.get(i).getSongName().equals(song1Name)) {
temp1 = (Song)songs.get(i).clone();
song1Index = i;
song1Exists = true;
}
if (songs.get(i).getSongName().equals(song2Name)) {
temp2 = (Song)songs.get(i).clone();
song2Index = i;
song2Exists = true;
}
}
if (song1Exists && song2Exists) {
songs.set(song1Index, temp2);
songs.set(song2Index, temp1);
}
}
public String getTotalTime() { //Calculates total time of playlist
int totalMinutes = 0;
int totalSeconds = 0;
String[] timeArray = new String[2];
for (int i = 0; i < songs.size(); i++) {
timeArray = songs.get(i).getDuration().split(":");
totalMinutes += Integer.parseInt(timeArray[0]);
totalSeconds += Integer.parseInt(timeArray[1]);
}
totalMinutes += (totalSeconds / 60);
totalSeconds = (totalSeconds % 60);
return (totalMinutes + " min, " + totalSeconds + " sec");
}
public void sortSongs() { //Sorts the playlist
boolean sorted = false;
Song temp = new Song();
while (!sorted) {
sorted = true;
for (int i = 0; i < songs.size()-1; i++) {
if (songs.get(i).compareTo(songs.get(i+1)) > 0) {
temp = songs.get(i);
songs.set(i, songs.get(i+1));
songs.set(i+1, temp);
sorted = false;
}
}
}
}
public String toString() { //Overrides toString
String songList = "";
for (int i = 0; i < songs.size(); i++) {
songList += (i + 1) + ". " + songs.get(i).toString() + "\n";
}
return this.getPlaylistTitle() + " - " + this.getTotalTime() + "\n" + songList;
}
}