Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Go back to the Song class and add to it an attribute called owner which will be

ID: 3737132 • Letter: G

Question

Go back to the Song class and add to it an attribute called owner which will be a User object representing the user who happens to own this copy of this song. Note that a Song object may only be owned by one User and that many users can have copies of the same song. Set it to null initially. In the User class, adjust the addSong() method so that it sets the owner properly.

In the User class, add a method called requestCompleteSonglist(MusicExchangeCenter m). This method should gather the list of all available songs from all users that are online at the given music exchange center (i.e., the union of all of their local song lists), and then return an ArrayList formatted as follows:

Notice that the songs are numbered and that the title, artist, time and owner are all lined up nicely. You should use the String.format() method as described in the notes. Recall that %-30s in the format string will allow you to display a left-justified 30-character string. Also, %2d and %02d will allow you to display numbers so that they take 2 places, the 0 indicating that a leading zero character is desired.

In the User class, add a method called requestSonglistByArtist(MusicExchangeCenter m, String artist). This method should gather the list of all available songs by the given artist from all users that are online at the given music exchange center (i.e., the union of all of their local song lists), and then return an ArrayList formatted similar to that shown above.

In the MusicExchangeCenter class, add a method called getSong(String title, String ownerName) which returns the Song object with the given title owned by the user with the given ownerName, provided that the user is currently online and that the song exists. Return null otherwise. (Hint: you will need to search through the center’s users to find User with the matching ownerName and then search through that user’s songs to find the Song with the given title. It may be a good idea to write an extra helper method in the User class called songWithTitle() that you can make use of).

In the User class, add a downloadSong(MusicExchangeCenter m, String title, String ownerName) method that simulates the downloading of one of the songs in the catalog. It should use the getSong() method that you just wrote, and add the downloaded song to the user’s songList (if not null).

Test your code now with the following program:

// User.java

import java.util.ArrayList;

public class User {

                private String userName;

                private boolean online;

                // array list of songs

                ArrayList<Song> songList;

                public User() {

                                this("");

                }

                public User(String u) {

                                userName = u;

                               >

                                // initializing songs list

                                songList = new ArrayList<Song>();

                }

                // getter method for songs list

                public ArrayList<Song> getSongList() {

                                return songList;

                }

                public String getUserName() {

                                return userName;

                }

                public boolean isOnline() {

                                return online;

                }

                public String toString() {

                                // will show the number of songs also

                                String s = "" + userName + ": " + songList.size() + " songs (";

                                if (!online)

                                                s += "not ";

                                return s + "online)";

                }

                /**

                * method to add a song to the list

                */

                public void addSong(Song song) {

                                songList.add(song);

                }

                /**

                * method to find the total play time of all songs in the list

                */

                public int totalSongTime() {

                                int total = 0;

                                for (Song s : songList) {

                                                // adding the duration to the total

                                                total += s.getDuration();

                                }

                                return total;

                }

                /**

                * method to register the current user in a MusicExchangeCenter

                */

                public void register(MusicExchangeCenter m) {

                                m.registerUser(this);

                }

                /**

                * method to login the current user into a MusicExchangeCenter, only if

                * he/she is a member

                */

                public void logon(MusicExchangeCenter m) {

                                if (m.userWithName(userName) != null) {

                                               >

                                }

                }

                /**

                * method to logoff the current user into a MusicExchangeCenter, only if

                * he/she is a member

                */

                public void logoff(MusicExchangeCenter m) {

                                if (m.userWithName(userName) != null) {

                                               >

                                }

                }

                // Various Users for test purposes

                public static User DiscoStew() {

                                User discoStew = new User("Disco Stew");

                                discoStew.addSong(new Song("Hey Jude", "The Beatles", 4, 35));

                                discoStew.addSong(new Song("Barbie Girl", "Aqua", 3, 54));

                                discoStew.addSong(new Song("Only You Can Rock Me", "UFO", 4, 59));

                                discoStew.addSong(new Song("Paper Soup Cats", "Jaw", 4, 18));

                                return discoStew;

                }

