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 }