View Javadoc

1   package org.rpi.playlist;
2   
3   import java.io.PrintWriter;
4   import java.util.concurrent.CopyOnWriteArrayList;
5   
6   import org.apache.log4j.Logger;
7   import org.rpi.config.Config;
8   
9   public class PlayListWriter extends Thread {
10  
11  	private boolean save = false;
12  	private int counter = 0;
13  	private CopyOnWriteArrayList<CustomTrack> tracks = null;
14  	private Logger log = Logger.getLogger(PlayListWriter.class);
15  
16  	public PlayListWriter() {
17  		this.setName("PlayListWriter");
18  	}
19  
20  	public void trigger(CopyOnWriteArrayList<CustomTrack> tracks) {
21  		this.tracks = tracks;
22  		save = true;
23  		counter = 0;
24  	}
25  
26  	private String getList() {
27  		int i = 0;
28  		StringBuilder sb = new StringBuilder();
29  		sb.append("<TrackList>");
30  		for (CustomTrack t : tracks) {
31  			i++;
32  			sb.append(t.getFullText());
33  		}
34  		sb.append("</TrackList>");
35  		log.debug("PlayList Contains : " + i);
36  		return sb.toString();
37  	}
38  
39  	@Override
40  	public void run() {
41  		try {
42  			while (true) {
43  				if (save && Config.save_local_playlist) {
44  					if (counter < 5) {
45  						counter++;
46  					} else {
47  						String xml = getList();
48  						log.debug("Saving PlayList: " );
49  						try {
50  							String s = new String(xml.getBytes(), "UTF-8");
51  							PrintWriter out = new PrintWriter("PlayList.xml");
52  							try {
53  								out.print(s);
54  							} finally {
55  								out.close();
56  							}
57  							save = false;
58  							log.debug("Saved PlayList");
59  						} catch (Exception e) {
60  							log.error("Error: SavePlayList", e);
61  						}
62  					}
63  				}
64  				Thread.sleep(1000);
65  			}
66  
67  		} catch (Exception e) {
68  			log.error("Error: SavePlayList", e);
69  		}
70  	}
71  
72  }