                public static User SleepingSam() {

                                User sleepingSam = new User("Sleeping Sam");

                                sleepingSam.addSong(new Song("Meadows", "Sleepfest", 7, 15));

                                sleepingSam.addSong(new Song("Calm is Good", "Waterfall", 6, 22));

                                return sleepingSam;

                }

                public static User RonnieRocker() {

                                User ronnieRocker = new User("Ronnie Rocker");

                                ronnieRocker.addSong(new Song("Rock is Cool", "Yeah", 4, 17));

                                ronnieRocker.addSong(new Song("My Girl is Mean to Me",

                                                                "Can't Stand Up", 3, 29));

                                ronnieRocker.addSong(new Song("Only You Can Rock Me", "UFO", 4, 52));

                                ronnieRocker.addSong(new Song("We're Not Gonna Take It",

                                                                "Twisted Sister", 3, 9));

                                return ronnieRocker;

                }

                public static User CountryCandy() {

                                User countryCandy = new User("Country Candy");

                                countryCandy.addSong(new Song("If I Had a Hammer", "Long Road", 4, 15));

                                countryCandy.addSong(new Song("My Man is a 4x4 Driver", "Ms. Lonely",

                                                                3, 7));

                                countryCandy.addSong(new Song("This Song is for Johnny", "Lone Wolf",

                                                                4, 22));

                                return countryCandy;

                }

                public static User PeterPunk() {

                                User peterPunk = new User("Peter Punk");

                                peterPunk.addSong(new Song("Bite My Arms Off", "Jaw", 4, 12));

                                peterPunk

                                                                .addSong(new Song("Where's My Sweater", "The Knitters", 3, 41));

                                peterPunk.addSong(new Song("Is that My Toenail ?", "Clip", 4, 47));

                                peterPunk.addSong(new Song("Anvil Headache", "Clip", 4, 34));

                                peterPunk.addSong(new Song("My Hair is on Fire", "Jaw", 3, 55));

                                return peterPunk;

                }

}

// MusicExchangeCenter.java

import java.util.ArrayList;

public class MusicExchangeCenter {

                // array list of all available users

                private ArrayList<User> users;

                public MusicExchangeCenter() {

                                // initializing users list

                                users = new ArrayList<User>();

                }

                /**

                * returns all online users

                */

                public ArrayList<User> onlineUsers() {

                                ArrayList<User> ArrayList<User>();

                                for (User u : users) {

                                                if (u.isOnline()) {

                                                                online.add(u);

                                                }

                                }

                                return online;

                }

                /**

                * returns all available songs from all online users

                */

                public ArrayList<Song> allAvailableSongs() {

                                ArrayList<Song> availableSongs = new ArrayList<Song>();

                                for (User u : onlineUsers()) {

                                                availableSongs.addAll(u.getSongList());

                                }

                                return availableSongs;

                }

                @Override

                public String toString() {

                                // returning a string in proper format

                                return "Music Exchange Center (" + onlineUsers().size()

                                                                + " users online, " + allAvailableSongs().size()

                                                                + " songs available)";

                }

                /**

                * returns the User with given name if found

                *

                * @param s

                *            - user name

                * @return - User object if found, else null

                */

                public User userWithName(String s) {

                                for (User u : users) {

                                                if (u.getUserName().equalsIgnoreCase(s)) {

                                                                return u;

                                                }

                                }

                                return null;

                }

                /**

                * method to register a user, if not already exist

                */

                public void registerUser(User x) {

                                if (userWithName(x.getUserName()) == null) {

                                                users.add(x);

                                }

                }

                /**

                * returns all available songs by a specific artist , from all online users

                */

