Search in sources :

Example 1 with SequenceConvertigoJob

use of com.twinsoft.convertigo.beans.scheduler.SequenceConvertigoJob in project convertigo by convertigo.

the class CreateScheduledElements method getServiceResult.

protected void getServiceResult(HttpServletRequest request, Document document) throws Exception {
    SchedulerManager schedulerManager = Engine.theApp.schedulerManager;
    SchedulerXML schedulerXML = schedulerManager.getSchedulerXML();
    boolean edit = (request.getParameter("edit") != null);
    boolean del = (request.getParameter("del") != null);
    Type type = null;
    try {
        type = Type.valueOf(request.getParameter("type"));
    } catch (Exception e) {
        throw new ServiceException("invalide \"type\" parameter");
    }
    Element rootElement = document.getDocumentElement();
    AbstractBase ab = null;
    Exception eProb = null;
    try {
        if (edit || del) {
            String exname = ServiceUtils.getRequiredParameter(request, "exname");
            if (ScheduledJob.class.isAssignableFrom(type.c)) {
                ab = schedulerXML.getScheduledJob(exname);
            } else if (AbstractSchedule.class.isAssignableFrom(type.c)) {
                ab = schedulerXML.getSchedule(exname);
            } else if (AbstractJob.class.isAssignableFrom(type.c)) {
                ab = schedulerXML.getJob(exname);
            }
            if (del) {
                schedulerXML.delAbstractBase(ab);
                ab = null;
            }
        } else {
            ab = type.c.getConstructor().newInstance();
        }
        if (ab != null) {
            String exName = ab.getName();
            String name = ServiceUtils.getRequiredParameter(request, "name");
            ab.setName(name);
            ab.setDescription(ServiceUtils.getRequiredParameter(request, "description"));
            ab.setEnable("true".equals(ServiceUtils.getRequiredParameter(request, "enabled")));
            if (ScheduledJob.class.isAssignableFrom(type.c)) {
                ScheduledJob sj = (ScheduledJob) ab;
                sj.setJob(schedulerXML.getJob(ServiceUtils.getRequiredParameter(request, "jobName")));
                sj.setSchedule(schedulerXML.getSchedule(ServiceUtils.getRequiredParameter(request, "scheduleName")));
            } else if (AbstractSchedule.class.isAssignableFrom(type.c)) {
                AbstractSchedule as = (AbstractSchedule) ab;
                if (ScheduleCron.class.isAssignableFrom(type.c)) {
                    ScheduleCron sc = (ScheduleCron) as;
                    sc.setCron(ServiceUtils.getRequiredParameter(request, "cron"));
                }
            } else if (AbstractJob.class.isAssignableFrom(type.c)) {
                AbstractJob aj = (AbstractJob) ab;
                if (JobGroupJob.class.isAssignableFrom(type.c)) {
                    JobGroupJob jgj = (JobGroupJob) aj;
                    jgj.setParallelJob(Integer.parseInt(ServiceUtils.getRequiredParameter(request, "parallelJob")));
                    jgj.delAllJobs();
                    for (String jobname : request.getParameterValues("jobsname")) {
                        AbstractJob jobToAdd = schedulerXML.getJob(jobname);
                        if (jobToAdd != null) {
                            jgj.addJob(jobToAdd);
                        }
                    }
                } else if (AbstractConvertigoJob.class.isAssignableFrom(type.c)) {
                    AbstractConvertigoJob acj = (AbstractConvertigoJob) aj;
                    acj.setContextName(ServiceUtils.getRequiredParameter(request, "context"));
                    acj.setProjectName(ServiceUtils.getRequiredParameter(request, "project"));
                    acj.setWriteOutput("true".equals(ServiceUtils.getRequiredParameter(request, "writeOutput")));
                    if (TransactionConvertigoJob.class.isAssignableFrom(type.c)) {
                        TransactionConvertigoJob tcj = (TransactionConvertigoJob) acj;
                        tcj.setConnectorName(ServiceUtils.getParameter(request, "connector", ""));
                        tcj.setTransactionName(ServiceUtils.getParameter(request, "transaction", ""));
                    } else if (SequenceConvertigoJob.class.isAssignableFrom(type.c)) {
                        SequenceConvertigoJob scj = (SequenceConvertigoJob) acj;
                        scj.setSequenceName(ServiceUtils.getParameter(request, "sequence", ""));
                    }
                    Map<String, String[]> parameters = new HashMap<String, String[]>();
                    Matcher prefix = prefixPattern.matcher("");
                    for (String pname : Collections.list(GenericUtils.<Enumeration<String>>cast(request.getParameterNames()))) {
                        prefix.reset(pname);
                        if (prefix.find()) {
                            String para_name = prefix.group(1);
                            String[] values = request.getParameterValues(pname);
                            // for (String value : values) {
                            // parameters.put(para_name, value);
                            parameters.put(para_name, values);
                        // }
                        }
                        if (pname.equals("parameters")) {
                            String value = request.getParameter(pname);
                            if (!value.equals("0")) {
                                parameters.put("__testcase", new String[] { value });
                            }
                        }
                    }
                    acj.setParameters(parameters);
                }
            }
            List<String> problems = schedulerXML.checkProblems(ab);
            if (exName.equals(name) && edit) {
                problems.remove(SchedulerXML.prob_alreadyExist);
            }
            if (problems.size() > 0) {
                for (String problem : problems) {
                    rootElement.appendChild(document.createElement("problem")).appendChild(document.createTextNode(problem));
                }
                throw (eProb = new Exception("problem!"));
            } else {
                if (!edit) {
                    schedulerXML.addAbstractBase(ab);
                }
            }
        }
        schedulerManager.save();
        schedulerManager.refreshJobs();
    } catch (Exception e) {
        schedulerManager.load();
        if (e != eProb) {
            throw e;
        }
    }
}
Also used : SchedulerXML(com.twinsoft.convertigo.beans.scheduler.SchedulerXML) Enumeration(java.util.Enumeration) Matcher(java.util.regex.Matcher) Element(org.w3c.dom.Element) ScheduledJob(com.twinsoft.convertigo.beans.scheduler.ScheduledJob) AbstractBase(com.twinsoft.convertigo.beans.scheduler.AbstractBase) SequenceConvertigoJob(com.twinsoft.convertigo.beans.scheduler.SequenceConvertigoJob) AbstractSchedule(com.twinsoft.convertigo.beans.scheduler.AbstractSchedule) ScheduleCron(com.twinsoft.convertigo.beans.scheduler.ScheduleCron) ServiceException(com.twinsoft.convertigo.engine.admin.services.ServiceException) SchedulerManager(com.twinsoft.convertigo.engine.scheduler.SchedulerManager) AbstractJob(com.twinsoft.convertigo.beans.scheduler.AbstractJob) ServiceException(com.twinsoft.convertigo.engine.admin.services.ServiceException) JobGroupJob(com.twinsoft.convertigo.beans.scheduler.JobGroupJob) AbstractConvertigoJob(com.twinsoft.convertigo.beans.scheduler.AbstractConvertigoJob) TransactionConvertigoJob(com.twinsoft.convertigo.beans.scheduler.TransactionConvertigoJob) HashMap(java.util.HashMap) Map(java.util.Map)

