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