                public ArrayList<Song> availableSongsByArtist(String artist) {

                                ArrayList<Song> songsByArtist = new ArrayList<Song>();

                                for (Song s : allAvailableSongs()) {

                                                if (s.getArtist().equalsIgnoreCase(artist)) {

                                                                songsByArtist.add(s);

                                                }

                                }

                                return songsByArtist;

                }

}

// Song.java

Explanation / Answer

MusicExchangeTestProgram.java

public class MusicExchangeTestProgram {
    public static void main(String args[]) {
        // Create a new music exchange center
        MusicExchangeCenter mec = new MusicExchangeCenter();

        // Create some users and give them some songs
        User discoStew = User.DiscoStew();
        User sleepingSam = User.SleepingSam();
        User ronnieRocker = User.RonnieRocker();
        User countryCandy = User.CountryCandy();
        User peterPunk = User.PeterPunk();

        // Register the users, except SleepingSam
        discoStew.register(mec);
        ronnieRocker.register(mec);
        countryCandy.register(mec);
        peterPunk.register(mec);

        // Display the state of things before anyone logs on
        System.out.println("Status: " + mec);
        System.out.println("On-Line Users: " + mec.onlineUsers());
        System.out.println("Available Songs: " + mec.allAvailableSongs() + " ");

        // Attempt to log on two registered users and one unregistered user
        discoStew.logon(mec);
        sleepingSam.logon(mec); // Should not work
        ronnieRocker.logon(mec);
        System.out.println("Status: " + mec);
        System.out.println("On-Line Users: " + mec.onlineUsers());
        System.out.println("Available Songs: " + mec.allAvailableSongs() + " ");

        // Log on two more users
        countryCandy.logon(mec);
        peterPunk.logon(mec);
        System.out.println("Status: " + mec);
        System.out.println("On-Line Users: " + mec.onlineUsers());
        System.out.println("Available Songs: " + mec.allAvailableSongs());
        System.out.println("Available Songs By Jaw: " +
                mec.availableSongsByArtist("Jaw") + " ");

        // Log off three users (one is not even logged in)
        countryCandy.logoff(mec);
        discoStew.logoff(mec);
        sleepingSam.logoff(mec);
        System.out.println("Status: " + mec);
        System.out.println("On-Line Users: " + mec.onlineUsers());
        System.out.println("Available Songs: " + mec.allAvailableSongs());
        System.out.println("Available Songs By Jaw: " +
                mec.availableSongsByArtist("Jaw") + " ");

        // Log off the last two users
        peterPunk.logoff(mec);
        ronnieRocker.logoff(mec);
        System.out.println("Status: " + mec);
        System.out.println("On-Line Users: " + mec.onlineUsers());
        System.out.println("Available Songs: " + mec.allAvailableSongs());
        System.out.println("Available Songs By Jaw: " +
                mec.availableSongsByArtist("Jaw") + " ");
    }
}

MusicExchangeCenter.java

import javafx.util.Pair;

import java.util.*;

public class MusicExchangeCenter {
    Map<String, Double> royalties = new HashMap<String, Double>();

    ArrayList<User> users;
    private ArrayList<Song> downloadedSongs = new ArrayList<Song>();

    public ArrayList<Song> getDownloadedSongs() {
        return downloadedSongs;
    }

    public MusicExchangeCenter() {
        users = new ArrayList<>();
    }

    public static ArrayList removeDuplicate(ArrayList list) {
        ArrayList newlist = list;
        try {
            for (int i = 0; i < list.size(); i++) {
                //print("" + list.size());
                for (int j = i + 1; j < list.size(); j++) {
                    if (list.get(i).equals(list.get(j))) {
                        newlist.remove(j);
                        //print("I removed something");
                    }
                }
            }
        } catch (IndexOutOfBoundsException e) {
            return removeDuplicate(newlist);
        }
        return list;

    }

