AudioBook.java

package musichub.business;

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

public class AudioBook extends AudioElement {
    private Language language;
    private Category category;

    public AudioBook(String title, String artist, int lengthInSeconds, String uid, String content, String language, String category) {
        super(title, artist, lengthInSeconds, uid, content);
        this.setLanguage(language);
        this.setCategory(category);
    }

    public AudioBook(String title, String artist, int lengthInSeconds, String content, String language, String category) {
        super(title, artist, lengthInSeconds, content);
        this.setLanguage(language);
        this.setCategory(category);
    }

    public AudioBook(Element xmlElement) {
        super(xmlElement);
        this.setLanguage(xmlElement.getElementsByTagName("language").item(0).getTextContent());
        this.setCategory(xmlElement.getElementsByTagName("category").item(0).getTextContent());
    }

    public Language getLanguage() {
        return this.language;
    }

    public void setLanguage(String language) {
        switch (language.toLowerCase()) {
            default -> this.language = Language.ENGLISH;
            case "french" -> this.language = Language.FRENCH;
            case "german" -> this.language = Language.GERMAN;
            case "spanish" -> this.language = Language.SPANISH;
            case "italian" -> this.language = Language.ITALIAN;
        }
    }

    public Category getCategory() {
        return this.category;
    }

    public void setCategory(String category) {
        switch (category.toLowerCase()) {
            default -> this.category = Category.YOUTH;
            case "novel" -> this.category = Category.NOVEL;
            case "theater" -> this.category = Category.THEATER;
            case "documentary" -> this.category = Category.DOCUMENTARY;
            case "speech" -> this.category = Category.SPEECH;
        }
    }


    public String toString() {
        return super.toString() + ", Language = " + getLanguage() + ", Category = " + getCategory() + "\n";
    }


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

        super.createXMLElement(document, audioBook);

        Element languageElement = document.createElement("language");
        languageElement.appendChild(document.createTextNode(language.getLanguage()));
        audioBook.appendChild(languageElement);

        Element categoryElement = document.createElement("category");
        categoryElement.appendChild(document.createTextNode(category.getCategory()));
        audioBook.appendChild(categoryElement);

        parentElement.appendChild(audioBook);
    }
}