blob: 47b836d15c8a7ef1240721b02ae4af273065cfc1 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
function Format() {
}
Format.prototype.format = function(date) {
if (date == null || date == undefined) {
return "-";
}
return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
}
Format.prototype.parse = function(date) {
if (date == null || date == undefined) {
return "";
}
return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);
}
function cron() {
var realPath = cocoon.parameters.realPath;
var scheduler = cocoon.getComponent(Packages.org.apache.cocoon.components.cron.JobScheduler.ROLE);
var msg_param_key = Packages.org.apache.cocoon.components.cron.TestCronJob.PARAMETER_MESSAGE;
var sleep_param_key = Packages.org.apache.cocoon.components.cron.TestCronJob.PARAMETER_SLEEP;
var pipeline_param_key = Packages.org.apache.cocoon.components.cron.TestCronJob.PARAMETER_PIPELINE;
var testjobrole = "org.apache.cocoon.components.cron.CronJob/test";
var logsize = 50;
var formatter = new Format();
var jobname = "";
var message = "I'm here";
var sleep = "23";
var pipeline = "samples/hello-world/hello.xml";
var cronexpr = "";
var intervalexpr = "";
var atexpr = "";
var i = 0;
var done = false;
while (!done) {
// List scheduled jobs
var jobnames = scheduler.getJobNames();
var list = [];
for (i = 0; i < jobnames.length; i++) {
list[i] = scheduler.getJobSchedulerEntry(jobnames[i]);
}
// Load log file content - last logsize lines.
var fileName = realPath + "/WEB-INF/logs/cocoon.log";
var rdr = new java.io.BufferedReader(java.io.FileReader(fileName));
var count = 0;
var lines = new java.util.LinkedList();
var line = rdr.readLine();
while (line != null) {
count++;
lines.addLast(line);
if (count > logsize) {
lines.removeFirst();
}
line = rdr.readLine();
}
cocoon.sendPageAndWait( "cron.view", { "entries" : list,
"log" : lines,
"formatter" : formatter,
"jobname" : jobname,
"message" : message,
"sleep" : sleep,
"pipeline" : pipeline,
"cronexpr" : cronexpr,
"intervalexpr" : intervalexpr,
"atexpr" : atexpr
}
);
var action = cocoon.request.getParameter( "action" );
if (action == "remove") {
var name = cocoon.request.getParameter( "name" );
scheduler.removeJob( name );
} else if (action == "add") {
jobname = cocoon.request.getParameter("jobname");
message = cocoon.request.getParameter("message");
sleep = cocoon.request.getParameter("sleep");
pipeline = cocoon.request.getParameter("pipeline");
cronexpr = cocoon.request.getParameter("cronexpr");
intervalexpr = cocoon.request.getParameter("intervalexpr");
atexpr = cocoon.request.getParameter("atexpr");
var scheduletype = cocoon.request.getParameter("cron");
if (scheduletype != null) {
var params = new Packages.org.apache.avalon.framework.parameters.Parameters();
params.setParameter(msg_param_key, message);
var sleepms = sleep * 1000;
params.setParameter(sleep_param_key, sleepms);
params.setParameter(pipeline_param_key, pipeline);
scheduler.addJob(jobname, testjobrole, cronexpr, false, params, null);
}
scheduletype = cocoon.request.getParameter("periodic");
if (scheduletype != null) {
var params = new Packages.org.apache.avalon.framework.parameters.Parameters();
params.setParameter(msg_param_key, message);
var sleepms = sleep * 1000;
params.setParameter(sleep_param_key, sleepms);
params.setParameter(pipeline_param_key, pipeline);
scheduler.addPeriodicJob(jobname, testjobrole, intervalexpr, false, params, null);
}
scheduletype = cocoon.request.getParameter("at");
if (scheduletype != null) {
var params = new Packages.org.apache.avalon.framework.parameters.Parameters();
params.setParameter(msg_param_key, message);
var sleepms = sleep * 1000;
params.setParameter(sleep_param_key, sleepms);
params.setParameter(pipeline_param_key, pipeline);
var date = formatter.parse(atexpr);
scheduler.fireJobAt(date, jobname, testjobrole, params, null)
}
scheduletype = cocoon.request.getParameter("immediately");
if (scheduletype != null) {
var params = new Packages.org.apache.avalon.framework.parameters.Parameters();
params.setParameter(msg_param_key, message);
var sleepms = sleep * 1000;
params.setParameter(sleep_param_key, sleepms);
params.setParameter(pipeline_param_key, pipeline);
scheduler.fireJob(testjobrole, params, null)
}
} else {
// do a refresh
}
}
}