Author: andre
Date: 2010-06-01 16:55:52 +0200 (Tue, 01 Jun 2010)
New Revision: 42366

Removed:
   
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/RecreateCacheFunction.java
Modified:
   
mmbase/trunk/applications/streams/src/main/config/builders/streams/streamsources.functions.xml
   mmbase/trunk/applications/streams/src/main/config/components/streams.xml
   
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/CreateCachesFunction.java
   
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/Job.java
   
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/Processor.java
   
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/WaitUntilRecognizedFunction.java
   
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/WaitUntilTranscodingFunction.java
   
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerUtils.java
   
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegAnalyzer.java
   
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/SegmenterAnalyzer.java
   
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/admin.jspx
   
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
   
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/myfragments.jspx
   
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/upload.jspx
Log:
porting differences from 1.9

Modified: 
mmbase/trunk/applications/streams/src/main/config/builders/streams/streamsources.functions.xml
===================================================================
--- 
mmbase/trunk/applications/streams/src/main/config/builders/streams/streamsources.functions.xml
      2010-06-01 14:47:14 UTC (rev 42365)
+++ 
mmbase/trunk/applications/streams/src/main/config/builders/streams/streamsources.functions.xml
      2010-06-01 14:55:52 UTC (rev 42366)
@@ -10,10 +10,6 @@
     <class>org.mmbase.streams.CreateCachesFunction</class>
   </function>
 
-  <function name="triggerRecache">
-    <class>org.mmbase.streams.RecreateCacheFunction</class>
-  </function>
-
   <function name="waitUntilRecognized">
     <class>org.mmbase.streams.createcaches.WaitUntilRecognizedFunction</class>
   </function>

Modified: 
mmbase/trunk/applications/streams/src/main/config/components/streams.xml
===================================================================
--- mmbase/trunk/applications/streams/src/main/config/components/streams.xml    
2010-06-01 14:47:14 UTC (rev 42365)
+++ mmbase/trunk/applications/streams/src/main/config/components/streams.xml    
2010-06-01 14:55:52 UTC (rev 42366)
@@ -12,6 +12,14 @@
 
   <title xml:lang="nl">Streams</title>
   <title xml:lang="en">Streams</title>
+  <description xml:lang="en">
+    The MMBase Streams application is designed to upload, transcode and manage 
media:
+    video, audio and images. 
+  </description>
+  <description xml:lang="nl">
+    Met de MMBase Streams applicatie kunnen media - video, audio en 
afbeeldingen - 
+    geuploaded, getranscodeerd en beheerd worden.
+  </description>
 
   <dependency component="media" version="1" />
 
@@ -20,7 +28,7 @@
   </action>
 
   <action name="retrigger_jobs" rank="administrator">
-    <description xml:lang="en">Whether you may cancel jobs</description>
+    <description xml:lang="en">Whether you may (re)trigger jobs</description>
   </action>
 
   <block name="recent"
@@ -44,8 +52,9 @@
     <description xml:lang="nl">Configuratie van streams applicatie, huidige 
streams en caches</description>
     <body jsp="admin.jspx">
       <param name="trigger" />
+      <param name="all" type="java.lang.Boolean" />
       <param name="interrupt" />
-      <param name="recache" />
+      <param name="cache" />
       <param name="page"  type="java.lang.Integer" />
     </body>
   </block>
@@ -55,12 +64,13 @@
          mimetype="text/html">
     <title xml:lang="en">My fragments</title>
     <title xml:lang="nl">Mijn fragmenten</title>
-    <description xml:lang="en">Streams of current users</description>
+    <description xml:lang="en">Streams of current user</description>
     <description xml:lang="nl">Streams van huidige user</description>
     <body jsp="myfragments.jspx">
       <param name="trigger" />
+      <param name="all" />
       <param name="interrupt" />
-      <param name="recache" />
+      <param name="cache" />
       <param name="page"  type="java.lang.Integer" />
     </body>
   </block>
@@ -74,7 +84,7 @@
       Displays your current, running media transcodings to other formats.
     </description>
     <description xml:lang="nl">
-      Toont jouw huidige, lopende transcoderingen van media naar andere 
formaten.
+      Toont je huidige, lopende transcoderingen van media naar andere formaten.
     </description>
     <body jsp="myjobs.jspx">
       <param name="cancel" />