Example 2 with SequenceConvertigoJob

use of com.twinsoft.convertigo.beans.scheduler.SequenceConvertigoJob in project convertigo by convertigo.

the class List method getServiceResult.

protected void getServiceResult(HttpServletRequest request, Document document) throws Exception {
    Category category = null;
    try {
        category = Category.valueOf(request.getParameter("category"));
    } catch (Exception e) {
    // just ignore parse exception
    }
    Element rootElement = document.getDocumentElement();
    SchedulerManager schedulerManager = Engine.theApp.schedulerManager;
    SchedulerXML schedulerXML = schedulerManager.getSchedulerXML();
    if (category == null || category == Category.scheduledJobs) {
        for (ScheduledJob sj : schedulerXML.getScheduledJobs()) {
            Element element = prepareElement(document, Category.scheduledJobs, sj);
            AbstractJob job = sj.getJob();
            AbstractSchedule schedule = sj.getSchedule();
            element.setAttribute("jobName", job == null ? "..." : job.getName());
            element.setAttribute("scheduleName", schedule == null ? "..." : schedule.getName());
            StringBuffer info = new StringBuffer();
            if (schedulerManager.getRunningScheduledJobs().contains(sj)) {
                info.append("[ currently running ] ");
            }
            if (sj.isAllEnabled()) {
                info.append("[ ready to run ] ");
            } else {
                info.append("[ not ready to run ] ");
                if (sj.isEnable()) {
                    info.append("caused by ");
                    if (job == null) {
                        info.append("[ job is not defined ]");
                    } else if (!job.isEnable()) {
                        info.append("[ job is disabled ]");
                    }
                    if (schedule == null) {
                        info.append("[ schedule is not defined ]");
                    } else if (!schedule.isEnable()) {
                        info.append("[ schedule is disabled ]");
                    }
                }
            }
            element.setAttribute("info", info.toString());
            rootElement.appendChild(element);
        }
    }
    if (category == null || category == Category.jobs) {
        for (AbstractJob aj : schedulerXML.getJobs()) {
            Element element = prepareElement(document, Category.jobs, aj);
            if (aj instanceof AbstractConvertigoJob) {
                AbstractConvertigoJob acj = (AbstractConvertigoJob) aj;
                element.setAttribute("writeOutput", Boolean.toString(acj.isWriteOutput()));
                element.setAttribute("project", acj.getProjectName());
                element.setAttribute("context", acj.getContextName());
                element.setAttribute("info", "URL : " + acj.getConvertigoURL());
                for (Map.Entry<String, String[]> entry : acj.getParameters().entrySet()) {
                    Element parameter = document.createElement("parameter");
                    parameter.setAttribute("name", entry.getKey());
                    for (String value : entry.getValue()) {
                        if (!value.isEmpty()) {
                            Element parameter_value = document.createElement("value");
                            parameter_value.setTextContent(value);
                            parameter.appendChild(parameter_value);
                        }
                    }
                    element.appendChild(parameter);
                }
                if (acj instanceof SequenceConvertigoJob) {
                    SequenceConvertigoJob scj = (SequenceConvertigoJob) acj;
                    element.setAttribute("sequence", scj.getSequenceName());
                } else if (acj instanceof TransactionConvertigoJob) {
                    TransactionConvertigoJob tcj = (TransactionConvertigoJob) acj;
                    element.setAttribute("connector", ((TransactionConvertigoJob) acj).getConnectorName());
                    element.setAttribute("transaction", tcj.getTransactionName());
                }
            } else if (aj instanceof JobGroupJob) {
                JobGroupJob jgj = (JobGroupJob) aj;
                element.setAttribute("parallelJob", Integer.toString(jgj.getParallelJob()));
                for (AbstractJob sub : jgj.getJobGroup()) {
                    Element job = document.createElement("job_group_member");
                    job.appendChild(document.createTextNode(sub.getName()));
                    element.appendChild(job);
                }
                element.setAttribute("info", (jgj.isSerial() ? "serial " : "parallel ") + new ArrayList<AbstractJob>(jgj.getJobGroup()).toString());
            }
            rootElement.appendChild(element);
        }
    }
    if (category == null || category == Category.schedules) {
        for (AbstractSchedule as : schedulerXML.getSchedules()) {
            Element element = prepareElement(document, Category.schedules, as);
            if (as instanceof ScheduleCron) {
                ScheduleCron sc = (ScheduleCron) as;
                element.setAttribute("cron", sc.getCron());
                element.setAttribute("info", "CRON [" + sc.getCron() + "]");
            }
            if (as instanceof ScheduleRunNow) {
                element.setAttribute("info", "RunNow");
            }
            rootElement.appendChild(element);
        }
    }
}
Also used : SchedulerXML(com.twinsoft.convertigo.beans.scheduler.SchedulerXML) Element(org.w3c.dom.Element) ScheduledJob(com.twinsoft.convertigo.beans.scheduler.ScheduledJob) ArrayList(java.util.ArrayList) SequenceConvertigoJob(com.twinsoft.convertigo.beans.scheduler.SequenceConvertigoJob) AbstractSchedule(com.twinsoft.convertigo.beans.scheduler.AbstractSchedule) ScheduleCron(com.twinsoft.convertigo.beans.scheduler.ScheduleCron) SchedulerManager(com.twinsoft.convertigo.engine.scheduler.SchedulerManager) AbstractJob(com.twinsoft.convertigo.beans.scheduler.AbstractJob) ScheduleRunNow(com.twinsoft.convertigo.beans.scheduler.ScheduleRunNow) JobGroupJob(com.twinsoft.convertigo.beans.scheduler.JobGroupJob) AbstractConvertigoJob(com.twinsoft.convertigo.beans.scheduler.AbstractConvertigoJob) Map(java.util.Map) TransactionConvertigoJob(com.twinsoft.convertigo.beans.scheduler.TransactionConvertigoJob)

