KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > servlets > XSPFServlet


1 package com.dotmarketing.servlets;
2
3 import java.io.BufferedReader JavaDoc;
4 import java.io.FileReader JavaDoc;
5 import java.io.FileWriter JavaDoc;
6 import java.io.IOException JavaDoc;
7 import java.io.PrintWriter JavaDoc;
8 import java.io.StringWriter JavaDoc;
9 import java.net.URLEncoder JavaDoc;
10 import java.util.Date JavaDoc;
11 import java.util.List JavaDoc;
12
13 import javax.servlet.ServletException JavaDoc;
14 import javax.servlet.http.HttpServlet JavaDoc;
15 import javax.servlet.http.HttpServletRequest JavaDoc;
16 import javax.servlet.http.HttpServletResponse JavaDoc;
17
18 import com.dotmarketing.beans.Host;
19 import com.dotmarketing.factories.HostFactory;
20 import com.dotmarketing.factories.InodeFactory;
21 import com.dotmarketing.portlets.files.model.File;
22 import com.dotmarketing.portlets.files.model.MP3File;
23 import com.dotmarketing.portlets.folders.factories.FolderFactory;
24 import com.dotmarketing.portlets.folders.model.Folder;
25 import com.dotmarketing.util.Config;
26 import com.dotmarketing.util.UtilMethods;
27 import com.dotmarketing.util.XMLUtils;
28
29 public class XSPFServlet extends HttpServlet JavaDoc {
30
31     private static final long serialVersionUID = 1L;
32
33     @Override JavaDoc
34     public void init() throws ServletException JavaDoc {
35         java.io.File JavaDoc dir = new java.io.File JavaDoc(Config.CONTEXT.getRealPath("/WEB-INF/velocity/static/xspf/"));
36         dir.mkdirs();
37     }
38
39     protected void service(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws ServletException JavaDoc,
40             IOException JavaDoc {
41
42         Host host = HostFactory.getCurrentHost(request);
43         String JavaDoc path = request.getParameter("path");
44
45         if (path == null) {
46             return;
47         }
48
49         path = (path.endsWith("/")) ? path : path + "/";
50
51         Folder folder = FolderFactory.getFolderByPath(path, host);
52         List JavaDoc<File> mp3Files = InodeFactory.getChildrenClassByConditionAndOrderBy(folder, File.class,
53                 "lower(file_name) like '%.mp3'", "sort_order");
54 /*
55         java.io.File cachedFile = new java.io.File(Config.CONTEXT.getRealPath("/WEB-INF/velocity/static/xspf/"
56                 + URLEncoder.encode(path, "UTF-8") + ".xml"));
57         boolean useCache = cachedFile.exists();
58
59         if (useCache) {
60             Date d = new Date(cachedFile.lastModified());
61             for (File file : mp3Files) {
62                 Date modDate = file.getModDate();
63                 if (modDate.after(d)) {
64                     useCache = false;
65                 }
66             }
67         }
68 */

69         response.setContentType("text/xml");
70         PrintWriter JavaDoc out = response.getWriter();
71         /*
72         useCache = false;
73         if (useCache) {
74             BufferedReader fin = new BufferedReader(new FileReader(cachedFile));
75             while (fin.ready()) {
76                 out.println(fin.readLine());
77             }
78             fin.close();
79             out.close();
80             return;
81         }
82 */

83         StringWriter JavaDoc sw = new StringWriter JavaDoc();
84         //FileWriter fout = new FileWriter(cachedFile);
85

86         try {
87             sw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
88
89             sw.write("<playlist version=\"1\" xmlns=\"http://xspf.org/ns/0/\">\n");
90             sw.write("<trackList>");
91
92             for (File file : mp3Files) {
93                 // only show live files
94
if (!file.isLive()) {
95                     continue;
96                 }
97                 MP3File mp3 = new MP3File(file);
98
99                 sw.write("<track>\n");
100                 sw.write("<location>http://" + host.getHostname() + folder.getPath() + file.getFileName()
101                         + "</location>\n");
102
103                 if (UtilMethods.isSet(mp3.getArtist())) {
104                     sw.write("<creator>" + XMLUtils.xmlEscape(mp3.getArtist()) + "</creator>\n");
105                 }
106                 if (UtilMethods.isSet(mp3.getAlbum())) {
107                     sw.write("<album>" + XMLUtils.xmlEscape(mp3.getAlbum()) + "</album>\n");
108                 }
109
110                 if (UtilMethods.isSet(mp3.getTitle())) {
111                     sw.write("<title>" + XMLUtils.xmlEscape(mp3.getTitle()) + "</title>\n");
112                 }
113                 if (UtilMethods.isSet(mp3.getGenre())) {
114                     sw.write("<genre>" + XMLUtils.xmlEscape(mp3.getGenre()) + "</genre>\n");
115                 }
116
117                 if (mp3.getDuration() > 0) {
118                     sw.write("<duration>" + mp3.getDuration() + "</duration>\n");
119                 }
120                 sw.write("<image>http://" + host.getHostname() + "/global/images/mp3logo.jpg</image>\n");
121
122                 sw.write("</track>\n");
123
124             }
125
126             sw.write("</trackList>\n");
127             sw.write("</playlist>\n");
128         } catch (Exception JavaDoc e) {
129
130             e.printStackTrace();
131         } finally {
132             out.print(sw.toString());
133             out.close();
134
135         // fout.write(sw.toString());
136
// fout.close();
137
sw.close();
138         }
139     }
140
141 }
142
Popular Tags