@@ -87,10 +97,10 @@
     <title xml:lang="en">All jobs</title>
     <title xml:lang="nl">Alle jobs</title>
     <description xml:lang="en">
-      Displays current, running media transcodings to other formats.
+      Displays all current, running media transcodings to other formats.
     </description>
     <description xml:lang="nl">
-      Toont huidige, lopende transcoderingen van media naar andere formaten.
+      Toont alle huidige, lopende transcoderingen van media naar andere 
formaten.
     </description>
     <body jsp="alljobs.jspx">
       <param name="cancel" />

Modified: 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/CreateCachesFunction.java
===================================================================
--- 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/CreateCachesFunction.java
        2010-06-01 14:47:14 UTC (rev 42365)
+++ 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/CreateCachesFunction.java
        2010-06-01 14:55:52 UTC (rev 42366)
@@ -21,8 +21,14 @@
 
 package org.mmbase.streams;
 
+import java.util.*;
+
+import org.mmbase.streams.createcaches.Stage;
 import org.mmbase.streams.createcaches.Processor;
+import org.mmbase.streams.createcaches.JobDefinition;
+import org.mmbase.streams.transcoders.*;
 
+import org.mmbase.util.MimeType;
 import org.mmbase.util.functions.*;
 import org.mmbase.bridge.*;
 import org.mmbase.bridge.util.*;