    public TreeSet<Song> uniqueDownloads() {
        TreeSet<Song> aTreeSet = new TreeSet<>(new Comparator<Song>() {
            @Override
            public int compare(Song o1, Song o2) {
                return o1.getTitle().compareTo(o2.getTitle());
            }
        });

        for (Song song : downloadedSongs) {
            aTreeSet.add(song);
        }
        return aTreeSet;
    }

    public ArrayList<Pair<Integer, Song>> songsByPopularity() {
        ArrayList<Pair<Integer, Song>> anArray = new ArrayList<>();
        int downloadCount;
        for (Song song : uniqueDownloads()) {
            downloadCount = 0;
            for (Song songinlist : downloadedSongs) {
                if (song.getTitle().equals(songinlist.getTitle())) {
                    downloadCount++;
                }
            }
            anArray.add(new Pair<>(downloadCount, song));
        }
        anArray.sort(new Comparator<Pair<Integer, Song>>() {
            public int compare(Pair<Integer, Song> p1, Pair<Integer, Song> p2) {
                if (p1.getKey() < p2.getKey()) {
                    return 1;
                }
                return -1;
            }
        });
        return anArray;
    }

    public void setRoyalties(Song s) {
        if (royalties.get(s.getArtist()) != null) {
            royalties.put(s.getArtist(), royalties.get(s.getArtist()) + .25);
        } else {
            royalties.put(s.getArtist(), 0.25);
        }
    }

    public void displayRoyalties() {
        print(String.format("%-8s%-10s%n------------------", "Amount", "Artist"));
        for (String artist : royalties.keySet()) {
            print(String.format("%n$%-7.2f%-10s", royalties.get(artist), (artist)));
        }
    }

    public void print(String s) {
        System.out.printf(s);
    }

    public ArrayList onlineUsers() {
        ArrayList<User> ArrayList<>();
        for (User user : users) {
            if (user.isOnline()) {
                onlineUsers.add(user);
            }
        }
        return onlineUsers;
    }

    public ArrayList<Song> allAvailableSongs() {
        ArrayList<Song> availableSongs = new ArrayList<>();
        for (User user : users) {
            if (user.isOnline()) {
                for (Song s : user.getSongList()) {
                    availableSongs.add(s);
                }
            }
        }
        return (ArrayList<Song>) removeDuplicate(availableSongs);
    }

    @Override
    public String toString() {
        return String.format("Music Exchange Center (%s users on-line, %s songs available)", (onlineUsers().isEmpty()) ? 0 : onlineUsers().size(), (allAvailableSongs().isEmpty()) ? 0 : allAvailableSongs().size());
    }

    public User userWithName(String s) {
        for (User user : users) {
            if (user.getUserName().equals(s)) {
                return user;
            }
        }
        return null;
    }

    public void registerUser(User x) {
        if (userWithName(x.getUserName()) == null) {
            users.add(x);
        }
    }


    public Song getSong(String title, String ownerName) {
        for (User u : users) {
            if (u.getUserName().equals(ownerName)) {
                if (u.isOnline()) {
                    for (Song song : u.getSongList()) {
                        if (title.equals(song.getTitle())) {
                            return song;
                        }
                    }
                }
            }
        }
        return null;
    }

    public ArrayList<Song> availableSongsByArtist(String artist) {
        ArrayList<Song> songByArtist = new ArrayList<>();
        for (Song s : allAvailableSongs()) {
            if (s.getArtist().equals(artist)) {
                songByArtist.add(s);
            }
        }
        return songByArtist;

    }
}


User.java

import java.util.ArrayList;

public class User {
    private String userName;
    private boolean online;
    private ArrayList<Song> songList;

    public User() {
        this("");
    }

    public User(String u) {
        userName = u;
       >         songList = new ArrayList<Song>();
    }

