Author: michiel
Date: 2009-06-25 18:37:54 +0200 (Thu, 25 Jun 2009)
New Revision: 36419
Added:
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/BitrateLabeler.java
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/Labeler.java
Modified:
mmbase/trunk/applications/media/src/main/config/media/filters.xml
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ClientBitrateFilter.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/urlcomposers/URLComposer.java
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/urlcomposers/URLComposerFactory.java
Log:
Modified: mmbase/trunk/applications/media/src/main/config/media/filters.xml
===================================================================
--- mmbase/trunk/applications/media/src/main/config/media/filters.xml
2009-06-25 16:04:24 UTC (rev 36418)
+++ mmbase/trunk/applications/media/src/main/config/media/filters.xml
2009-06-25 16:37:54 UTC (rev 36419)
@@ -19,7 +19,7 @@
<chain>
<filter>org.mmbase.applications.media.filters.AvailableSorter</filter>
- <filter
id="clienformat">org.mmbase.applications.media.filters.ClientFormatSorter</filter>
+ <filter
id="clientformat">org.mmbase.applications.media.filters.ClientFormatSorter</filter>
<filter
id="format">org.mmbase.applications.media.filters.ServerFormatSorter</filter>
<filter
id="real">org.mmbase.applications.media.filters.RealSorter</filter>
Added:
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/BitrateInfo.java
(rev 0)
+++
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/BitrateInfo.java
2009-06-25 16:37:54 UTC (rev 36419)
@@ -0,0 +1,63 @@
+ /*
+
+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.logging.*;
+import org.mmbase.util.xml.DocumentReader;
+import org.w3c.dom.Element;
+import java.util.*;
+import org.mmbase.util.logging.Logger;
+import org.mmbase.util.logging.Logging;
+
+
+/**
+ * container for information beloning to a bitrate filter keyword.
+ * In filter.xml the line <bitrate name="smallband" min="0" max="150000" />
+ * will result in a BitrateFilterInfo inner object.
+ */
+
+public class BitrateInfo {
+ private static final Logger log =
Logging.getLoggerInstance(BitrateInfo.class);
+
+ protected final String name;
+ protected final int min;
+ protected final int max;
+
+ public BitrateInfo(String name, int min, int max) {
+ this.name = name;
+ this.min = min;
+ this.max = max;
+ }
+ public BitrateInfo(Element el) {
+ this.name = el.getAttribute("name");
+ String minAtt = el.getAttribute("min");
+ this.min = minAtt.equals("") ? 0 : Integer.parseInt(minAtt);
+ String maxAtt = el.getAttribute("max");
+ this.max = maxAtt.equals("") ? Integer.MAX_VALUE :
Integer.parseInt(maxAtt);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+
+ public String toString() {
+ return "[" + min + "," + max + "]";
+ }
+
+
+ public boolean matches(int bitrateMedia) {
+
+ log.debug("matching " + bitrateMedia + " with " + this);
+ return bitrateMedia > min && bitrateMedia < max;
+ }
+}
Added:
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/BitrateLabeler.java
===================================================================
---
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/BitrateLabeler.java
(rev 0)
+++
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/BitrateLabeler.java
2009-06-25 16:37:54 UTC (rev 36419)
@@ -0,0 +1,57 @@
+ /*
+
+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.logging.*;
+import org.mmbase.util.xml.DocumentReader;
+import org.w3c.dom.Element;
+import java.util.*;
+
+/**
+ *
+ *
+ * @author Michiel Meeuwissen
+ * @since MMBase-1.9.2
+ */
+public class BitrateLabeler extends Labeler {
+ private static final Logger log =
Logging.getLoggerInstance(BitrateLabeler.class);
+ private static final String CONFIG_TAG = MainFilter.FILTERCONFIG_TAG +
".bitrates";
+
+ private final Map<String, BitrateInfo> bitrates= new LinkedHashMap<String,
BitrateInfo>();
+
+ public void configure(DocumentReader reader, Element element) {
+ bitrates.clear();
+ try {
+ for(Element bitrate :
reader.getChildElements(reader.getElementByPath(element, CONFIG_TAG))) {
+ BitrateInfo bri = new BitrateInfo(bitrate);
+ log.debug("Adding BitrateInfo "+ bri);
+ bitrates.put(bri.getName(), bri);
+ }
+ } catch (Exception ex) {
+ log.error("Error in filter.xml:" + ex, ex);
+ }
+ log.info("Configured bit rate labeler " + bitrates);
+ }
+
+
+ protected void label(URLComposer uc) {
+ for (Map.Entry<String, BitrateInfo> entry : bitrates.entrySet()) {
+ int bitrate = uc.getSource().getIntValue("bitrate");
+ if (entry.getValue().matches(bitrate)) {
+ log.debug("" + bitrate + " matched " + entry);
+ uc.getInfo().put("bitrate", entry.getKey());
+ }
+ }
+
+ }
+
+}
Modified:
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ClientBitrateFilter.java
===================================================================
---
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ClientBitrateFilter.java
2009-06-25 16:04:24 UTC (rev 36418)
+++
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ClientBitrateFilter.java
2009-06-25 16:37:54 UTC (rev 36419)
@@ -24,23 +24,21 @@
* @author Rob Vermeulen (VPRO)
*/
public class ClientBitrateFilter implements Filter {
- private static Logger log =
Logging.getLoggerInstance(ClientBitrateFilter.class);
+ private static final Logger log =
Logging.getLoggerInstance(ClientBitrateFilter.class);
private static final String CONFIG_TAG = MainFilter.FILTERCONFIG_TAG +
".bitrates";
- private static Map<String, BitrateFilterInfo> bitrateFilters = new
HashMap<String, BitrateFilterInfo>();
+ private final Map<String, BitrateInfo> bitrateFilters = new
LinkedHashMap<String, BitrateInfo>();
+
public void configure(DocumentReader reader, Element element) {
+ bitrateFilters.clear();
try {
for(Element
bitrate:reader.getChildElements(reader.getElementByPath(element, CONFIG_TAG))) {
- String name = reader.getElementAttributeValue(bitrate, "name");
- int min =
Integer.parseInt(reader.getElementAttributeValue(bitrate, "min"));
- int max =
Integer.parseInt(reader.getElementAttributeValue(bitrate, "max"));
- BitrateFilterInfo brfi = new BitrateFilterInfo(name, min, max);
+ BitrateInfo brfi = new BitrateInfo(bitrate);
log.debug("Adding BitrateFilterInfo "+brfi);
- bitrateFilters.put(name, brfi);
+ bitrateFilters.put(brfi.getName(), brfi);
}
} catch (Exception ex) {
- log.error("Error in filter.xml:" + ex);
- log.error(Logging.stackTrace(ex));
+ log.error("Error in filter.xml:" + ex, ex);
}
}
@@ -51,7 +49,7 @@
Object bitrate = urlcomposer.getInfo().get("bitrate");
log.debug("Client specified bitrate = " + bitrate);
- if(bitrate==null) {
+ if(bitrate == null) {
log.debug("Client did not specify bitrate.");
return urlcomposers;
}
@@ -63,11 +61,11 @@
if (bitrate instanceof String) {
if(!bitrateFilters.containsKey(bitrate)) {
- log.error("Specified bitrate keyword is invaled.
biterate="+bitrate);
+ log.error("Specified bitrate keyword is invalidid.
biterate="+bitrate);
}
- BitrateFilterInfo brfi = bitrateFilters.get(bitrate);
+ BitrateInfo brfi = bitrateFilters.get(bitrate);
int br = urlcomposer.getSource().getIntValue("bitrate");
- if (brfi.validate(br)) {
+ if (brfi.matches(br)) {
log.debug("BitrateFilter "+brfi+" fits for urlcomposer
with bitrate "+br);
filteredUrlcomposers.add(urlcomposer);
}
@@ -78,27 +76,5 @@
return filteredUrlcomposers;
}
- /**
- * container for information beloning to a bitrate filter keyword.
- * In filter.xml the line <bitrate name="smallband" min="0" max="150000" />
- * will result in a BitrateFilterInfo innerclass.
- */
- private class BitrateFilterInfo {
- private String name;
- private int min, max;
- private BitrateFilterInfo(String name, int min, int max) {
- this.name = name;
- this.min = min;
- this.max = max;
- }
-
- private boolean validate(int bitrateMedia) {
- return min<bitrateMedia && max>bitrateMedia;
- }
-
- public String toString() {
- return "BitrateFilterInfo name="+name+" max="+max+" min="+min;
- }
- }
}
Added:
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/Labeler.java
===================================================================
---
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/Labeler.java
(rev 0)
+++
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/Labeler.java
2009-06-25 16:37:54 UTC (rev 36419)
@@ -0,0 +1,45 @@
+ /*
+
+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 org.mmbase.util.xml.DocumentReader;
+import org.w3c.dom.Element;
+
+/**
+ * Implements a Filter as a Labeler. It only adds stuff to the URLComposer. It
does not remove, it
+ * does not change order.
+ *
+ * @author Michiel Meeuwissen
+ * @since MMBase-1.9.2
+ * @version $Id: $
+ */
+abstract public class Labeler implements Filter {
+
+ /**
+ * Implement this.
+ */
+ abstract protected void label(URLComposer o);
+
+ public void configure(DocumentReader reader, Element e) {
+ // nothing to be configured on default.
+ }
+
+
+ final public List<URLComposer> filter(List<URLComposer> urlcomposers) {
+ for (URLComposer uc : urlcomposers) {
+ label(uc);
+ }
+ return urlcomposers;
+ }
+}
+
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-06-25 16:04:24 UTC (rev 36418)
+++
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ServerDimensionSorter.java
2009-06-25 16:37:54 UTC (rev 36419)
@@ -48,8 +48,9 @@
preferredDimensions.add(new Dimension(xa.equals("*") ? - 1 :
Integer.parseInt(xa),
ya.equals("*") ? - 1 :
Integer.parseInt(ya)));
- log.service("Adding preferred diemnsion '"+ preferredDimensions
+"'");
}
+ log.service("Preferred dimensions '"+ preferredDimensions +"'");
+
}
protected int getPreference(URLComposer ri) {
@@ -59,9 +60,13 @@
for (index = 0; index <= preferredDimensions.size(); index++) {
if (index< preferredDimensions.size()) {
Dimension dim = preferredDimensions.get(index);
- if ((dim.getHeight() == -1 || dimension.getHeight() ==
dim.getHeight()) ||
+
+ if ((dim.getHeight() == -1 || dimension.getHeight() ==
dim.getHeight()) &&
(dim.getWidth() == -1 || dimension.getWidth() ==
dim.getWidth())) {
+ log.debug("Comparing " + dim + " with " + dimension + " ->
matched");
break;
+ } else {
+ log.debug("Comparing " + dim + " with " + dimension + " ->
not matched");
}
}
}
Modified:
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/urlcomposers/URLComposer.java
===================================================================
---
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/urlcomposers/URLComposer.java
2009-06-25 16:04:24 UTC (rev 36418)
+++
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/urlcomposers/URLComposer.java
2009-06-25 16:37:54 UTC (rev 36419)
@@ -63,7 +63,7 @@
public MMObjectNode getProvider() {
return provider;
}
- public Map<String, Object> getInfo() {
+ public Map<String, Object> getInfo() {
return info;
}
@@ -78,6 +78,9 @@
public Codec getCodec() {
return Codec.get(source.getIntValue("codec"));
}
+ public int getBitrate() {
+ return source.getIntValue("bitrate");
+ }
/**
* The mime-type of the produced URL. This is not necessarily the mimetype
of the source.
Modified:
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/urlcomposers/URLComposerFactory.java
===================================================================
---
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/urlcomposers/URLComposerFactory.java
2009-06-25 16:04:24 UTC (rev 36418)
+++
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/urlcomposers/URLComposerFactory.java
2009-06-25 16:37:54 UTC (rev 36419)
@@ -81,7 +81,8 @@
try {
log.debug("Instatiating " + klass);
URLComposer newComposer = (URLComposer) klass.newInstance();
- newComposer.init(provider, source, fragment, info,
cacheExpireObjects);
+ Map<String, Object> clone = new HashMap<String, Object>(); //
filter may change the info map, but that should of course not influence others
+ newComposer.init(provider, source, fragment, clone,
cacheExpireObjects);
return newComposer;
} catch (Exception g) {
log.error("URLComposer could not be instantiated " +
g.toString());
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs