Tugas Pertemuan 5 PBO
Nama : Moh. Rizky Rahmadian Makkani
NRP : 5025231035
Kelas : PBO A
Tugas Pertemuan 5 : PBO
Main
public class Main {
public static void main(String[] args) {
MusicOrganizer org = new MusicOrganizer();
org.listAllTracks();
org.playTrack(1);
org.playTrack(3);
org.stopTrack();
org.playTrack(2);
org.stopTrack();
}
}
Track Reader
package track;
import java.util.ArrayList;
import java.io.File;
public class TrackReader {
public ArrayList readTracks(String folderName){
ArrayList tracks = new ArrayList<>();
File folder = new File(folderName);
if (!folder.exists() || !folder.isDirectory()) {
System.out.println("Invalid folder path!");
return tracks;
}
File[] files = folder.listFiles((dir, name) -> name.endsWith(".mp3"));
if (files == null || files.length == 0) {
System.out.println("No mp3 files found in the folder.");
return tracks;
}
for(File file : files){
String fileNameFull = file.getName();
String fileName = fileNameFull.substring(0, fileNameFull.lastIndexOf(".mp3"));
String[] parts = fileName.split("-");
if (parts.length == 2) {
String title = parts[0].trim();
String artist = parts[1].trim();
tracks.add(new Track(fileName, artist, title));
} else {
System.out.println("File name format incorrect for: " + fileName);
}
}
return tracks;
}
}
ClassTrack
package track;
public class Track {
private String filename;
private String artist;
private String title;
public Track(String filename, String artist, String title){
this.filename = filename;
this.artist = artist;
this.title = title;
}
public String getFilename(){
return filename;
}
public String getArtist(){
return artist;
}
public String getTitle(){
return title;
}
public String getDisplayString(){
return artist + " - " + title;
}
}
MusicPlayer
package music;
public class MusicPlayer {
private boolean isPlaying;
public MusicPlayer(){
isPlaying = false;
}
public void startPlaying(String filename){
System.out.println("File: " + filename + " is now playing.");
isPlaying = true;
}
public void stopPlaying(){
if(isPlaying){
System.out.println("Track stopped.");
isPlaying = false;
}else{
System.out.println("No track is currently playing.");
}
}
}
Music Organizer
package music;
import track.*;
import java.util.ArrayList;
public class MusicOrganizer {
private ArrayList tracks;
private MusicPlayer player;
private TrackReader reader;
public MusicOrganizer(){
tracks = new ArrayList();
player = new MusicPlayer();
reader = new TrackReader();
readLibrary("../music_files");
System.out.println("Music library loaded. " + getNumberOfTracks() + " tracks.");
System.out.println();
}
public void addTrack(Track track){
tracks.add(track);
}
public int getNumberOfTracks(){
return tracks.size();
}
public void searchTrack(int index){
if(index >= 0 && index < tracks.size()){
Track result = tracks.get(index);
System.out.println(result.getDisplayString());
}
}
public void listAllTracks(){
if(tracks.size() > 0){
System.out.println("Tracks List:");
int index = 0;
while(index < tracks.size()){
Track track = tracks.get(index);
index++;
System.out.println(index + ". " + track.getDisplayString());
}
}else{
System.out.println("Tracks List is empty.");
}
System.out.println("");
}
public void removeTrack(int index){
if(index >= 0 && index < tracks.size()){
tracks.remove(index);
}
}
public void playTrack(int index){
int real_index = index - 1;
if(indexValid(real_index)){
Track track = tracks.get(real_index);
player.startPlaying(track.getFilename());
System.out.println("Now playing: " + track.getDisplayString());
}
System.out.println("");
}
public void stopTrack(){
player.stopPlaying();
System.out.println("");
}
public void readLibrary(String folderName){
tracks = reader.readTracks(folderName);
}
public boolean indexValid(int index){
return index >= 0 && index < tracks.size();
}
}
Komentar
Posting Komentar