1 package org.rpi.playlist;
2
3 import java.io.File;
4 import java.util.concurrent.CopyOnWriteArrayList;
5
6 import javax.xml.parsers.DocumentBuilder;
7 import javax.xml.parsers.DocumentBuilderFactory;
8 import org.rpi.playlist.CustomTrack;
9 import org.apache.log4j.Logger;
10 import org.rpi.providers.PrvPlayList;
11 import org.w3c.dom.Document;
12 import org.w3c.dom.Element;
13 import org.w3c.dom.Node;
14 import org.w3c.dom.NodeList;
15
16 public class PlayListReader {
17
18 private CopyOnWriteArrayList<CustomTrack> tracks = new CopyOnWriteArrayList<CustomTrack>();
19
20 private static Logger log = Logger.getLogger(PlayListReader.class);
21 private PrvPlayList iPlayList = null;
22
23 private int max_id = 0;
24
25 public PlayListReader(PrvPlayList iPlayList) {
26 this.iPlayList = iPlayList;
27 }
28
29 public String getXML() {
30 tracks.clear();
31 try {
32 long startTime = System.nanoTime();
33 File file = new File("PlayList.xml");
34 DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
35 DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
36 Document doc = documentBuilder.parse(file);
37 NodeList listOfChannels = doc.getElementsByTagName("Entry");
38 for (int s = 0; s < listOfChannels.getLength(); s++) {
39 Node channel = listOfChannels.item(s);
40 Element element = (Element) channel;
41 String id = getElementTest(element, "Id");
42 int iId = Integer.parseInt(id);
43 if(iId > max_id)
44 {
45 max_id = iId;
46 }
47 String url = getElementTest(element, "Uri");
48 String metadata = getElementTest(element, "Metadata");
49 CustomTrack t = new CustomTrack(url, metadata, Integer.parseInt(id));
50 tracks.add(t);
51 log.debug("Adding Track Id: " + id + " URL: " + url + " " + t.getFullDetails());
52 }
53 iPlayList.setNextId(max_id);
54 iPlayList.setTracks(tracks);
55 long endTime = System.nanoTime();
56 long duration = endTime - startTime;
57
58
59 } catch (Exception e) {
60 log.error("Error: Reading XML", e);
61 }
62 return "";
63 }
64
65
66
67
68
69
70
71 private String getElementTest(Element element, String name) {
72 String res = "";
73 NodeList nid = element.getElementsByTagName(name);
74 if (nid != null) {
75 Element fid = (Element) nid.item(0);
76 if (fid != null) {
77 res = fid.getTextContent();
78
79 return res;
80
81 }
82 }
83 return res;
84 }
85
86 }