Author: michiel
Date: 2009-09-23 22:53:39 +0200 (Wed, 23 Sep 2009)
New Revision: 38831

Added:
   
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FieldValueSorter.java
Modified:
   
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/builders/MediaFragments.java
   
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/builders/MediaSources.java
   
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/AvailableSorter.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/urlcomposers/URLComposer.java
   
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/urlcomposers/URLComposerFactory.java
Log:
various details and bugfixes

Modified: 
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/builders/MediaFragments.java
===================================================================
--- 
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/builders/MediaFragments.java
    2009-09-23 20:05:38 UTC (rev 38830)
+++ 
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/builders/MediaFragments.java
    2009-09-23 20:53:39 UTC (rev 38831)
@@ -259,7 +259,9 @@
     }
 
     protected List<URLComposer> getFilteredURLs(MMObjectNode fragment, 
Map<String, Object> info, Set<MMObjectNode> cacheExpireObjects) {
-        log.debug("getfilteredurls");
+        if (log.isDebugEnabled()) {
+            log.debug("getfilteredurls " + info);
+        }
         List<URLComposer> urls =  getURLs(fragment, info, 
null,cacheExpireObjects);
         return MainFilter.getInstance().filter(urls);
     }

Modified: 
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/builders/MediaSources.java
===================================================================
--- 
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/builders/MediaSources.java
      2009-09-23 20:05:38 UTC (rev 38830)
+++ 
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/builders/MediaSources.java
      2009-09-23 20:53:39 UTC (rev 38831)
@@ -386,7 +386,7 @@
         }
         return urls;
     }
-    
+
     /**
      * Returns all URLs for this source, but filtered, with the best ones on 
top.
      */
@@ -492,12 +492,12 @@
      */
 
     @Override
-    public boolean commit(MMObjectNode node) {
+    public synchronized boolean commit(MMObjectNode node) {
         checkFields(node);
         return super.commit(node);
     }
     @Override
-    public int insert(String owner, MMObjectNode node) {
+    public synchronized int insert(String owner, MMObjectNode node) {
         checkFields(node);
         return super.insert(owner, node);
     }

Modified: 
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/AvailableSorter.java
===================================================================
--- 
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/AvailableSorter.java
    2009-09-23 20:05:38 UTC (rev 38830)
+++ 
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/AvailableSorter.java
    2009-09-23 20:53:39 UTC (rev 38831)
@@ -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;
@@ -21,8 +21,8 @@
 
     public  AvailableSorter() {
     }
-    
-    public int getPreference(URLComposer ri) {        
+
+    public int getPreference(URLComposer ri) {
         if (! ri.isAvailable()) {
             return -1; // very bad choice.
         } else {

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-23 20:05:38 UTC (rev 38830)
+++ 
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/ClientFormatFilter.java
 2009-09-23 20:53:39 UTC (rev 38831)
@@ -40,7 +40,7 @@
                 log.debug("Client specified format = " + format);
             }
 
-            if(format==null) {
+            if(format == null) {
                 if (log.isDebugEnabled()) {
                     log.debug("Client did not specify format.");
                 }

Added: 
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FieldValueSorter.java
===================================================================
--- 
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FieldValueSorter.java
                           (rev 0)
+++ 
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/filters/FieldValueSorter.java
   2009-09-23 20:53:39 UTC (rev 38831)
@@ -0,0 +1,65 @@
+ /*
+
+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 FieldValueSorter extends  PreferenceSorter {
+    private static Logger log = 
Logging.getLoggerInstance(FieldValueSorter.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 int getPreference(URLComposer urlcomposer) {
+        String value = urlcomposer.getSource().getStringValue(field);
+        Matcher matcher = pattern.matcher(value);
+        if (matcher.matches()) {
+            if (inverse) {
+                return 0;
+            } else {
+                return 1;
+            }
+        } else {
+            if (! inverse) {
+                return 0;
+            } else {
+                return 1;
+            }
+        }
+    }
+}

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-09-23 20:05:38 UTC (rev 38830)
+++ 
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/urlcomposers/URLComposer.java
   2009-09-23 20:53:39 UTC (rev 38831)
@@ -54,8 +54,8 @@
         if (provider == null) throw new RuntimeException("Provider may not be 
null in a URLComposer object");
         this.provider = provider;
         this.source   = source;
-        this.info     = info;
-        if (this.info == null) this.info = new java.util.Hashtable<String, 
Object>();
+        this.info     = info == null ? new java.util.HashMap<String, Object>() 
: info;
+
     }
 
     public MMObjectNode getSource()   {
@@ -139,7 +139,7 @@
         }
         return buff;
     }
-    
+
     /**
      * Returns the URL as a String. To encourage efficient coding,
      * this method is final. Override getURLBuffer instead.
@@ -149,7 +149,7 @@
     }
 
     /**
-     * Returns the 'short' url (typically the filename) for display purposes, 
+     * Returns the 'short' url (typically the filename) for display purposes,
      * just the source field value url.
      */
     public final String getFilename() {

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-09-23 20:05:38 UTC (rev 38830)
+++ 
mmbase/trunk/applications/media/src/main/java/org/mmbase/applications/media/urlcomposers/URLComposerFactory.java
    2009-09-23 20:53:39 UTC (rev 38831)
@@ -101,6 +101,7 @@
                     org.mmbase.util.xml.Instantiator.setProperty(e.getKey(), 
klass, newComposer, e.getValue());
                 }
                 Map<String, Object> clone = new HashMap<String, Object>(); // 
filter may change the info map, but that should of course not influence others
+                clone.putAll(info);
                 newComposer.init(provider, source, fragment, clone, 
cacheExpireObjects);
                 return newComposer;
             }  catch (Exception g) {
@@ -283,7 +284,7 @@
             }
         }
         if (log.isDebugEnabled()) {
-            log.debug("Creating url-composers for provider " + 
provider.getNumber() + " (format: " + format + ", protocol: " + protocol + ")");
+            log.debug("Creating url-composers for provider " + 
provider.getNumber() + " (format: " + format + ", protocol: " + protocol + ")" 
+ info);
         }
 
         boolean found = false;
@@ -326,7 +327,9 @@
                 urls.add(uc);
             }
         }
-        log.debug("returning " + urls);
+        if (log.isDebugEnabled()) {
+            log.debug("returning " + urls);
+        }
         return urls;
     }
 }

_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to