    // Various Users for test purposes
    public static User DiscoStew() {
        User discoStew = new User("Disco Stew");
        discoStew.addSong(new Song("Hey Jude", "The Beatles", 4, 35));
        discoStew.addSong(new Song("Barbie Girl", "Aqua", 3, 54));
        discoStew.addSong(new Song("Only You Can Rock Me", "UFO", 4, 59));
        discoStew.addSong(new Song("Paper Soup Cats", "Jaw", 4, 18));
        return discoStew;
    }

    public ArrayList<Song> getSongList() {
        return songList;
    }

    public void register(MusicExchangeCenter m) {
        m.registerUser(this);
    }

    public void logon(MusicExchangeCenter m) {
        if (m.userWithName(userName) != null) {
           >         }
    }

    public void logoff(MusicExchangeCenter m) {
        if (m.userWithName(userName) != null) {
           >         }
    }

    public Song getSongByTitle(String s) {
        for (Song song : songList) {
            if (song.getTitle().equals(s)) {
                return song;
            }
        }
        return null;
    }

    public boolean containsDuplicates() {
        for (int i = 0; i < songList.size(); i++) {
            for (int j = i + 1; j < songList.size(); j++) {
                //print(String.format("%n%s ==== %s", songList.get(i), songList.get(j)));

                if (songList.get(i).getTitle().equals(songList.get(j).getTitle())) {

                    return true;
                }
            }
        }
        return false;
    }

    public void downloadSong(MusicExchangeCenter m, String title, String ownerName) {
        Song songToDownload = m.getSong(title, ownerName);
        if (songToDownload != null) {
            Song newSong = new Song(songToDownload.getTitle(), songToDownload.getArtist(), songToDownload.getMinutes(), songToDownload.getSeconds());
            newSong.owner = this;
            songList.add(newSong);
            m.setRoyalties(newSong);
            m.getDownloadedSongs().add(newSong);
        }
    }

    public static User SleepingSam() {
        User sleepingSam = new User("Sleeping Sam");
        sleepingSam.addSong(new Song("Meadows", "Sleepfest", 7, 15));
        sleepingSam.addSong(new Song("Calm is Good", "Waterfall", 6, 22));
        return sleepingSam;
    }

    public static User RonnieRocker() {
        User ronnieRocker = new User("Ronnie Rocker");
        ronnieRocker.addSong(new Song("Rock is Cool", "Yeah", 4, 17));
        ronnieRocker.addSong(new Song("My Girl is Mean to Me", "Can't Stand Up", 3, 29));
        ronnieRocker.addSong(new Song("Only You Can Rock Me", "UFO", 4, 52));
        ronnieRocker.addSong(new Song("We're Not Gonna Take It", "Twisted Sister", 3, 9));
        return ronnieRocker;
    }

    public static User CountryCandy() {
        User countryCandy = new User("Country Candy");
        countryCandy.addSong(new Song("If I Had a Hammer", "Long Road", 4, 15));
        countryCandy.addSong(new Song("My Man is a 4x4 Driver", "Ms. Lonely", 3, 7));
        countryCandy.addSong(new Song("This Song is for Johnny", "Lone Wolf", 4, 22));
        return countryCandy;
    }

    public static User PeterPunk() {
        User peterPunk = new User("Peter Punk");
        peterPunk.addSong(new Song("Bite My Arms Off", "Jaw", 4, 12));
        peterPunk.addSong(new Song("Where's My Sweater", "The Knitters", 3, 41));
        peterPunk.addSong(new Song("Is that My Toenail ?", "Clip", 4, 47));
        peterPunk.addSong(new Song("Anvil Headache", "Clip", 4, 34));
        peterPunk.addSong(new Song("My Hair is on Fire", "Jaw", 3, 55));
        return peterPunk;
    }

    public String getUserName() {
        return userName;
    }

    public void addSong(Song s) {
        songList.add(s);
        s.owner = this;
    }

    public void print(String s) {
        System.out.println(s);
    }

