Song.java

package musichub.business;

import org.w3c.dom.Document;
import org.w3c.dom.Element;


public class Song extends AudioElement {
    private Genre genre;

    public Song(String title, String artist, int length, String uid, String content, String genre) {
        super(title, artist, length, uid, content);
        this.setGenre(genre);
    }

    public Song(String title, String artist, int length, String content, String genre) {
        super(title, artist, length, content);
        this.setGenre(genre);
    }

    public Song(Element xmlElement) {
        super(xmlElement);
        this.setGenre(xmlElement.getElementsByTagName("genre").item(0).getTextContent());
    }

    public String getGenre() {
        return genre.getGenre();
    }

    public void setGenre(String genre) {
        switch (genre.toLowerCase()) {
            default -> this.genre = Genre.JAZZ;
            case "classic" -> this.genre = Genre.CLASSIC;
            case "hiphop" -> this.genre = Genre.HIPHOP;
            case "rock" -> this.genre = Genre.ROCK;
            case "pop" -> this.genre = Genre.POP;
            case "rap" -> this.genre = Genre.RAP;
        }
    }

    public String toString() {
        return super.toString() + ", Genre = " + getGenre() + "\n";
    }

    public void createXMLElement(Document document, Element parentElement) {
        // song element
        Element song = document.createElement("song");

        super.createXMLElement(document, song);

        Element genreElement = document.createElement("genre");
        genreElement.appendChild(document.createTextNode(genre.getGenre()));
        song.appendChild(genreElement);

        parentElement.appendChild(song);
    }
    

}