cancel all pending jobs added
authorzapata <zapata>
Tue, 16 Sep 2003 12:38:43 +0000 (12:38 +0000)
committerzapata <zapata>
Tue, 16 Sep 2003 12:38:43 +0000 (12:38 +0000)
bundles/admin_en.properties
source/mir/rss/RSSReader.java
source/mir/util/HTMLRoutines.java
source/mircoders/global/JobQueue.java
source/mircoders/global/ProducerEngine.java
source/mircoders/servlet/ServletModuleProducer.java
templates/admin/FUNCTIONS.template
templates/admin/producerqueue.template
web/style/admin.css

index 6124056..1c2e1a6 100755 (executable)
@@ -1,6 +1,6 @@
 ########## admin ##########
 # language: english
-# $Id: admin_en.properties,v 1.48.2.10 2003/09/06 01:01:13 zapata Exp $
+# $Id: admin_en.properties,v 1.48.2.11 2003/09/16 12:38:43 zapata Exp $
 
 languagename=English
 
@@ -402,12 +402,11 @@ producer.verb.enqueue = enqueue
 producer.job.name = Job
 producer.job.status = Status
 producer.job.date = Last change
-producer.job.cancel = cancel
-producer.job.abort = abort
 producer.job.empty = Queue is empty
 producer.job.runningtime = Running time
 
 producer.jobqueue.canceljobs = Cancel selected jobs
+producer.jobqueue.cancelalljobs = Cancel all pending jobs
 producer.jobqueue.title = Current jobs
 producer.jobqueue.refresh = refresh
 producer.producerlist.title = Add a new job
index bdc850b..7501d9d 100755 (executable)
@@ -60,7 +60,7 @@ public class RSSReader {
   public static final String CONTENT_NAMESPACE_URI = "http://purl.org/rss/1.0/modules/content/";
 
   // ML: to be localized:
-  public static final String V2V_NAMESPACE_URI = "http://v2v.indymedia.de/rss/";
+  public static final String V2V_NAMESPACE_URI = "http://v2v.cc/rss/";
 
   private static final XMLReader.XMLName RDF_ABOUT_PARAMETER = new XMLReader.XMLName(RDF_NAMESPACE_URI, "about");
   private static final XMLReader.XMLName RDF_SEQUENCE_TAG = new XMLReader.XMLName(RDF_NAMESPACE_URI, "Seq");
index 4ed503b..53a4cda 100755 (executable)
@@ -56,7 +56,7 @@ public class HTMLRoutines {
     }
   }
 