@@ -31,17 +37,26 @@
 import org.mmbase.util.logging.*;
 
 /**
- * Retriggers creation of (all) caches of a source node.
+ * Triggers (re)creation of caches (streamsourcescaches) of a source node 
+ * (streamsources). The parameter 'all' determines whether to recreate all 
caches
+ * or just to transcode newly configured streams. The parameter 'cache' can 
hold the
+ * node number of a singe caches node to retranscode.
  *
  * @author Michiel Meeuwissen
+ * @author Andr&eacute; van Toly
  * @version $Id$
  */
 
 public class CreateCachesFunction  extends NodeFunction<Boolean> {
 
     private static final Logger LOG = 
Logging.getLoggerInstance(CreateCachesFunction.class);
+
+    public final static Parameter[] PARAMETERS = { 
+        new Parameter("all", java.lang.Boolean.class),
+        new Parameter("cache", org.mmbase.bridge.Node.class)
+    };
     public CreateCachesFunction() {
-        super("createcaches");
+        super("createcaches", PARAMETERS);
     }
 
     /**
@@ -71,12 +86,50 @@
 
     @Override
     protected Boolean getFunctionValue(final Node node, final Parameters 
parameters) {
+        LOG.debug("params: " + parameters);
         if (node.getNumber() > 0 
                 && 
node.getCloud().may(ActionRepository.getInstance().get("streams", 
"retrigger_jobs"), null)) {
-            LOG.info("Recreating caches for #" + node.getNumber());
-            final Field url = node.getNodeManager().getField("url");
+            
+            Boolean all = (Boolean) parameters.get("all");
+            Node cache = (Node) parameters.get("cache");
 
             {
+                final Field url = node.getNodeManager().getField("url");
+                final Processor cc = getCacheCreator(url);                
+                Map<String, JobDefinition> jdlist = cc.getCreatecachesList();
+
+                if (cache != null && 
node.getCloud().hasNode(cache.getNumber())) {
+                    // just one
+                    String in = null;
+                    Node inNode = cache.getNodeValue("id");
+                    if (inNode.getNumber() != node.getNumber()) {
+                        in = "" + inNode.getNumber();
+                    }
+                    String id     = "re-cache";
+                    String label  = cache.getStringValue("label");
+                    MimeType mt   = new MimeType( 
cache.getStringValue("mimetype") );
+                    String key    = cache.getStringValue("key");
+                    Transcoder tr = null;
+                    try {
+                        tr = AbstractTranscoder.getInstance(key);
+                    } catch (ClassNotFoundException cnf) {
+                        LOG.error("Class not found, transcoder in key '" + key 
+ "' does not exist? - " + cnf);
+                        return false;
+                    } catch (InstantiationException ie) {
+                        LOG.error("Exception while instantiating transcoder 
for key '" + key + "' - " + ie);
+                        return false;
+                    } catch (Exception e) {
+                        LOG.error("Exception while trying to (re)transcode - " 
+ e);
+                        return false;
+                    }
+        
+                    JobDefinition jd = new JobDefinition(id, in, label, tr, 
mt, Stage.TRANSCODER);
+                    jdlist.clear();
+                    jdlist.put(id, jd);
+                    LOG.info("Re-transcodig cache #" + cache.getNumber() + " : 
" + id + " [" + jd + "]");
+                    
+                } else {
+                    // list
                 Node mediafragment = node.getNodeValue("mediafragment");
                 String cachestype = 
node.getNodeManager().getProperty("org.mmbase.streams.cachestype");
                 NodeList list = SearchUtil.findRelatedNodeList(mediafragment, 
cachestype, "related"); 
@@ -90,17 +143,15 @@
                     }
                 }
                 
-                for (Node cache : list) {
-                    cache.delete(true);
-                    LOG.service("deleted streamsourcescaches #" + 
cache.getNumber());
+                    if ( list.size() > 0 && ! all ) {
+                        jdlist = newJobList(list, jdlist);
                 }
+                    LOG.info("Recreating caches for #" + node.getNumber() + ", 
doing all: " + all);
             }
 
-            {
-                final Processor cc = getCacheCreator(url);
                 if (cc != null) {
                     LOG.service("Calling " + cc);
-                    
cc.createCaches(node.getCloud().getNonTransactionalCloud(), node.getNumber());
+                    
cc.createCaches(node.getCloud().getNonTransactionalCloud(), node.getNumber(), 
jdlist);
                     return true;
                 } else {
                     LOG.error("No CreateCachesProcessor in " + url);
@@ -112,4 +163,79 @@
         }
     }
 
+    /**
+     * Compares configuration with already transcoded (cached) 
streamsourcescaches nodes.
+     *
+     * @param list      nodelist of related streamsourcescaches nodes
+     * @param jdlist    list based upon current configuration wit job 
descriptions 
+     * @return a new list with jobs matched against already existing nodes
+     */    
+    private Map<String, JobDefinition> newJobList(NodeList list, Map<String, 
JobDefinition> jdlist) {
+        Map<String, JobDefinition> new_jdlist = new LinkedHashMap<String, 
JobDefinition>();
+        Map<String, String> caches = new HashMap<String, String>();
+        Map<String, String> config = new HashMap<String, String>();
+        // make keys from current config entries
+        for (Map.Entry<String, JobDefinition> entry : jdlist.entrySet()) {
+            String id = entry.getKey();
+            JobDefinition jd = entry.getValue();
+            String key = jd.getTranscoder().getKey();
+            if (key != null && !"".equals(key)) {   // not recognizers 
+                config.put(id, key);
+            }
+        }
+        // for convenience make a map of caches keys 
+        for (Node cache : list) {
+            caches.put("" + cache.getNumber(), cache.getStringValue("key"));
+        }
+        
+        // iterate over config keys
+        Iterator<Map.Entry<String,String>> it = config.entrySet().iterator();
+        while (it.hasNext()) {
+            Map.Entry<String,String> e = it.next();
+            String config_id  = e.getKey();
+            String config_key = e.getValue();
+            
+            if (config_key != null && !caches.containsValue(config_key)) {
+                // not in caches, must be new config
+                JobDefinition jd = jdlist.get(config_id);
+                Transcoder tr = jd.getTranscoder(); 
+                String label = jd.getLabel(); 
+                MimeType mt = jd.getMimeType();
+                
+                String inId = jd.getInId();
+                String inKey = config.get(inId);
+                
+                // check if it's inId is already a cached node
+                if (caches.containsValue(inKey)) {
+                    String in = "";
+                    for (Node n : list) {
+                        if (n.getStringValue("key").equals(inKey)) {
+                            in = "" + n.getNumber();
+                            break;  // can only be 1
+                        }
+                    }
+                    
+                    jd = new JobDefinition(config_id, in, label, tr, mt, 
Stage.TRANSCODER);
+                    if (! new_jdlist.containsKey(config_id)) {
+                        new_jdlist.put(config_id, jd);
+                        LOG.debug("Added id: " + config_id);
+                    }
+                    
+                } else {
+                    // inId not yet cached
+                    if (! new_jdlist.containsKey(inId)) {
+                        new_jdlist.put(inId, jdlist.get(inId) );
+                        LOG.debug("Added inId: " + inId);
+                    }
+                    
+                    if (! new_jdlist.containsKey(config_id)) {
+                        new_jdlist.put(config_id, jdlist.get(config_id) );
+                        LOG.debug("Added id: " + config_id);
+                    }
+                }
+            }
+        }
+
+        return new_jdlist;
+    }    
 }

