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
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs