From e9ee951e570c441151385d1ccd8c4230abf704ca Mon Sep 17 00:00:00 2001 From: Clyhtsuriva Date: Sat, 26 Jun 2021 14:32:12 +0200 Subject: Updated javadoc, added jacoco and the necessary JUnit for this feature. --- .../site/jacoco/musichub.business/Album.java.html | 146 +++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 target/site/jacoco/musichub.business/Album.java.html (limited to 'target/site/jacoco/musichub.business/Album.java.html') diff --git a/target/site/jacoco/musichub.business/Album.java.html b/target/site/jacoco/musichub.business/Album.java.html new file mode 100644 index 0000000..107bbe9 --- /dev/null +++ b/target/site/jacoco/musichub.business/Album.java.html @@ -0,0 +1,146 @@ +Album.java

Album.java

package musichub.business;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+
+public class Album {
+    private final String title;
+    private final int lengthInSeconds;
+    private final UUID uuid;
+    private String artist;
+    private Date date;
+    private ArrayList<UUID> songsUIDs;
+
+    public Album(String title, String artist, int lengthInSeconds, String id, String date, ArrayList<UUID> songsUIDs) {
+        this.title = title;
+        this.artist = artist;
+        this.lengthInSeconds = lengthInSeconds;
+        this.uuid = UUID.fromString(id);
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            this.date = sdf.parse(date);
+        } catch (ParseException ex) {
+            ex.printStackTrace();
+        }
+        this.songsUIDs = songsUIDs;
+    }
+
+    public Album(String title, String artist, int lengthInSeconds, String date) {
+        this.title = title;
+        this.artist = artist;
+        this.lengthInSeconds = lengthInSeconds;
+        this.uuid = UUID.randomUUID();
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            this.date = sdf.parse(date);
+        } catch (ParseException ex) {
+            ex.printStackTrace();
+        }
+        this.songsUIDs = new ArrayList<>();
+    }
+
+    public Album(Element xmlElement) throws Exception {
+        {
+            this.title = xmlElement.getElementsByTagName("title").item(0).getTextContent();
+            this.lengthInSeconds = Integer.parseInt(xmlElement.getElementsByTagName("lengthInSeconds").item(0).getTextContent());
+            String uuid = null;
+            try {
+                uuid = xmlElement.getElementsByTagName("UUID").item(0).getTextContent();
+            } catch (Exception ex) {
+                System.out.println("Empty album UUID, will create a new one");
+            }
+            if ((uuid == null) || (uuid.isEmpty()))
+                this.uuid = UUID.randomUUID();
+            else this.uuid = UUID.fromString(uuid);
+
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            this.date = sdf.parse(xmlElement.getElementsByTagName("date").item(0).getTextContent());
+            //parse list of songs:
+            Node songsElement = xmlElement.getElementsByTagName("songs").item(0);
+            NodeList songUUIDNodes = songsElement.getChildNodes();
+            if (songUUIDNodes == null) return;
+
+            this.songsUIDs = new ArrayList<>();
+
+            for (int i = 0; i < songUUIDNodes.getLength(); i++) {
+                if (songUUIDNodes.item(i).getNodeType() == Node.ELEMENT_NODE) {
+                    Element songElement = (Element) songUUIDNodes.item(i);
+                    if (songElement.getNodeName().equals("UUID")) {
+                        try {
+                            this.addSong(UUID.fromString(songElement.getTextContent()));
+                        } catch (Exception ex) {
+                            ex.printStackTrace();
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+
+    public void addSong(UUID song) {
+        songsUIDs.add(song);
+    }
+
+
+    public List<UUID> getSongs() {
+        return songsUIDs;
+    }
+
+    public ArrayList<UUID> getSongsRandomly() {
+        ArrayList<UUID> shuffledSongs = songsUIDs;
+        Collections.shuffle(shuffledSongs);
+        return shuffledSongs;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void createXMLElement(Document document, Element parentElement) {
+        Element albumElement = document.createElement("album");
+        parentElement.appendChild(albumElement);
+
+        Element nameElement = document.createElement("title");
+        nameElement.appendChild(document.createTextNode(title));
+        albumElement.appendChild(nameElement);
+
+        Element artistElement = document.createElement("artist");
+        artistElement.appendChild(document.createTextNode(artist));
+        albumElement.appendChild(artistElement);
+
+        Element lengthElement = document.createElement("lengthInSeconds");
+        lengthElement.appendChild(document.createTextNode(Integer.valueOf(lengthInSeconds).toString()));
+        albumElement.appendChild(lengthElement);
+
+        Element UUIDElement = document.createElement("UUID");
+        UUIDElement.appendChild(document.createTextNode(uuid.toString()));
+        albumElement.appendChild(UUIDElement);
+
+        Element dateElement = document.createElement("date");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        dateElement.appendChild(document.createTextNode(sdf.format(date)));
+        albumElement.appendChild(dateElement);
+
+        Element songsElement = document.createElement("songs");
+        for (UUID currentUUID : this.songsUIDs) {
+            Element songUUIDElement = document.createElement("UUID");
+            songUUIDElement.appendChild(document.createTextNode(currentUUID.toString()));
+            songsElement.appendChild(songUUIDElement);
+        }
+        albumElement.appendChild(songsElement);
+
+    }
+}
+
\ No newline at end of file -- cgit v1.2.3