-  public static String encodeHTML(String aText) {
+  public static String encodeHTML(String aText) throws UtilExc {
     final char[] CHARACTERS_TO_ESCAPE = { '&', '<', '>', '"' };
     final String[] ESCAPE_CODES = { "&amp;", "&lt;", "&gt;", "&quot;" };
 
index c62181b..1f1fab7 100755 (executable)
@@ -168,6 +168,16 @@ public class JobQueue {
     }
   }
 
+  public void cancelAllJobs() {
+    synchronized (jobHandlers) {
+      Iterator i = jobHandlers.iterator();
+
+      while (i.hasNext()) {
+        ((JobHandler) i.next()).cancelOrAbortJob();
+      }
+    }
+  }
+
   public interface Job {
     void abort();
 
index 6c6f282..5477bae 100755 (executable)
@@ -65,6 +65,10 @@ public class ProducerEngine {
     producerJobQueue.cancelJobs(aJobs);
   };
 
+  public void cancelAllJobs() {
+    producerJobQueue.cancelAllJobs();
+  };
+
   public void addTask(ProducerTask aTask) {
     addJob(aTask.getProducer(), aTask.getVerb());
   }
index 26af533..d8281ee 100755 (executable)
-/*
- * Copyright (C) 2001, 2002 The Mir-coders group
- *
- * This file is part of Mir.
- *
- * Mir 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 2 of the License, or
- * (at your option) any later version.
- *
- * Mir 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 Mir; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * In addition, as a special exception, The Mir-coders gives permission to link
- * the code of this program with  any library licensed under the Apache Software License,
- * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
- * (or with modified versions of the above that use the same license as the above),
- * and distribute linked combinations including the two.  You must obey the
- * GNU General Public License in all respects for all of the code used other than
- * the above mentioned libraries.  If you modify this file, you may extend this
- * exception to your version of the file, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your version.
- */
-package mircoders.servlet;
-
-import java.io.PrintWriter;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Vector;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.struts.util.MessageResources;
-
-import mir.generator.Generator;
-import mir.log.LoggerWrapper;
-import mir.producer.ProducerFactory;
-import mir.servlet.ServletModule;
-import mir.servlet.ServletModuleFailure;
-import mir.util.HTTPRequestParser;
-import mir.util.ResourceBundleGeneratorFunction;
-import mircoders.global.MirGlobal;
-
-public class ServletModuleProducer extends ServletModule
-{
-  private static ServletModuleProducer instance = new ServletModuleProducer();
-  public static ServletModule getInstance() { return instance; }
-
-  Object comments;
-  Map generationData;
-  Generator generator;
-  int totalNrComments;
-  List producersData;
-
-  void generateResponse(String aGeneratorIdentifier, PrintWriter aWriter, Map aResponseData, Locale aLocale) {
-    try {
-      generator = MirGlobal.localizer().generators().makeAdminGeneratorLibrary().makeGenerator(aGeneratorIdentifier);
-      MirGlobal.localizer().producerAssistant().initializeGenerationValueSet(aResponseData);
-      aResponseData.put( "lang", new ResourceBundleGeneratorFunction( aLocale, MessageResources.getMessageResources("bundles.admin")));
-      generator.generate(aWriter, aResponseData, logger);
-    }
-    catch (Throwable t) {
-      throw new ServletModuleFailure(t);
-    }
-  }
-
-  private ServletModuleProducer() {
-    super();
-    logger = new LoggerWrapper("ServletModule.Producer");
-    defaultAction="showProducerQueueStatus";
-  }
-
-  public void showMessage(HttpServletRequest aRequest, HttpServletResponse aResponse, String aMessage, String anArgument1, String anArgument2) {
-    Map responseData;
-    try {
-      responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
-      responseData.put("message", aMessage);
-      responseData.put("argument1", anArgument1);
-      responseData.put("argument2", anArgument2);
-
-      ServletHelper.generateResponse(aResponse.getWriter(), responseData, "infomessage.template");
-    }
-    catch (Throwable t) {
-      throw new ServletModuleFailure(t);
-    }
-  }
-
-
-  public void showProducerQueueStatus(HttpServletRequest aRequest, HttpServletResponse aResponse) {
-    Object comments;
-    Map generationData;
-    Generator generator;
-    int totalNrComments;
-    List producersData;
-
-    try {
-      generator = MirGlobal.localizer().generators().makeAdminGeneratorLibrary().makeGenerator("producerqueue.template");
-
-      generationData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
-      generationData.put( "thisurl", "module=Producer&do=showProducerQueueStatus");
-
-      producersData = new Vector();
-      Iterator i = MirGlobal.localizer().producers().factories().iterator();
-      while (i.hasNext()) {
-        ProducerFactory factory = (ProducerFactory) i.next();
-
-        List producerVerbs = new Vector();
-        Iterator j = factory.verbs();
-        while (j.hasNext()) {
-          Map verbData = new HashMap();
-          ProducerFactory.ProducerVerb verb = (ProducerFactory.ProducerVerb) j.next();
-          verbData.put("name", verb.getName());
-          verbData.put("description", verb.getDescription());
-
-          producerVerbs.add(verbData);
-        }
-
-        Map producerData = new HashMap();
-        producerData.put("name", factory.getName());
-        producerData.put("verbs", producerVerbs);
-
-        producersData.add(producerData);
-      }
-      generationData.put("producers", producersData);
-
-      generationData.put("queue", MirGlobal.producerEngine().getQueueStatus());
-      generator.generate(aResponse.getWriter(), generationData, logger);
-    }
-    catch (Throwable t) {
-      throw new ServletModuleFailure(t);
-    }
-  }
-
-  public void produce(HttpServletRequest aRequest, HttpServletResponse aResponse) {
-    /*
-     * This method will only be called by external scripts (e.g. from cron jobs).
-     * The output therefore is very simple.
-     *
-     */
-
-    try {
-      PrintWriter out = aResponse.getWriter();
-
-      if (aRequest.getParameter("producer")!=null) {
-        String producerParam = aRequest.getParameter("producer");
-        String verbParam = aRequest.getParameter("verb");
-
-        MirGlobal.producerEngine().addJob(producerParam, verbParam);
-        out.println("job added");
-      }
-    }
-    catch (Throwable t) {
-      throw new ServletModuleFailure(t);
-    }
-  }
-
-  public void produceAllNew(HttpServletRequest aRequest, HttpServletResponse aResponse) {
-    try {
-      MirGlobal.localizer().producers().produceAllNew();
-      showMessage(aRequest, aResponse, "produceAllNewAddedToQueue", "", "");
-    }
-    catch (Throwable t) {
-      throw new ServletModuleFailure(t);
-    }
-  }
-
-  public void enqueue(HttpServletRequest aRequest, HttpServletResponse aResponse) {
-    try {
-      if (aRequest.getParameter("producer")!=null) {
-        String producerParam = aRequest.getParameter("producer");
-        String verbParam = aRequest.getParameter("verb");
-
-        MirGlobal.producerEngine().addJob(producerParam, verbParam);
-
-        ServletHelper.redirect(aResponse, "Producer", "showProducerQueueStatus");
-      }
-    }
-    catch (Throwable t) {
-      throw new ServletModuleFailure(t);
-    }
-  }
-
-  public void cancel(HttpServletRequest aRequest, HttpServletResponse aResponse)  {
-    try {
-      HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);
-      List jobs = new Vector(requestParser.getParameterList("jobid"));
-
-      MirGlobal.producerEngine().cancelJobs(jobs);
-      ServletHelper.redirect(aResponse, "Producer", "showProducerQueueStatus");
-    }
-    catch (Throwable t) {
-      throw new ServletModuleFailure(t);
-    }
-  }
-}
+/*\r
+ * Copyright (C) 2001, 2002 The Mir-coders group\r
+ *\r
+ * This file is part of Mir.\r
+ *\r
+ * Mir is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * Mir is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with Mir; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ *\r
+ * In addition, as a special exception, The Mir-coders gives permission to link\r
+ * the code of this program with  any library licensed under the Apache Software License,\r
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library\r
+ * (or with modified versions of the above that use the same license as the above),\r
+ * and distribute linked combinations including the two.  You must obey the\r
+ * GNU General Public License in all respects for all of the code used other than\r
+ * the above mentioned libraries.  If you modify this file, you may extend this\r
+ * exception to your version of the file, but you are not obligated to do so.\r
+ * If you do not wish to do so, delete this exception statement from your version.\r
+ */\r
+package mircoders.servlet;\r
+\r
+import java.io.PrintWriter;\r
+import java.util.HashMap;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+import java.util.Locale;\r
+import java.util.Map;\r
+import java.util.Vector;\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.servlet.http.HttpServletResponse;\r
+\r
+import org.apache.struts.util.MessageResources;\r
+\r
+import mir.generator.Generator;\r
+import mir.log.LoggerWrapper;\r
+import mir.producer.ProducerFactory;\r
+import mir.servlet.ServletModule;\r
+import mir.servlet.ServletModuleFailure;\r
+import mir.util.HTTPRequestParser;\r
+import mir.util.ResourceBundleGeneratorFunction;\r
+import mircoders.global.MirGlobal;\r
+\r
+public class ServletModuleProducer extends ServletModule\r
+{\r
+  private static ServletModuleProducer instance = new ServletModuleProducer();\r
+  public static ServletModule getInstance() { return instance; }\r
+\r
+  Object comments;\r
+  Map generationData;\r
+  Generator generator;\r
+  int totalNrComments;\r
+  List producersData;\r
+\r
+  void generateResponse(String aGeneratorIdentifier, PrintWriter aWriter, Map aResponseData, Locale aLocale) {\r
+    try {\r
+      generator = MirGlobal.localizer().generators().makeAdminGeneratorLibrary().makeGenerator(aGeneratorIdentifier);\r
+      MirGlobal.localizer().producerAssistant().initializeGenerationValueSet(aResponseData);\r
+      aResponseData.put( "lang", new ResourceBundleGeneratorFunction( aLocale, MessageResources.getMessageResources("bundles.admin")));\r
+      generator.generate(aWriter, aResponseData, logger);\r
+    }\r
+    catch (Throwable t) {\r
+      throw new ServletModuleFailure(t);\r
+    }\r
+  }\r
+\r
+  private ServletModuleProducer() {\r
+    super();\r
+    logger = new LoggerWrapper("ServletModule.Producer");\r
+    defaultAction="showProducerQueueStatus";\r
+  }\r
+\r
+  public void showMessage(HttpServletRequest aRequest, HttpServletResponse aResponse, String aMessage, String anArgument1, String anArgument2) {\r
+    Map responseData;\r
+    try {\r
+      responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});\r
+      responseData.put("message", aMessage);\r
+      responseData.put("argument1", anArgument1);\r
+      responseData.put("argument2", anArgument2);\r
+\r
+      ServletHelper.generateResponse(aResponse.getWriter(), responseData, "infomessage.template");\r
+    }\r
+    catch (Throwable t) {\r
+      throw new ServletModuleFailure(t);\r
+    }\r
+  }\r
+\r
+  public void showProducerQueueStatus(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
+    Object comments;\r
+    Map generationData;\r
+    Generator generator;\r
+    int totalNrComments;\r
+    List producersData;\r
+\r
+    try {\r
+      generator = MirGlobal.localizer().generators().makeAdminGeneratorLibrary().makeGenerator("producerqueue.template");\r
+\r
+      generationData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});\r
+      generationData.put( "thisurl", "module=Producer&do=showProducerQueueStatus");\r
+\r
+      producersData = new Vector();\r
+      Iterator i = MirGlobal.localizer().producers().factories().iterator();\r
+      while (i.hasNext()) {\r
+        ProducerFactory factory = (ProducerFactory) i.next();\r
+\r
+        List producerVerbs = new Vector();\r
+        Iterator j = factory.verbs();\r
+        while (j.hasNext()) {\r
+          Map verbData = new HashMap();\r
+          ProducerFactory.ProducerVerb verb = (ProducerFactory.ProducerVerb) j.next();\r
+          verbData.put("name", verb.getName());\r
+          verbData.put("description", verb.getDescription());\r
+\r
+          producerVerbs.add(verbData);\r
+        }\r
+\r
+        Map producerData = new HashMap();\r
+        producerData.put("name", factory.getName());\r
+        producerData.put("verbs", producerVerbs);\r
+\r
+        producersData.add(producerData);\r
+      }\r
+      generationData.put("producers", producersData);\r
+\r
+      generationData.put("queue", MirGlobal.producerEngine().getQueueStatus());\r
+      generator.generate(aResponse.getWriter(), generationData, logger);\r
+    }\r
+    catch (Throwable t) {\r
+      throw new ServletModuleFailure(t);\r
+    }\r
+  }\r
+\r
+  public void produce(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
+    /*\r
+     * This method will only be called by external scripts (e.g. from cron jobs).\r
+     * The output therefore is very simple.\r
+     */\r
+\r
+    try {\r
+      PrintWriter out = aResponse.getWriter();\r
+\r
+      if (aRequest.getParameter("producer")!=null) {\r
+        String producerParam = aRequest.getParameter("producer");\r
+        String verbParam = aRequest.getParameter("verb");\r
+\r
+        MirGlobal.producerEngine().addJob(producerParam, verbParam);\r
+        out.println("job added");\r
+      }\r
+    }\r
+    catch (Throwable t) {\r
+      throw new ServletModuleFailure(t);\r
+    }\r
+  }\r
+\r
+  public void produceAllNew(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
+    try {\r
+      MirGlobal.localizer().producers().produceAllNew();\r
+      showMessage(aRequest, aResponse, "produceAllNewAddedToQueue", "", "");\r
+    }\r
+    catch (Throwable t) {\r
+      throw new ServletModuleFailure(t);\r
+    }\r
+  }\r
+\r
+  public void enqueue(HttpServletRequest aRequest, HttpServletResponse aResponse) {\r
+    try {\r
+      if (aRequest.getParameter("producer")!=null) {\r
+        String producerParam = aRequest.getParameter("producer");\r
+        String verbParam = aRequest.getParameter("verb");\r
+\r
+        MirGlobal.producerEngine().addJob(producerParam, verbParam);\r
+\r
+        ServletHelper.redirect(aResponse, "Producer", "showProducerQueueStatus");\r
+      }\r
+    }\r
+    catch (Throwable t) {\r
+      throw new ServletModuleFailure(t);\r
+    }\r
+  }\r
+\r
+  public void cancel(HttpServletRequest aRequest, HttpServletResponse aResponse)  {\r
+    try {\r
+      HTTPRequestParser requestParser = new HTTPRequestParser(aRequest);\r
+\r
+      if (requestParser.getParameter("cancelall") != null) {\r
+        MirGlobal.producerEngine().cancelAllJobs();\r
+      }\r
+      else {\r
+        List jobs = new Vector(requestParser.getParameterList("jobid"));\r
+\r
+        MirGlobal.producerEngine().cancelJobs(jobs);\r
+      }\r
+      ServletHelper.redirect(aResponse, "Producer", "showProducerQueueStatus");\r
+    }\r
+    catch (Throwable t) {\r
+      throw new ServletModuleFailure(t);\r
+    }\r
+  }\r
+}\r
index 3d72602..f95a6ea 100755 (executable)
 <comment>complete search-form for contenentries, not sure if it works from everywhere</comment>
 <function ContentSearch (layout)>
 
