X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fservlet%2FServletModuleProducer.java;h=6d4be8e39ba046d037f3da50f736be488955fa2c;hb=77b8f79d3873d20aa10bb775e03047cd6a9de0bf;hp=f0924e0151df3123f34f34e7ba9f4d04b67b235a;hpb=8563841098b6ab3e6233f61519e58b41dcc30266;p=mir.git diff --git a/source/mircoders/servlet/ServletModuleProducer.java b/source/mircoders/servlet/ServletModuleProducer.java index f0924e01..6d4be8e3 100755 --- a/source/mircoders/servlet/ServletModuleProducer.java +++ b/source/mircoders/servlet/ServletModuleProducer.java @@ -31,95 +31,167 @@ 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 + } }