View Javadoc

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  			//log.warn("Time to Add CustomTracks: " + duration);
58  			//log.debug("HoldHere");
59  		} catch (Exception e) {
60  			log.error("Error: Reading XML", e);
61  		}
62  		return "";
63  	}
64  
65  	/***
66  	 * 
67  	 * @param element
68  	 * @param name
69  	 * @return
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  				// log.debug("ElementName: " + name + " Value: " + res);
79  				return res;
80  
81  			}
82  		}
83  		return res;
84  	}
85  
86  }