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é 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é 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é 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é 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é 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