Author: michiel
Date: 2009-06-25 17:01:26 +0200 (Thu, 25 Jun 2009)
New Revision: 36413
Added:
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/resources/dimensioncomparator_1_0.dtd
Modified:
mmbase/trunk/applications/media/pom.xml
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/urlcomposers/URLComposer.java
Log:
Added a filter by wich you can indicate a preferred dimension of a video
Modified: mmbase/trunk/applications/media/pom.xml
===================================================================
--- mmbase/trunk/applications/media/pom.xml 2009-06-25 14:54:59 UTC (rev
36412)
+++ mmbase/trunk/applications/media/pom.xml 2009-06-25 15:01:26 UTC (rev
36413)
@@ -22,4 +22,42 @@
smallband users using MMBase functions.
</description>
+ <dependencies>
+ <dependency>
+ <groupId>org.mmbase</groupId>
+ <artifactId>mmbase-resources</artifactId>
+ <version>${mmbase.version}</version>
+ <classifier>classes</classifier>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+
+ <developers>
+ <developer>
+ <id>michiel</id>
+ <name>Michiel Meeuwissen</name>
+ <email>Michiel.Meeuwissen at gmail.com</email>
+ </developer>
+
+ <developer>
+ <id>elfuego</id>
+ <name>André van Toly</name>
+ </developer>
+
+ <developer>
+ <id>ernst</id>
+ <name>Ernst Bunders</name>
+ </developer>
+
+ <developer>
+ <id>rico</id>
+ <name>Rico Jansen</name>
+ </developer>
+
+ <developer>
+ <name>Rob Vermeulen</name>
+ </developer>
+ </developers>
+
</project>
Added:
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
(rev 0)
+++
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ServerDimensionSorter.java
2009-06-25 15:01:26 UTC (rev 36413)
@@ -0,0 +1,76 @@
+ /*
+
+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.applications.media.Format;
+import org.mmbase.util.images.Dimension;
+import java.util.*;
+import org.w3c.dom.Element;
+import org.mmbase.util.logging.*;
+import org.mmbase.util.xml.DocumentReader;
+
+/**
+ * Sorts on format of the source, preferred formats can be can be
+ * configured with the filters.xml. This is called 'server'
+ * formatsorter, because this preference is configured on the server,
+ * rather then on the client, which is another logical option (which
+ * can be combined with this one).
+ *
+ * @author Michiel Meeuwissen
+ * @version $Id: ServerFormatSorter.java 36047 2009-06-14 14:44:44Z michiel $
+ * @see ClientFormatSorter
+ */
+public class ServerDimensionSorter extends PreferenceSorter {
+ private static Logger log =
Logging.getLoggerInstance(ServerDimensionSorter.class);
+
+ public static final String CONFIG_TAG = MainFilter.FILTERCONFIG_TAG +
".preferredDimension";
+ public static final String FORMAT_ATT = "dimension";
+
+
+ protected final List<Dimension> preferredDimensions = new
ArrayList<Dimension>();
+
+ public ServerDimensionSorter() {};
+
+ public void configure(DocumentReader reader, Element parent) {
+ preferredDimensions.clear();
+ for (Element el:
reader.getChildElements(reader.getElementByPath(parent, CONFIG_TAG))) {
+ String xa = el.getAttribute("x");
+ String ya = el.getAttribute("y");
+ preferredDimensions.add(new Dimension(xa.equals("*") ? - 1 :
Integer.parseInt(xa),
+ ya.equals("*") ? - 1 :
Integer.parseInt(ya)));
+
+ log.service("Adding preferred diemnsion '"+ preferredDimensions
+"'");
+ }
+ }
+
+ protected int getPreference(URLComposer ri) {
+ Dimension dimension = ri.getDimension();
+
+ int index;
+ for (index = 0; index <= preferredDimensions.size(); index++) {
+ if (index< preferredDimensions.size()) {
+ Dimension dim = preferredDimensions.get(index);
+ if ((dim.getHeight() == -1 || dimension.getHeight() ==
dim.getHeight()) ||
+ (dim.getWidth() == -1 || dimension.getWidth() ==
dim.getWidth())) {
+ break;
+ }
+ }
+ }
+ index = -index; // low index = high preference
+ if (log.isDebugEnabled()) {
+ log.debug("preference of dimension '" + dimension + "': " + index);
+ }
+ return index;
+ }
+
+}
+
Added:
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/resources/dimensioncomparator_1_0.dtd
===================================================================
---
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/resources/dimensioncomparator_1_0.dtd
(rev 0)
+++
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/resources/dimensioncomparator_1_0.dtd
2009-06-25 15:01:26 UTC (rev 36413)
@@ -0,0 +1,4 @@
+<!ELEMENT preferredDimension (dimension+)>
+<!ELEMENT dimension (#PCDATA)>
+<!ATTLIST dimension x CDATA #REQUIRED >
+<!ATTLIST dimension y CDATA #REQUIRED >
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 14:54:59 UTC (rev 36412)
+++
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/urlcomposers/URLComposer.java
2009-06-25 15:01:26 UTC (rev 36413)
@@ -17,6 +17,7 @@
import org.mmbase.applications.media.Format;
import org.mmbase.applications.media.Codec;
import org.mmbase.applications.media.State;
+import org.mmbase.util.images.Dimension;
import java.util.*;
@@ -97,6 +98,17 @@
return null; // no informative description
}
+ public Dimension getDimension() {
+ if (source.getBuilder().hasField("height")) {
+ return new Dimension(source.getIntValue("width"),
+ source.getIntValue("height"));
+
+ } else {
+ return null;
+ }
+
+ }
+
/**
* Returns true. This can be overridden if the URLComposer not
* always can do it's job. It then returns false if it is (can be?)
@@ -111,8 +123,14 @@
*
*/
protected StringBuilder getURLBuffer() {
- StringBuilder buff = new
StringBuilder(provider.getFunctionValue("url", null).toString());
- buff.append(source.getStringValue("url"));
+ String sourceUrl = source.getStringValue("url");
+ StringBuilder buff = new StringBuilder();
+ if (sourceUrl.length() > 0) {
+ buff.append(provider.getFunctionValue("url", null).toString());
+ buff.append(sourceUrl);
+ } else {
+ buff.append("#nourlyet");
+ }
return buff;
}
/**
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs