Author: michiel Date: 2009-09-10 00:30:00 +0200 (Thu, 10 Sep 2009) New Revision: 38540
Added: mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FieldValueFilter.java mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FieldValueLabeler.java mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FilterUtils.java Modified: mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/BitrateInfo.java mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ClientFormatFilter.java mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/Filter.java mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ServerDimensionSorter.java mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/Sorter.java Log: added a fews filters and labelers Property changes on: mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/BitrateInfo.java ___________________________________________________________________ Name: svn:keywords + Id Modified: mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ClientFormatFilter.java =================================================================== --- mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ClientFormatFilter.java 2009-09-09 22:28:53 UTC (rev 38539) +++ mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ClientFormatFilter.java 2009-09-09 22:30:00 UTC (rev 38540) @@ -1,11 +1,11 @@ /* - + This software is OSI Certified Open Source Software. OSI Certified is a certification mark of the Open Source Initiative. - + The license (Mozilla version 1.0) can be read at the MMBase site. See http://www.MMBase.org/license - + */ package org.mmbase.applications.media.filters; @@ -26,20 +26,20 @@ */ public class ClientFormatFilter implements Filter { private static Logger log = Logging.getLoggerInstance(ClientFormatFilter.class); - + public void configure(DocumentReader reader, Element e) { // nothing to be configured on default. } - + final public List<URLComposer> filter(List<URLComposer> urlcomposers) { List<URLComposer> filteredUrlcomposers = new ArrayList<URLComposer>(); - + for (URLComposer urlcomposer : urlcomposers) { Object format = urlcomposer.getInfo().get("format"); if (log.isDebugEnabled()) { log.debug("Client specified format = " + format); } - + if(format==null) { if (log.isDebugEnabled()) { log.debug("Client did not specify format."); @@ -54,7 +54,7 @@ } return urlcomposers; } - } + } if (format instanceof Format) { if (format == urlcomposer.getFormat()) filteredUrlcomposers.add(urlcomposer); Added: mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FieldValueFilter.java =================================================================== --- mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FieldValueFilter.java (rev 0) +++ mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FieldValueFilter.java 2009-09-09 22:30:00 UTC (rev 38540) @@ -0,0 +1,72 @@ + /* + +This software is OSI Certified Open Source Software. +OSI Certified is a certification mark of the Open Source Initiative. + +The license (Mozilla version 1.0) can be read at the MMBase site. +See http://www.MMBase.org/license + + */ + +package org.mmbase.applications.media.filters; +import org.mmbase.applications.media.urlcomposers.URLComposer; +import java.util.*; +import java.util.regex.*; +import org.mmbase.util.xml.DocumentReader; +import org.w3c.dom.Element; +import org.mmbase.util.logging.Logger; +import org.mmbase.util.logging.Logging; + +/** + * Filters out all sources where a field's values matches or not a certain regular expression + * + * @author Michiel Meeuwissen + */ +public class FieldValueFilter implements Filter { + private static Logger log = Logging.getLoggerInstance(FieldValueFilter.class); + + private String field = "label"; + + private boolean inverse = false; + private Pattern pattern = Pattern.compile(".*"); + + public void setField(String f) { + field = f; + } + + /** + * If inverse, than only filters out those sources that do <em>not</em> match the regular expression. + */ + public void setInverse(boolean i) { + inverse = i; + } + + public void setPattern(String p) { + pattern = Pattern.compile(p); + } + + public void configure(DocumentReader reader, Element e) { + FilterUtils.propertiesConfigure(this, reader, e); + } + + + final public List<URLComposer> filter(List<URLComposer> urlcomposers) { + List<URLComposer> filteredUrlcomposers = new ArrayList<URLComposer>(); + for (URLComposer urlcomposer : urlcomposers) { + + String value = urlcomposer.getSource().getStringValue(field); + Matcher matcher = pattern.matcher(value); + if (matcher.matches()) { + if (inverse) { + filteredUrlcomposers.add(urlcomposer); + } + } else { + if (! inverse) { + filteredUrlcomposers.add(urlcomposer); + } + } + + } + return filteredUrlcomposers; + } +} Property changes on: mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FieldValueFilter.java ___________________________________________________________________ Name: svn:keywords + Id Added: mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FieldValueLabeler.java =================================================================== --- mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FieldValueLabeler.java (rev 0) +++ mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FieldValueLabeler.java 2009-09-09 22:30:00 UTC (rev 38540) @@ -0,0 +1,62 @@ + /* + +This software is OSI Certified Open Source Software. +OSI Certified is a certification mark of the Open Source Initiative. + +The license (Mozilla version 1.0) can be read at the MMBase site. +See http://www.MMBase.org/license + + */ + +package org.mmbase.applications.media.filters; + +import org.mmbase.applications.media.urlcomposers.URLComposer; +import java.util.regex.*; +import org.mmbase.util.logging.*; +import org.mmbase.util.xml.DocumentReader; +import org.w3c.dom.Element; +import java.util.*; + +/** + * + * + * @author Michiel Meeuwissen + * @since MMBase-1.9.2 + * @version $Id$ + */ +public class FieldValueLabeler extends Labeler { + private static final Logger log = Logging.getLoggerInstance(FieldValueLabeler.class); + + private String field = "label"; + private Pattern pattern = null; + private String label = null; + private String key = "label"; + + public void setField(String f) { + field = f; + } + public void setPattern(String p) { + pattern = Pattern.compile(p); + } + + public void setLabel(String l) { + label = l; + } + + public void setKey(String k) { + key = k; + } + + @Override + public void configure(DocumentReader reader, Element element) { + FilterUtils.propertiesConfigure(this, reader, element); + } + + + protected void label(URLComposer uc) { + if (pattern.matcher(uc.getSource().getStringValue(field)).matches()) { + uc.getInfo().put(key, label); + } + } + +} Property changes on: mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FieldValueLabeler.java ___________________________________________________________________ Name: svn:keywords + Id Modified: mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/Filter.java =================================================================== --- mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/Filter.java 2009-09-09 22:28:53 UTC (rev 38539) +++ mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/Filter.java 2009-09-09 22:30:00 UTC (rev 38540) @@ -19,6 +19,7 @@ */ public interface Filter { + List<URLComposer> filter(List<URLComposer> urlcomposers); void configure(DocumentReader reader, Element e); } Added: mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FilterUtils.java =================================================================== --- mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FilterUtils.java (rev 0) +++ mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FilterUtils.java 2009-09-09 22:30:00 UTC (rev 38540) @@ -0,0 +1,49 @@ +/* + +This software is OSI Certified Open Source Software. +OSI Certified is a certification mark of the Open Source Initiative. + +The license (Mozilla version 1.0) can be read at the MMBase site. +See http://www.MMBase.org/license + + */ + +package org.mmbase.applications.media.filters; +import org.mmbase.applications.media.urlcomposers.URLComposer; +import org.mmbase.util.xml.DocumentReader; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; +import org.w3c.dom.Node; +import java.util.List; + +import org.mmbase.util.logging.Logger; +import org.mmbase.util.logging.Logging; + +/** + * + * @author Michiel Meeuwissen + * @since MMBase-1.9.2 + * @version $Id$ + */ +public abstract class FilterUtils { + + private static Logger log = Logging.getLoggerInstance(FilterUtils.class); + + public static void propertiesConfigure(Object o, DocumentReader reader, Element e) { + NodeList params = e.getChildNodes(); + for (int i = 0 ; i < params.getLength(); i++) { + try { + Node node = params.item(i); + if (node instanceof Element && node.getNodeName().equals("property")) { + Element param = (Element)node; + String name = param.getAttribute("name"); + String value = DocumentReader.getNodeTextValue(param); + org.mmbase.util.xml.Instantiator.setProperty(name, o.getClass(), o, value); + } + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + } + } + } +} + Property changes on: mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FilterUtils.java ___________________________________________________________________ Name: svn:keywords + Id Modified: mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ServerDimensionSorter.java =================================================================== --- mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ServerDimensionSorter.java 2009-09-09 22:28:53 UTC (rev 38539) +++ mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ServerDimensionSorter.java 2009-09-09 22:30:00 UTC (rev 38540) @@ -26,7 +26,7 @@ * can be combined with this one). * * @author Michiel Meeuwissen - * @version $Id: ServerFormatSorter.java 36047 2009-06-14 14:44:44Z michiel $ + * @version $Id$ * @see ClientFormatSorter */ public class ServerDimensionSorter extends PreferenceSorter { Property changes on: mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ServerDimensionSorter.java ___________________________________________________________________ Name: svn:keywords + Id Modified: mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/Sorter.java =================================================================== --- mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/Sorter.java 2009-09-09 22:28:53 UTC (rev 38539) +++ mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/Sorter.java 2009-09-09 22:30:00 UTC (rev 38540) @@ -36,21 +36,7 @@ * Configure with setters on default */ public void configure(DocumentReader reader, Element e) { - NodeList params = e.getChildNodes(); - for (int i = 0 ; i < params.getLength(); i++) { - try { - Node node = params.item(i); - if (node instanceof Element && node.getNodeName().equals("property")) { - Element param = (Element)node; - String name = param.getAttribute("name"); - String value = org.mmbase.util.xml.DocumentReader.getNodeTextValue(param); - org.mmbase.util.xml.Instantiator.setProperty(name, this.getClass(), this, value); - - } - } catch (Exception ex) { - log.error(ex.getMessage(), ex); - } - } + FilterUtils.propertiesConfigure(this, reader, e); } final public int compare(URLComposer ri1, URLComposer ri2) { _______________________________________________ Cvs mailing list [email protected] http://lists.mmbase.org/mailman/listinfo/cvs
