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 }