organising imports
[mir.git] / source / mircoders / servlet / ServletModuleProducer.java
index f0924e0..6d4be8e 100755 (executable)
 
 package mircoders.servlet;
 
-import java.io.*;
-import java.sql.*;
-import java.util.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
+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 mir.generator.Generator;
+import mir.log.LoggerWrapper;
+import mir.producer.ProducerFactory;
+import mir.servlet.ServletModule;
+import mir.servlet.ServletModuleFailure;
+import mir.util.NullWriter;
+import mir.util.ResourceBundleGeneratorFunction;
+import mircoders.global.MirGlobal;
+
+import org.apache.struts.util.MessageResources;
 
-import freemarker.template.*;
-
-import mir.servlet.*;
-import mir.misc.*;
-import mir.producer.*;
+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, new PrintWriter(new NullWriter()));
+    }
+    catch (Throwable t) {
+      throw new ServletModuleFailure(t);
+    }
+  }
+
+  private ServletModuleProducer() {
+    super();
+    logger = new LoggerWrapper("ServletModule.Producer");
+    defaultAction="showProducerQueueStatus";
+  }
+
+  public void showMessage(PrintWriter aWriter, Locale aLocale, String aMessage, String anArgument1, String anArgument2) {
+    Map responseData;
+    try {
+      responseData = new HashMap();
+      responseData.put("message", aMessage);
+      responseData.put("argument1", anArgument1);
+      responseData.put("argument2", anArgument2);
+      generateResponse("infomessage.template", aWriter, responseData, aLocale);
+    }
+    catch (Throwable t) {
+      throw new ServletModuleFailure(t);
+    }
+  }
 
-import mircoders.producer.*;
-import mircoders.entity.*;
-import mircoders.global.*;
 
-/* Verteilerservlet, dass je nach Parameter task die Klasse Producer"TASK"
- * ueber die Methode handle(); aufruft
- *
- * @author RK
- */
+  public void showProducerQueueStatus(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+    Object comments;
+    Map generationData;
+    Generator generator;
+    int totalNrComments;
+    List producersData;
 
-public class ServletModuleProducer extends ServletModule
-{
+    try {
+      generator = MirGlobal.localizer().generators().makeAdminGeneratorLibrary().makeGenerator("producerqueue.template");
 
-       private static ServletModuleProducer instance = new ServletModuleProducer();
-       public static ServletModule getInstance() { return instance; }
+      generationData = ServletHelper.makeGenerationData(getLocale(aRequest));
+      generationData.put( "thisurl", "module=Producer&do=showProducerQueueStatus");
 
-       private ServletModuleProducer() {
-               theLog = Logfile.getInstance(MirConfig.getProp("Home") + MirConfig.getProp("ServletModule.Producer.Logfile"));
-               defaultAction="produce";
-       }
+      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());
 
-       public void produce(HttpServletRequest req, HttpServletResponse res)
-               throws ServletModuleException
-       {
-               try {
-                       PrintWriter out = res.getWriter();
+          producerVerbs.add(verbData);
+        }
 
+        Map producerData = new HashMap();
+        producerData.put("name", factory.getName());
+        producerData.put("verbs", producerVerbs);
 
-                       if (req.getParameter("producer")!=null) {
-      // ML: new producer system:
+        producersData.add(producerData);
+      }
+      generationData.put("producers", producersData);
 
-                       String producerParam = req.getParameter("producer");
-                       String verbParam = req.getParameter("verb");
+      generationData.put("queue", MirGlobal.producerEngine().getQueueStatus());
+      generator.generate(aResponse.getWriter(), generationData, new PrintWriter(new NullWriter()));
+    }
+    catch (Throwable t) {
+      throw new ServletModuleFailure(t);
+    }
+  }
 
-                       MirGlobal.producerEngine().addJob(producerParam, verbParam);
-                       MirGlobal.producerEngine().printQueueStatus(out);
+  public void produce(HttpServletRequest req, HttpServletResponse res) {
+    /*
+     * This method will only be called by external scripts (e.g. from cron jobs).
+     * The output therefore is very simple.
+     *
+     */
 
-//        ProducerFactory factory = (ProducerFactory) MirGlobal.localizer().producers().factories().get(producerParam);
-//        mir.producer.Producer producer = factory.makeProducer(verbParam);
+    try {
+      PrintWriter out = res.getWriter();
 
-//        producer.produce(out);
+      if (req.getParameter("producer")!=null) {
+        String producerParam = req.getParameter("producer");
+        String verbParam = req.getParameter("verb");
 
+        MirGlobal.producerEngine().addJob(producerParam, verbParam);
+        out.println("job added");
       }
-      else
-      {
-      // ML: old producer system:
-
-                       String taskParam = req.getParameter("task");
-                       String forcedParam = req.getParameter("forced");
-        String syncParam = req.getParameter("sync");
-                       theLog.printInfo("Starting Task: " + taskParam);
-                       if (taskParam == null) {
-                               throw new ServletModuleException("Kein Task angegeben!");
-                       } else {
-          Class producerModule = Class.forName("mircoders.producer.Producer" + taskParam);
-          mircoders.producer.Producer producer = (mircoders.producer.Producer) producerModule.newInstance();
-          HttpSession session=req.getSession(false);
-                               EntityUsers user = (EntityUsers)session.getAttribute("login.uid");
-
-          if (forcedParam!=null && !forcedParam.equals("")) {
-            if (syncParam!=null && !syncParam.equals("")) {
-              producer.handle(out, user, true, true);
-            } else {
-              producer.handle(out, user, true,false);
-            }
-                               } else {
-                                       producer.handle(out, user, false,false);
-          }
-
-                       }
-               }
-               }
-               catch (Exception e) {
-      throw new ServletModuleException(e.toString());
     }
-       }
+    catch (Throwable t) {
+      throw new ServletModuleFailure(t);
+    }
+  }
+
+  public void produceAllNew(HttpServletRequest aRequest, HttpServletResponse aResponse) {
+    try {
+      MirGlobal.localizer().producers().produceAllNew();
+      showMessage(aResponse.getWriter(), getLocale(aRequest), "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);
+
+        showProducerQueueStatus(aRequest, aResponse);
+      }
+    }
+    catch (Throwable t) {
+      throw new ServletModuleFailure(t);
+    }
+  }
 
+  public void cancelAbortJob(HttpServletRequest aRequest, HttpServletResponse aResponse)  {
+    // ML: to be coded
+  }
 }