KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > applications > media > filters > ClientFormatFilter


1  /*
2   
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5   
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8   
9   */

10
11 package org.mmbase.applications.media.filters;
12
13 import org.mmbase.applications.media.urlcomposers.URLComposer;
14 import org.mmbase.applications.media.Format;
15 import java.util.*;
16 import org.mmbase.util.logging.Logger;
17 import org.mmbase.util.logging.Logging;
18 import org.mmbase.util.xml.DocumentReader;
19 import org.w3c.dom.Element JavaDoc;
20
21 /**
22  * filters the media sources with the format specified by the client.
23  * e.g. urls(mp3), will result in only media sources with format = mp3.
24  *
25  * @author Rob Vermeulen (VPRO)
26  */

27 public class ClientFormatFilter implements Filter {
28     private static Logger log = Logging.getLoggerInstance(ClientFormatFilter.class);
29     
30     public void configure(DocumentReader reader, Element JavaDoc e) {
31         // nothing to be configured on default.
32
}
33     
34     final public List filter(List urlcomposers) {
35         List filteredUrlcomposers = new ArrayList();
36         
37         for (Iterator urlcomposerlist = urlcomposers.iterator();urlcomposerlist.hasNext();) {
38             URLComposer urlcomposer = (URLComposer)urlcomposerlist.next();
39             
40             Object JavaDoc format = urlcomposer.getInfo().get("format");
41             if (log.isDebugEnabled()) {
42                 log.debug("Client specified format = " + format);
43             }
44           
45             if(format==null) {
46                 if (log.isDebugEnabled()) {
47                     log.debug("Client did not specify format.");
48                 }
49                 return urlcomposers;
50             }
51
52             if( format instanceof List) {
53                 if( ((List)format).size()==0 ) {
54                     if (log.isDebugEnabled()) {
55                         log.debug("Client did not specify format.");
56                     }
57                     return urlcomposers;
58         }
59             }
60
61             if (format instanceof Format) {
62                 if (format == urlcomposer.getFormat()) filteredUrlcomposers.add(urlcomposer);
63             } else if (format instanceof String JavaDoc) {
64                 if (Format.get(""+format) == urlcomposer.getFormat()) filteredUrlcomposers.add(urlcomposer);
65             } else if (format instanceof List) {
66                 // You could take the order in which the client specified the formats into account.
67
List formatList = (List) format;
68                 if(formatList.contains(urlcomposer.getFormat().toString())) {
69                     filteredUrlcomposers.add(urlcomposer);
70                 }
71             }
72         }
73         if (log.isDebugEnabled()) {
74             log.debug("filteredUrlcomposers = "+filteredUrlcomposers);
75         }
76         return filteredUrlcomposers;
77     }
78 }
79
Popular Tags