    public ArrayList<String> requestCompleteSonglist(MusicExchangeCenter m) {
        ArrayList<String> stringList = new ArrayList<>();
        stringList.add(String.format("%3s %-25s %-15s %-6s %-10s", "", "TITLE", "ARTIST", "TIME", "OWNER"));
        for (Song s : m.allAvailableSongs()) {
            stringList.add(String.format("%2s. %-25s %-15s %-1s:%-4s %-10s", stringList.size(), s.getTitle(), s.getArtist(), s.getMinutes(), s.getSeconds(), s.owner.getUserName()));
        }
        for (String s : stringList) {
            //print(s);
        }
        return stringList;
    }

    public ArrayList<String> requestSonglistByArtist(MusicExchangeCenter m, String artist) {
        ArrayList<String> stringList = new ArrayList<>();
        stringList.add(String.format("%3s %-25s %-15s %-6s %-10s%n", "", "TITLE", "ARTIST", "TIME", "OWNER"));
        for (Song s : m.availableSongsByArtist(artist)) {
            stringList.add(String.format("%2s. %-25s %-15s %-1s:%-4s %-10s", stringList.size(), s.getTitle(), s.getArtist(), s.getMinutes(), s.getSeconds(), s.owner.getUserName()));
        }
        return stringList;

    }

    public int totalSongTime() {
        int total = 0;
        for (Song song : songList) {
            total += song.getSeconds();
        }
        return total;
    }

    public boolean isOnline() {
        return online;
    }

    public String toString() {
        String s = "" + userName + ": " + songList.size() + " songs (";
        if (!online) s += "not ";
        return s + "online)";
    }
}

Song.java

public class Song {
    public User owner = null;
    private String title;
    private String artist;
    private int duration;


    public Song() {
        this("", "", 0, 0);
    }

    public Song(String t, String a, int m, int s) {
        title = t;
        artist = a;
        duration = m * 60 + s;

    }

    public String getTitle() {
        return title;
    }

    public String getArtist() {
        return artist;
    }

    public int getDuration() {
        return duration;
    }

    public int getMinutes() {
        return duration / 60;
    }

    public int getSeconds() {
        return duration % 60;
    }