Aggregations

AbstractConvertigoJob (com.twinsoft.convertigo.beans.scheduler.AbstractConvertigoJob)2 AbstractJob (com.twinsoft.convertigo.beans.scheduler.AbstractJob)2 AbstractSchedule (com.twinsoft.convertigo.beans.scheduler.AbstractSchedule)2 JobGroupJob (com.twinsoft.convertigo.beans.scheduler.JobGroupJob)2 ScheduleCron (com.twinsoft.convertigo.beans.scheduler.ScheduleCron)2 ScheduledJob (com.twinsoft.convertigo.beans.scheduler.ScheduledJob)2 SchedulerXML (com.twinsoft.convertigo.beans.scheduler.SchedulerXML)2 SequenceConvertigoJob (com.twinsoft.convertigo.beans.scheduler.SequenceConvertigoJob)2 TransactionConvertigoJob (com.twinsoft.convertigo.beans.scheduler.TransactionConvertigoJob)2 SchedulerManager (com.twinsoft.convertigo.engine.scheduler.SchedulerManager)2 Map (java.util.Map)2 Element (org.w3c.dom.Element)2 AbstractBase (com.twinsoft.convertigo.beans.scheduler.AbstractBase)1 ScheduleRunNow (com.twinsoft.convertigo.beans.scheduler.ScheduleRunNow)1 ServiceException (com.twinsoft.convertigo.engine.admin.services.ServiceException)1 ArrayList (java.util.ArrayList)1 Enumeration (java.util.Enumeration)1 HashMap (java.util.HashMap)1 Matcher (java.util.regex.Matcher)1