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
80
81 public String getFull_text() {
82 return full_text;
83 }
84
85
86
87
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
107
108 public String getTempMeta() {
109 return temp_meta;
110 }
111
112
113
114
115
116 public void setTempMeta(String temp_meta) {
117 this.temp_meta = temp_meta;
118 }
119
120
121
122
123 public String getName() {
124 return name;
125 }
126
127
128
129
130 private void setName(String name) {
131 this.name = name;
132 }
133
134 }