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

Reply via email to