View Javadoc

1   package org.rpi.radio;
2   
3   import org.apache.log4j.Logger;
4   import org.rpi.playlist.CustomTrack;
5   
6   public class CustomChannel extends CustomTrack {
7   
8   	private static Logger log = Logger.getLogger(CustomChannel.class);
9   
10  	public CustomChannel(String uri, String metadata, int id,String name) {
11  		super(uri, metadata, id);
12  		setName(name);
13  		setFull_text(GetFullString());
14  	}
15  
16  	private String entryStart = "<Entry>";
17  	private String entryEnd = "</Entry>";
18  	private String idStart = "<Id>";
19  	private String idEnd = "</Id>";
20  	private String uriStart = "<Uri>";
21  	private String uriEnd = "</Uri>";
22  	private String metaStart = "<Metadata>";
23  	private String metaEnd = "</Metadata>";
24  	private String title = "";
25  	private String full_text = "";
26  	private String name = "";
27  
28  	public String getUniqueId()
29  	{
30  		return "Radio:" + super.getId();
31  	}
32  
33  	private String GetFullString() {
34  		StringBuilder sb = new StringBuilder();
35  		sb.append(entryStart);
36  		sb.append(idStart);
37  		sb.append(getId());
38  		sb.append(idEnd);
39  		sb.append(uriStart);
40  		sb.append(protectSpecialCharacters(getUri()));
41  		sb.append(uriEnd);
42  		sb.append(metaStart);
43  		sb.append(protectSpecialCharacters(getMetadata()));
44  		sb.append(metaEnd);
45  		sb.append(entryEnd);
46  		return sb.toString();
47  	}
48  
49  	private String protectSpecialCharacters(String originalUnprotectedString) {
50  		 if (originalUnprotectedString == null) {
51  		 return null;
52  		 }
53  		 boolean anyCharactersProtected = false;
54  		
55  		 StringBuffer stringBuffer = new StringBuffer();
56  		 for (int i = 0; i < originalUnprotectedString.length(); i++) {
57  		 char ch = originalUnprotectedString.charAt(i);
58  		
59  		 boolean controlCharacter = ch < 32;
60  		 boolean unicodeButNotAscii = ch > 126;
61  		 boolean characterWithSpecialMeaningInXML = ch == '<' || ch == '&' ||
62  		 ch == '>';
63  		
64  		 if (characterWithSpecialMeaningInXML || unicodeButNotAscii ||
65  		 controlCharacter) {
66  		 stringBuffer.append("&#" + (int) ch + ";");
67  		 anyCharactersProtected = true;
68  		 } else {
69  		 stringBuffer.append(ch);
70  		 }
71  		 }
72  		 if (anyCharactersProtected == false) {
73  		 return originalUnprotectedString;
74  		 }
75  		 return stringBuffer.toString();
76  	}
77  
78  	/**
79  	 * @return the full_text
80  	 */
81  	public String getFull_text() {
82  		return full_text;
83  	}
84  
85  	/**
86  	 * @param full_text
87  	 *            the full_text to set
88  	 */
89  	private void setFull_text(String full_text) {
90  		this.full_text = full_text;
91  	}
92  
93  	private String temp_meta = "";
94  
95  	public String updateTrack(String title, String artist) {
96  		temp_meta = super.updateTrack(title, artist);
97  		return temp_meta;
98  	}
99  
100 	public String getMetadata() {
101 		return super.getMetadata();
102 	}
103 
104 
105 	/**
106 	 * @return the temp_meta
107 	 */
108 	public String getTempMeta() {
109 		return temp_meta;
110 	}
111 
112 	/**
113 	 * @param temp_meta
114 	 *            the temp_meta to set
115 	 */
116 	public void setTempMeta(String temp_meta) {
117 		this.temp_meta = temp_meta;
118 	}
119 
120 	/**
121 	 * @return the name
122 	 */
123 	public String getName() {
124 		return name;
125 	}
126 
127 	/**
128 	 * @param name the name to set
129 	 */
130 	private void setName(String name) {
131 		this.name = name;
132 	}
133 
134 }