-      <form method="POST" action="${config.actionRoot}">
+      <form method="GET" action="${config.actionRoot}">
         <input type="hidden" name="module" value="Content">
         <input type="hidden" name="do" value="search">
         <input type="hidden" name="selectarticleurl" value="${utility.encodeHTML(selectarticleurl)}">
index aa24a48..8e21fdc 100755 (executable)
@@ -33,7 +33,7 @@
         <td class="small">${v.name}</td>
       </if>
       <td class="small">${v.description}</td>
-      <td class="small"><a href="${config.actionRoot}?module=Producer&do=enqueue&producer=${utility.encodeURI(p.name)}&verb=${utility.encodeURI(v.name)}">${lang("producer.verb.enqueue")}</a>&nbsp;</td>
+      <td class="small"><form method="post" action="${config.actionRoot}?module=Producer&do=enqueue&producer=${utility.encodeURI(p.name)}&verb=${utility.encodeURI(v.name)}"><input class="listbutton" type="submit" value="${lang("producer.verb.enqueue")}"></form></td>
     </tr>
     <if grey=="1"><assign grey="0"><else><assign grey="1"></if>
     </list>
     </tr>
   </if>
   <tr>
-    <td colspan="5" class="table-foot" align="left">
-      <br>
-      <input class="minorbutton" type="submit" value="${lang("producer.jobqueue.canceljobs")}">
-    </td>
+    <td colspan="5" class="table-foot" align="right">
+      <br><input class="minorbutton" name="cancelsome" type="submit" value="${lang("producer.jobqueue.canceljobs")}">
+      <br><input class="minorbutton" name="cancelall" type="submit" value="${lang("producer.jobqueue.cancelalljobs")}"></td>
   </tr>
 </table>
 </form>
index 4b528a4..e42fa0a 100755 (executable)
@@ -198,3 +198,14 @@ a:hover            {
        padding-right:8px;
 //     border:1px solid #990000;  
 }
+
+.listbutton {
+       background-color:#DDDDDD; 
+       color: #990000;
+       font-size:0.9em;
+       margin: 0px;
+       padding:1px;
+       padding-left:2px;
+       padding-right:2px;
+}
+