Author: michiel
Date: 2009-05-30 11:11:30 +0200 (Sat, 30 May 2009)
New Revision: 35533

Added:
   
speeltuin/mihxil/streams/src/main/webapp/mmbase/components/streams/alljobs.jspx
Modified:
   
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/CreateCachesProcessor.java
   
speeltuin/mihxil/streams/src/main/resources/org/mmbase/config/components/streams.xml
   
speeltuin/mihxil/streams/src/main/resources/org/mmbase/config/functions/streams.xml
   
speeltuin/mihxil/streams/src/main/webapp/mmbase/components/streams/upload.jspx
Log:


Modified: 
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/CreateCachesProcessor.java
===================================================================
--- 
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/CreateCachesProcessor.java
        2009-05-30 09:05:12 UTC (rev 35532)
+++ 
speeltuin/mihxil/streams/src/main/java/org/mmbase/streams/CreateCachesProcessor.java
        2009-05-30 09:11:30 UTC (rev 35533)
@@ -195,6 +195,9 @@
         }
         return myjobs;
     }
+    public static Set<Job> runningJobs() {
+        return Collections.unmodifiableSet(runningJobs);
+    }
 
 
     private Job createJob(final Node node, final Node mediaprovider, final 
Node mediafragment, final ChainedLogger logger) {
@@ -301,36 +304,44 @@
         if (node.getNumber() > 0) {
             if (node.isChanged(field.getName())) {
 
-                node.getStringValue("title"); // This triggers 
RelatedField$Creator to create a
-                // mediafragment if it does not yet exist
-                Node mediafragment = node.getNodeValue("mediafragment");
+                final Cloud ntCloud = 
node.getCloud().getNonTransactionalCloud();
+                ThreadPools.scheduler.schedule(new Runnable() {
+                        public void run() {
+                            if (ntCloud.hasNode(node.getNumber())) {
+                                    final ChainedLogger logger = new 
ChainedLogger(LOG);
+                                    node.getStringValue("title"); // This 
triggers RelatedField$Creator to create a
+                                    // mediafragment if it does not yet exist
+                                    Node mediafragment = 
node.getNodeValue("mediafragment");
+                                    Node mediaprovider = 
node.getNodeValue("mediaprovider");
+                                    if (mediaprovider == null) {
+                                        mediaprovider = 
Casting.toNode(node.getNodeManager().getField("mediaprovider").getDataType().getDefaultValue(),
 node.getCloud());
+                                    }
 
-                Node mediaprovider = node.getNodeValue("mediaprovider");
-                if (mediaprovider == null) {
-                    mediaprovider = 
Casting.toNode(node.getNodeManager().getField("mediaprovider").getDataType().getDefaultValue(),
 node.getCloud());
-                }
+                                    LOG.info("Field '" + field + " was 
changed. Triggering caches for " + list + " Mediaframent " + mediafragment);
 
-                LOG.info("Field '" + field + " was changed. Triggering caches 
for " + list + " Mediaframent " + mediafragment);
+                                    final Job thisJob = 
createJob(ntCloud.getNode(node.getNumber()),
+                                                                  
ntCloud.getNode(mediaprovider.getNumber()),
+                                                                  
ntCloud.getNode(mediafragment.getNumber()), logger);
 
-                final ChainedLogger logger = new ChainedLogger(LOG);
-                Cloud ntCloud = node.getCloud().getNonTransactionalCloud();
-                final Job thisJob = 
createJob(ntCloud.getNode(node.getNumber()),
-                                              
ntCloud.getNode(mediaprovider.getNumber()),
-                                              
ntCloud.getNode(mediafragment.getNumber()), logger);
 
-                // If the node happens to be deleted before the future with 
cache creations is ready, cancel the future
-                EventManager.getInstance().addEventListener(new 
WeakNodeEventListener() {
-                        public void notify(NodeEvent event) {
-                            if (event.getNodeNumber() == node.getNumber() && 
event.getType() == Event.TYPE_DELETE) {
-                                if (thisJob.future.cancel(true)) {
-                                    logger.info("Canceled " + thisJob.future + 
" for " + event.getBuilderName() + " " + event.getNodeNumber());
-                                }
+                                    // If the node happens to be deleted 
before the future with cache creations is ready, cancel the future
+                                    
EventManager.getInstance().addEventListener(new WeakNodeEventListener() {
+                                            public void notify(NodeEvent 
event) {
+                                                if (event.getNodeNumber() == 
node.getNumber() && event.getType() == Event.TYPE_DELETE) {
+                                                    if 
(thisJob.future.cancel(true)) {
+                                                        logger.info("Canceled 
" + thisJob.future + " for " + event.getBuilderName() + " " + 
event.getNodeNumber());
+                                                    }
+                                                }
+                                            }
+                                            public String toString() {
+                                                return "Job canceler for " + 
node.getNumber();
+                                            }
+                                        });
+                            } else {
+                                LOG.warn("Node " + node.getNumber() + " is not 
real.");
                             }
                         }
-                        public String toString() {
-                            return "Job canceler for " + node.getNumber();
-                        }
-                    });
+                    }, 2, TimeUnit.SECONDS);
             } else {
                 LOG.debug("Field " + field + " not changed " + 
node.getChanged());
             }
@@ -394,6 +405,9 @@
         public String getProgress() {
             return "" + busy + "/" + size;
         }
+        public String getUser() {
+            return user;
+        }
 
         @Override
         public String toString() {

Modified: 
speeltuin/mihxil/streams/src/main/resources/org/mmbase/config/components/streams.xml
===================================================================
--- 
speeltuin/mihxil/streams/src/main/resources/org/mmbase/config/components/streams.xml
        2009-05-30 09:05:12 UTC (rev 35532)
+++ 
speeltuin/mihxil/streams/src/main/resources/org/mmbase/config/components/streams.xml
        2009-05-30 09:11:30 UTC (rev 35533)
@@ -48,6 +48,11 @@
          mimetype="text/html">
     <body jsp="myjobs.jspx" />
   </block>
+  <block name="alljobs"
+         classification="mmbase.streams"
+         mimetype="text/html">
+    <body jsp="alljobs.jspx" />
+  </block>
 
   <block name="upload"
          classification="mmbase.streams"

Modified: 
speeltuin/mihxil/streams/src/main/resources/org/mmbase/config/functions/streams.xml
===================================================================
--- 
speeltuin/mihxil/streams/src/main/resources/org/mmbase/config/functions/streams.xml
 2009-05-30 09:05:12 UTC (rev 35532)
+++ 
speeltuin/mihxil/streams/src/main/resources/org/mmbase/config/functions/streams.xml
 2009-05-30 09:11:30 UTC (rev 35533)
@@ -11,4 +11,10 @@
     <param name="user" type="org.mmbase.security.UserContext" />
   </function>
 
+  <function name="runningJobs">
+    <type>class</type>
+    <class>org.mmbase.streams.CreateCachesProcessor</class>
+    <method>runningJobs</method>
+  </function>
+
 </functionset>

Added: 
speeltuin/mihxil/streams/src/main/webapp/mmbase/components/streams/alljobs.jspx
===================================================================
--- 
speeltuin/mihxil/streams/src/main/webapp/mmbase/components/streams/alljobs.jspx 
                            (rev 0)
+++ 
speeltuin/mihxil/streams/src/main/webapp/mmbase/components/streams/alljobs.jspx 
    2009-05-30 09:11:30 UTC (rev 35533)
@@ -0,0 +1,31 @@
+<div
+    class="mm_c c_streams b_myjobs ${requestScope.componentClassName}"
+    id="${requestScope.componentId}"
+    xmlns:c="http://java.sun.com/jsp/jstl/core";
+    xmlns:mm-res="urn:jsptagdir:/WEB-INF/tags/mm/resources"
+    xmlns:fn="http://java.sun.com/jsp/jstl/functions";
+    xmlns:jsp="http://java.sun.com/JSP/Page";
+    xmlns:mm="http://www.mmbase.org/mmbase-taglib-2.0";>
+
+  <jsp:output omit-xml-declaration="true" />
+
+  <ul>
+    <mm:listfunction set="streams" name="runningJobs">
+      <li>
+        <span>${_.transcoder} (${_.progress})</span>
+        <p>
+          <span class="in">${_.transcoder.in}</span>
+          <jsp:text> -&amp;gt; </jsp:text>
+          <span class="out">${_.transcoder.out}</span>
+        </p>
+        <div class="log">
+          <pre>
+            <jsp:text>${_.logger.debugList}</jsp:text>
+          </pre>
+        </div>
+      </li>
+    </mm:listfunction>
+  </ul>
+
+
+</div>

Modified: 
speeltuin/mihxil/streams/src/main/webapp/mmbase/components/streams/upload.jspx
===================================================================
--- 
speeltuin/mihxil/streams/src/main/webapp/mmbase/components/streams/upload.jspx  
    2009-05-30 09:05:12 UTC (rev 35532)
+++ 
speeltuin/mihxil/streams/src/main/webapp/mmbase/components/streams/upload.jspx  
    2009-05-30 09:11:30 UTC (rev 35533)
@@ -38,6 +38,8 @@
           </mm:valid>
         </mm:present>
       </mm:form>
+      <h2>Jobs</h2>
+      <mm:component name="streams" block="myjobs" />
     </mm:maycreate>
     <mm:maycreate type="streamsources" inverse="true">
       <fmt:message key="maynot" />

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to