Deleted: 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/RecreateCacheFunction.java
===================================================================
--- 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/RecreateCacheFunction.java
       2010-06-01 14:47:14 UTC (rev 42365)
+++ 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/RecreateCacheFunction.java
       2010-06-01 14:55:52 UTC (rev 42366)
@@ -1,115 +0,0 @@
-/*
-
-This file is part of the MMBase Streams application,
-which is part of MMBase - an open source content management system.
-    Copyright (C) 2009 André van Toly, Michiel Meeuwissen
-
-MMBase Streams is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-MMBase Streams is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with MMBase. If not, see <http://www.gnu.org/licenses/>.
-
-*/
-
-package org.mmbase.streams;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.*;
-
-
-import org.mmbase.streams.createcaches.*;
-import org.mmbase.streams.createcaches.Processor;
-import org.mmbase.streams.transcoders.*;
-
-import org.mmbase.util.MimeType;
-import org.mmbase.util.functions.*;
-import org.mmbase.bridge.*;
-import org.mmbase.bridge.util.*;
-import org.mmbase.storage.search.FieldCompareConstraint;
-import org.mmbase.security.ActionRepository;
-import org.mmbase.datatypes.processors.*;
-import org.mmbase.util.logging.*;
-
-/**
- * Triggers recreation of a certain streamsourcescaches belonging to this 
streamsources node.
- *
- * @author Michiel Meeuwissen
- * @author André van Toly
- * @version $Id: RecreateCacheFunction.java 41117 2010-02-17 16:23:03Z michiel 
$
- */
-
-public class RecreateCacheFunction extends NodeFunction<Boolean> {
-
-    private static final Logger LOG = 
Logging.getLoggerInstance(RecreateCacheFunction.class);
-
-    // parameter definitions
-    public final static Parameter[] RECACHE_PARAMETERS = { new 
Parameter("recache", org.mmbase.bridge.Node.class) };
-
-    public RecreateCacheFunction() {
-        super("recache", RECACHE_PARAMETERS);
-    }
-
-    @Override
-    protected Boolean getFunctionValue(final Node node, final Parameters 
parameters) {
-        LOG.debug("params: " + parameters);
-        if (node.getNumber() > 0
-                && 
node.getCloud().may(ActionRepository.getInstance().get("streams", 
"retrigger_jobs"), null)) {
-
-            Node recache = (Node) parameters.get("recache");
-            LOG.info("Recreating cache #" + recache.getNumber() + " for node 
#" + node.getNumber());
-            final Field url = node.getNodeManager().getField("url");
-
-            String in = null;
-            Node inNode = recache.getNodeValue("id");
-            if (inNode.getNumber() != node.getNumber()) {
-                in = "" + inNode.getNumber();
-            }
-            String id        = "recache";
-            String mimetype  = recache.getStringValue("mimetype");
-            String key       = recache.getStringValue("key");
-            Transcoder transcoder = null;
-            try {
-                transcoder = AbstractTranscoder.getInstance(key);
-            } catch (ClassNotFoundException cnf) {
-                LOG.error("Class not found, transcoder in key '" + key + "' 
does not exist? - " + cnf);
-                return false;
-            } catch (InstantiationException ie) {
-                LOG.error("Exception while instantiating transcoder for key '" 
+ key + "' - " + ie);
-                return false;
-            } catch (Exception e) {
-                LOG.error("Exception while trying to (re)transcode - " + e);
-                return false;
-            }
-
-            JobDefinition jd = new JobDefinition(id, in, null, transcoder, new 
MimeType(mimetype), Stage.TRANSCODER);
-            Map<String, JobDefinition> jdlist = new LinkedHashMap<String, 
JobDefinition>();
-            jdlist.put(id, jd);
-
-            {
-                final Processor cc = CreateCachesFunction.getCacheCreator(url);
-
-                if (cc != null) {
-                    LOG.service("Calling " + cc);
-                    
cc.createCaches(node.getCloud().getNonTransactionalCloud(), node.getNumber(), 
jdlist);
-
-                    return true;
-                } else {
-                    LOG.error("No CreateCacheProcessor in " + url);
-                    return false;
-                }
-            }
-
-        } else {
-            return false;
-        }
-    }
-
-}

Modified: 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/Job.java
===================================================================
--- 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/Job.java
    2010-06-01 14:47:14 UTC (rev 42365)
+++ 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/Job.java
    2010-06-01 14:55:52 UTC (rev 42366)
@@ -41,8 +41,10 @@
  * 'caches' nodes for it. Such a Job object is created everytime somebody 
creates a new source
  * object, or explicitly triggers the associated 'cache' objects to be 
(re)created.
  *
+ * @author Michiel Meeuwissen
  * @version $Id$
  */
+ 
 public class Job implements Iterable<Result> {
     private static final Logger LOG = Logging.getLoggerInstance(Job.class);
     private static long lastJobNumber = 0;
@@ -73,6 +75,15 @@
         this(processor, processor.list, cloud, chain);
     }
     
+    /**
+     * A Job is defined by several {...@link JobDefinition}'s, the output is 
goes to loggers in 
+     * {...@link ChainedLogger}
+     *
+     * @param processor reads config, is called by user etc.
+     * @param list      the definitions
+     * @param cloud     mmbase cloud nodes belong to
+     * @param chain     loggers
+     */
     public Job(Processor processor, Map<String, JobDefinition> list, Cloud 
cloud, ChainedLogger chain) {
         user = cloud.getUser().getIdentifier();
         logger = new BufferedLogger();
@@ -88,9 +99,9 @@
     }
 
     /**
-     * Defines the several Results by reading the JobDefinitions in the list.
-     * Creates streamsourcescaches for transcoders and asigns 
TranscoderResults to them or creates
-     * RecognizerResults for JobDefinitions of recognizers.
+     * Defines the several {...@link Result}s by reading the {...@link 
JobDefinition}s in the list.
+     * Creates streamsourcescaches for {...@link Transcoder}s and asigns 
{...@link TranscoderResult}s to 
+     * them or creates {...@link RecognizerResult}s for {...@link 
JobDefinition}s of recognizers.
      */
     protected void findResults() {
         int i = -1;
@@ -127,10 +138,8 @@
                 
                 } else {    // using a previously cached node
                     String inId = jd.getInId();
-                    
                     if (! jobdefs.containsKey(inId) && 
node.getCloud().hasNode(inId)) {
                         // use an existing cache node
-                        LOG.service("Using cache #" + inId + " as input");
                         
                         inNode = node.getCloud().getNode(inId);
                         String url = inNode.getStringValue("url");
@@ -140,7 +149,7 @@
                         }
 
                         File f = new File(processor.getDirectory(), url);
-                        LOG.service("Using (in)file: " + f);
+                        LOG.service("Using (in)file '" + f + "' of cache #" + 
inId + " as input");
                         
                         if (!f.exists() && !f.isFile()) {
                             LOG.error("NO INFILE! '" + f );
@@ -151,7 +160,7 @@
                         
                     } else {    // use inId from config
                         if (! jobdefs.containsKey(inId)) {
-                            LOG.warn("Configuration error, no such job 
definition with id '" + inId);
+                            LOG.warn("Configuration error, no such job 
definition with id: " + inId);
                         continue;
                     }
                         Result prevResult = lookup.get(inId);
@@ -359,7 +368,7 @@
     }
 
     /**
-     * Start actually executing this Jobs.
+     * Start actually executing this Job by submitting it at {...@link 
JobCallable}.
      */
     public void submit(Cloud cloud, int n, ChainedLogger chain) {
         JobCallable callable = new JobCallable(this, cloud, chain, n);
@@ -397,7 +406,8 @@
     }
 
     /**
-     * Gets and/or creates the node representing the 'cached' stream.
+     * Gets and/or creates the node representing the 'cached' stream, uses 
this (source) node as
+     * infile to create cache from.
      *
      * @param key   representation of the way the stream was created from its 
source
      * @return cached stream node
@@ -409,7 +419,7 @@
     /**
      * Gets and/or creates the node representing the 'cached' stream (the 
result of a conversion),
      * see the builder property 'org.mmbase.streams.cachestype'. It first 
looks if it already
-     * exists in the cloud or otherwise will create one.
+     * exists, if not it creates a new one.
      *
      * @param src   source node to create cache stream from, can be another 
cache
      * @param key   representation of the way the stream was created from its 
source, f.e. transcoding parameters
@@ -455,7 +465,7 @@
 
 
     /**
-     * The Thread in which this Job is running.
+     * Thread in which this Job is running.
      */
     public Thread getThread() {
         return thread;
@@ -470,7 +480,7 @@
     }
 
     /**
-     * The source Node on which this Job will run.
+     * Source Node on which this Job will run.
      */
     public void setNode(Node n) {
         node = n;

Modified: 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/Processor.java
===================================================================
--- 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/Processor.java
      2010-06-01 14:47:14 UTC (rev 42365)
+++ 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/Processor.java
      2010-06-01 14:55:52 UTC (rev 42366)
@@ -46,7 +46,9 @@
  * This commit-processor is used on nodes of type 'streamsources' and is used 
to initiate the
  * conversions to other formats which are saved in 'streamsourcescaches'. Its 
analogy is derived
  * from the conversion of 'images' in MMBase to their resulting 'icaches' 
nodes.
- * Several transcodings of media files can be configured with recognizers and 
transcoders.
+ * Several transcodings of media files can be configured with 
+ * {...@link org.mmbase.streams.transcoders.Recognizer}s and 
+ * {...@link org.mmbase.streams.transcoders.Transcoder}s.
  *
  * @author Michiel Meeuwissen
  * @version $Id$
@@ -66,7 +68,7 @@
     }
 
     /**
-     * List with the configured JobDefinitions.
+     * List with the configured {...@link JobDefinition}s.
      */
     protected final Map<String, JobDefinition> list = 
Collections.synchronizedMap(new LinkedHashMap<String, JobDefinition>());
 
@@ -85,6 +87,11 @@
         }
     }
 
+    /* Job descriptions as in configFile (normally 
'streams/createcaches.xml'). */
+    public final Map<String, JobDefinition> getCreatecachesList() {
+        return list;
+    }
+
     public void setCacheManagers(String... cm) {
         cacheManagers = cm;
     }
@@ -342,7 +349,7 @@
      * Creates caches nodes when not existing (or recreate) by making a 
transcoding Job
      * @param ntCloud   a non transactional cloud
      * @param int       node number of a source node
-     * @param jdlist    jobdefinitions
+     * @param jdlist    job definitions
      * @return Job recognizing and/or transcoding the source stream
      */
     public Job createCaches(final Cloud ntCloud, final int node, final 
Map<String, JobDefinition> jdlist) {

Modified: 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/WaitUntilRecognizedFunction.java
===================================================================
--- 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/WaitUntilRecognizedFunction.java
    2010-06-01 14:47:14 UTC (rev 42365)
+++ 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/WaitUntilRecognizedFunction.java
    2010-06-01 14:55:52 UTC (rev 42366)
@@ -26,8 +26,10 @@
 import org.mmbase.util.logging.*;
 
 /**
+ * To be used in a template, indicates when an uploaded file has been 
recognized and the user 
+ * can start editing associated data.
  *
- * @author André van Toly
+ * @author Andr&eacute; van Toly
  * @version $Id$
  */
 public class WaitUntilRecognizedFunction extends NodeFunction<Boolean> {

Modified: 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/WaitUntilTranscodingFunction.java
===================================================================
--- 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/WaitUntilTranscodingFunction.java
   2010-06-01 14:47:14 UTC (rev 42365)
+++ 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/WaitUntilTranscodingFunction.java
   2010-06-01 14:55:52 UTC (rev 42366)
@@ -26,6 +26,7 @@
 import org.mmbase.util.logging.*;
 
 /**
+ * To be used in a template, indicates when transcoding of the uploaded file 
has started.
  *
  * @author Michiel Meeuwissen
  * @version $Id$

Modified: 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerUtils.java
===================================================================
--- 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerUtils.java
   2010-06-01 14:47:14 UTC (rev 42365)
+++ 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerUtils.java
   2010-06-01 14:55:52 UTC (rev 42366)
@@ -38,7 +38,7 @@
  * that try to extract information, convert nodetypes to the matching kind etc.
  *
  * @author Michiel Meeuwissen
- * @author Andre van Toly
+ * @author Andr&eacute; van Toly
  * @version $Id$
  */
 

Modified: 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegAnalyzer.java
===================================================================
--- 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegAnalyzer.java
  2010-06-01 14:47:14 UTC (rev 42365)
+++ 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegAnalyzer.java
  2010-06-01 14:55:52 UTC (rev 42366)
@@ -40,7 +40,7 @@
  * </pre>
  *
  * @author Michiel Meeuwissen
- * @author Andre van Toly
+ * @author Andr&eacute; van Toly
  * @version $Id$
  */
 

Modified: 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/SegmenterAnalyzer.java
===================================================================
--- 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/SegmenterAnalyzer.java
       2010-06-01 14:47:14 UTC (rev 42365)
+++ 
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/SegmenterAnalyzer.java
       2010-06-01 14:55:52 UTC (rev 42366)
@@ -35,7 +35,7 @@
  * Analyzes <code>segmenter</code> output during its job, changes url field to 
m3u8 index file when 
  * ready and rewrites m3u8 to removed full paths.
  * 
- * @author André van Toly
+ * @author Andr&eacute; van Toly
  * @version $Id: SegmenterAnalyzer.java 40036 2009-11-30 20:27:39Z andre $
  */
 public class SegmenterAnalyzer implements Analyzer {

Modified: 
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/admin.jspx
===================================================================
--- 
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/admin.jspx
      2010-06-01 14:47:14 UTC (rev 42365)
+++ 
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/admin.jspx
      2010-06-01 14:55:52 UTC (rev 42366)
@@ -14,11 +14,13 @@
 
     <mm:import from="request" externid="trigger" />
     <mm:import from="request" externid="interrupt" vartype="integer" />
-    <mm:import from="request" externid="recache" />
+    <mm:import from="request" externid="all" 
vartype="boolean">false</mm:import> 
+    <mm:import from="request" externid="cache" />
     <mm:import from="request" externid="page">0</mm:import>
 
     <mm:import id="pagesize" vartype="integer">50</mm:import>
     <mm:import externid="type">mediafragments</mm:import>
+    
     <mm:fieldlist nodetype="streamsources" fields="url" varStatus="status">
       <table summary="configuration">
         <caption>Configuration of creation of streamscaches</caption>
@@ -39,6 +41,14 @@
       </table>
     </mm:fieldlist>
 
+    <mm:listfunction set="streams" name="runningJobs" id="job">
+      <p class="msg">
+        <mm:link page="alljobs">
+          <a href="${_}">Jobs</a> running: <mm:size />
+        </mm:link>
+       </p>
+    </mm:listfunction>
+
     <table summary="mediafragments">
       <caption>Recent mediafragments</caption>
       <tr>

Modified: 
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
===================================================================
--- 
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
       2010-06-01 14:47:14 UTC (rev 42365)
+++ 
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
       2010-06-01 14:55:52 UTC (rev 42366)
@@ -15,7 +15,7 @@
     <mm:listfunction name="filteredurls">
       <c:if test="${_.main}">
         <c:set var="source"  value="${_.source.number}" />
-      <tr>
+        <tr class="odd">
           <td>${_.source.number}</td>
         <td>
             <strong><a href="${mm:escape('text/xml', 
_.URL)}"><mm:escape>${_.URL}</mm:escape></a></strong>
@@ -40,11 +40,15 @@
                 <c:choose>
                   <c:when test="${trigger eq triggervalue}">
                     <mm:log> CALLING TRIGGER FOR ${trigger}</mm:log>
-                  <mm:voidfunction name="triggerCaches" />
+                  <mm:voidfunction name="triggerCaches" referids="all" />
                   <div class="msg">Triggered transcoding</div>
                   </c:when>
                   <c:otherwise>
                     <mm:link referids="triggerva...@trigger">
+                    <a href="${_}">Trigger</a>,
+                  </mm:link>
+                  <mm:link referids="triggerva...@trigger">
+                    <mm:param name="all">true</mm:param>
                     <a href="${_}">Trigger all</a>
                     </mm:link>
                   </c:otherwise>
@@ -67,7 +71,7 @@
     </mm:listfunction>
     <mm:listfunction name="filteredurls">
       <c:if test="${!_.main}">
-        <tr>
+        <tr class="odd">
           <td> ${_.source.number} </td>
           <td>
             <strong><a href="${mm:escape('text/xml', 
_.URL)}"><mm:escape>${_.URL}</mm:escape></a></strong>
@@ -90,7 +94,7 @@
           <td>${_.state}</td>
         </tr><tr>
           <td />
-          <mm:node number="${_.source.number}" notfound="skip" id="cache">
+          <mm:node number="${_.source.number}" notfound="skip" id="recache">
             <td colspan="4">
               <mm:hasfield name="key">
                   <mm:field name="key" />
@@ -98,21 +102,28 @@
               </td>
             <td>
               <mm:hasfield name="id">
-                <c:set var="recachevalue" value="${fragment}:${cache}" />
+                <c:set var="recachevalue" value="${fragment}:${recache}" />
                 <c:choose>
-                  <c:when test="${recache eq recachevalue}">
+                  <c:when test="${cache eq recachevalue}">
                     <mm:field name="id">
                       <mm:node number="${source}">
-                        <mm:booleanfunction name="triggerRecache" 
referids="ca...@recache">
+                        <mm:booleanfunction name="triggerCaches" 
referids="reca...@cache">
                           <div class="msg">Triggered transcoding</div>
                         </mm:booleanfunction>
             </mm:node>
                     </mm:field>
                   </c:when>
                   <c:otherwise>
-                    <mm:link referids="recacheva...@recache">
+                    <c:choose>
+                      <c:when test="${_.state != 'BUSY'}">
+                        <mm:link referids="recacheva...@cache">
                       <a href="${_}">Retrigger cache</a>
                     </mm:link>
+                      </c:when>
+                      <c:otherwise>
+                        <div class="msg">Transcoding</div>
+                      </c:otherwise>
+                    </c:choose>
           </c:otherwise>
         </c:choose>
               </mm:hasfield>
@@ -122,6 +133,9 @@
       </c:if>
     </mm:listfunction>
   
+    <tr class="odd">
+      <td colspan="9"><jsp:text> </jsp:text></td>
+    </tr>
   </mm:listnodes>
   
   <tr cols="100">

Modified: 
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/myfragments.jspx
===================================================================
--- 
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/myfragments.jspx
        2010-06-01 14:47:14 UTC (rev 42365)
+++ 
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/myfragments.jspx
        2010-06-01 14:55:52 UTC (rev 42366)
@@ -7,9 +7,22 @@
     xmlns:jsp="http://java.sun.com/JSP/Page";
     xmlns:mm="http://www.mmbase.org/mmbase-taglib-2.0";>
   <jsp:output omit-xml-declaration="true" />
+  <mm:cloud rank="basic user" jspvar="cloud">
 
+    
<h3>${mm:string(requestScope['org.mmbase.framework.state'].renderer.block.title)}</h3>
+    
<p>${mm:string(requestScope['org.mmbase.framework.state'].renderer.block.description)}</p>
+
+    <mm:import from="request" externid="trigger" />
+    <mm:import from="request" externid="interrupt" vartype="integer" />
+    <mm:import from="request" externid="all" 
vartype="boolean">false</mm:import> 
+    <mm:import from="request" externid="cache" />
+    <mm:import from="request" externid="page">0</mm:import>
+
+    <mm:import id="pagesize" vartype="integer">50</mm:import>
+    <mm:import externid="type">mediafragments</mm:import>
+
   <table summary="my fragments">
-    <caption><mm:cloudinfo type="user" id="currentuser" /></caption>
+      <caption>Recent mediafragments of <mm:cloudinfo type="user" 
id="currentuser" /></caption>
       <tr>
         <th>#</th>
         <th>title or url</th>
@@ -25,5 +38,5 @@
     </mm:listnodescontainer>
   </table>
 
-
+  </mm:cloud>
 </div>

Modified: 
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/upload.jspx
===================================================================
--- 
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/upload.jspx
     2010-06-01 14:47:14 UTC (rev 42365)
+++ 
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/upload.jspx
     2010-06-01 14:55:52 UTC (rev 42366)
@@ -59,9 +59,6 @@
     </mm:maycreate>
     <mm:maycreate type="streamsources" inverse="true">
       <fmt:message key="maynot" />
-
-      <mm:include page="/you.jspx" />
-
       <mm:cloudinfo type="rank" />
     </mm:maycreate>
   </mm:cloud>

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

Reply via email to