    public String toString() {
        return (""" + title + "" by " + artist + " " + (duration / 60) + ":" + (duration % 60));
    }
}


MusicExchangeTestProgram2.java


import java.util.ArrayList;

public class MusicExchangeTestProgram2 {
    public static void main(String args[]) {
        ArrayList<String> catalog;

        // Create a new music exchange center
        MusicExchangeCenter mec = new MusicExchangeCenter();

        // Create some users and give them some songs
        User discoStew = User.DiscoStew();
        User sleepingSam = User.SleepingSam();
        User ronnieRocker = User.RonnieRocker();
        User countryCandy = User.CountryCandy();
        User peterPunk = User.PeterPunk();

        // Register the users
        discoStew.register(mec);
        ronnieRocker.register(mec);
        sleepingSam.register(mec);
        countryCandy.register(mec);
        peterPunk.register(mec);

        // Log on all users
        discoStew.logon(mec);
        sleepingSam.logon(mec);
        ronnieRocker.logon(mec);
        countryCandy.logon(mec);
        peterPunk.logon(mec);
        System.out.println("Status: " + mec);

        // Simulate a user requesting a list of songs
        catalog = discoStew.requestCompleteSonglist(mec);
        System.out.println("Complete Song List: ");
        for (String s : catalog)
            System.out.println(" " + s);

        // Simulate a user downloading 3 songs from the list
        System.out.println(" Disco Stew before downloading: " + discoStew);
        discoStew.downloadSong(mec, "Bite My Arms Off", "Peter Punk");
        discoStew.downloadSong(mec, "Meadows", "Sleeping Sam");
        discoStew.downloadSong(mec, "If I Had a Hammer", "Country Candy");
        discoStew.downloadSong(mec, "Sandy Toes", "Country Candy");
        ronnieRocker.logoff(mec); // log off Ronnie, next download should fail
        discoStew.downloadSong(mec, "Only You Can Rock Me", "Ronnie Rocker");
        System.out.println("Disco Stew after downloading: " + discoStew);

        ronnieRocker.logon(mec); // log on Ronnie, next download should work
        discoStew.downloadSong(mec, "Only You Can Rock Me", "Ronnie Rocker");
        System.out.println("Disco Stew after downloading Ronnie's: " + discoStew + " ");

        // Simulate a user requesting a list of songs by a specific artist
        catalog = discoStew.requestSonglistByArtist(mec, "Jaw");
        System.out.println("Song's by Jaw: ");
        for (String s : catalog)
            System.out.println(" " + s);
    }
}


MusicExchangeTestProgram3.java

import javafx.util.Pair;

public class MusicExchangeTestProgram3 {
    public static void main(String args[]) {
        // Create a new music exchange center
        MusicExchangeCenter mec = new MusicExchangeCenter();
        // Create some users and give them some songs
        User discoStew = User.DiscoStew();
        User sleepingSam = User.SleepingSam();
        User ronnieRocker = User.RonnieRocker();
        User countryCandy = User.CountryCandy();
        User peterPunk = User.PeterPunk();
// Register the users
        discoStew.register(mec);
        ronnieRocker.register(mec);
        sleepingSam.register(mec);
        countryCandy.register(mec);
        peterPunk.register(mec);
        // Log on all users
        discoStew.logon(mec);
        sleepingSam.logon(mec);
        ronnieRocker.logon(mec);
        countryCandy.logon(mec);
        peterPunk.logon(mec);
        System.out.println("Status: " + mec);
        // Simulate users downloading various songs
        discoStew.downloadSong(mec, "Bite My Arms Off", "Peter Punk");
        discoStew.downloadSong(mec, "Meadows", "Sleeping Sam");
        discoStew.downloadSong(mec, "If I Had a Hammer", "Country Candy");
        discoStew.downloadSong(mec, "Is that My Toenail ?", "Peter Punk");
        sleepingSam.downloadSong(mec, "Anvil Headache", "Peter Punk");
        sleepingSam.downloadSong(mec, "Is that My Toenail ?", "Disco Stew");
        sleepingSam.downloadSong(mec, "If I Had a Hammer", "Country Candy");
        countryCandy.downloadSong(mec, "Anvil Headache", "Peter Punk");
        countryCandy.downloadSong(mec, "Meadows", "Sleeping Sam");
        countryCandy.downloadSong(mec, "If I Had a Hammer", "Peter Punk");
        countryCandy.downloadSong(mec, "Only You Can Rock Me", "Ronnie Rocker");
        countryCandy.downloadSong(mec, "Is that My Toenail ?", "Disco Stew");
        peterPunk.downloadSong(mec, "Is that My Toenail ?", "Country Candy");
        peterPunk.downloadSong(mec, "Rock is Cool", "Ronnie Rocker");
        peterPunk.downloadSong(mec, "What?", "Ronnie Rocker");
        peterPunk.downloadSong(mec, "Meadows", "Sleeping Sam");
        // Display the downloaded songs
        System.out.println(" Here are the downloaded songs: ");
        for (Song s : mec.getDownloadedSongs())
            System.out.println(s);
        // Display the downloaded songs alphabetically
        System.out.println(" Here are the unique downloaded songs alphabetically: ");
        for (Song s : mec.uniqueDownloads())
            System.out.println(s);
        // Display the downloaded songs in order of popularity
        System.out.println(" Here are the downloaded songs by populariry: ");
        for (Pair<Integer, Song> p : mec.songsByPopularity())
            System.out.println("(" + p.getKey() + " downloads) " + p.getValue());
        // Display the royalties
        System.out.println(" Here are the royalties: ");
        mec.displayRoyalties();
    }
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote