CronDB.java
package sk.iway.iwcm.system.cron;
import sk.iway.iwcm.Adminlog;
import sk.iway.iwcm.DB;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.database.ComplexQuery;
import sk.iway.iwcm.database.Mapper;
import sk.iway.iwcm.database.SimpleQuery;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
/**
* CronDB.java
*
*@Title webjet7
*@Company Interway s.r.o. (www.interway.sk)
*@Copyright Interway s.r.o. (c) 2001-2010
*@author $Author: marosurbanec $
*@version $Revision: 1.3 $
*@created Date: 9.7.2010 17:44:00
*@modified $Date: 2004/08/16 06:26:11 $
*/
public class CronDB
{
private static final String SQL_INSERT = "INSERT INTO crontab(task_name, second, minute, hour, dayofmonth,"
+ " month, dayofweek, year, task, extrainfo, businessDays, cluster_node, audit_task, run_at_startup, enable_task) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
private static final String SQL_UPDATE = "UPDATE crontab SET task_name=?, second=?, minute=?, hour=?, dayofmonth=?,"
+ " month=?, dayofweek=?, year=?, task=?, extrainfo=?, businessDays=?, cluster_node = ?, audit_task = ?, run_at_startup=?, enable_task=? WHERE id=?";
private static final String SQL_MAX_VALUE = "SELECT MAX(id) FROM crontab";
public static final Mapper<CronTask> mapper = new Mapper<CronTask>()
{
@Override
public CronTask map(ResultSet rs) throws SQLException
{
CronTask task = new CronTask();
task.setId(rs.getLong("id"));
task.setTaskName(DB.getDbString(rs, "task_name"));
task.setSeconds(DB.getDbString(rs, "second"));
task.setMinutes(DB.getDbString(rs, "minute"));
task.setHours(DB.getDbString(rs, "hour"));
task.setDaysOfMonth(DB.getDbString(rs, "dayofmonth"));
task.setMonths(DB.getDbString(rs, "month"));
task.setDaysOfWeek(DB.getDbString(rs, "dayofweek"));
task.setYears(DB.getDbString(rs, "year"));
task.setTask(DB.getDbString(rs, "task").trim());
task.setParams(DB.getDbString(rs, "extrainfo"));
//task.setBusinessDays(rs.getBoolean("businessDays")); - uz sa nepouziva
task.setBusinessDays(false);
task.setClusterNode(DB.getDbString(rs, "cluster_node"));
task.setAudit(rs.getBoolean("audit_task"));
task.setRunAtStartup(rs.getBoolean("run_at_startup"));
task.setEnableTask(rs.getBoolean("enable_task"));
return task;
}
};
public static CronTask getById(Long id)
{
try
{
return new ComplexQuery().setSql("SELECT * FROM crontab WHERE id = ?").setParams(id).singleResult(mapper);
}
catch (Exception ex)
{
}
return null;
}
public static List<CronTask> getAll()
{
return new ComplexQuery().setSql("SELECT * FROM crontab").list(mapper);
}
public static List<CronTask> getCronTasks(String filterCrontabTask)
{
if (Tools.isNotEmpty(filterCrontabTask))
return new ComplexQuery().setSql("SELECT * FROM crontab WHERE task LIKE ?").setParams("%" + filterCrontabTask + "%").list(mapper);
else
return CronDB.getAll();
}
public static List<CronTask> getCronTasksRunAtStartup()
{
return new ComplexQuery().setSql("SELECT * FROM crontab WHERE run_at_startup = ? AND enable_task = ?").setParams(Boolean.TRUE, Boolean.TRUE).list(mapper);
}
public static void delete(Long id)
{
CronTask task = getById(id);
if (task != null)
{
Adminlog.add(Adminlog.TYPE_CRON, Adminlog.getChangelogDelete(task.getId(), task), id.intValue(), -1);
}
else
{
Adminlog.add(Adminlog.TYPE_CRON, "DELETE: \nid:"+id, id.intValue(), -1);
}
new SimpleQuery().execute("DELETE FROM crontab WHERE id = ?", id);
}
public static CronTask save(CronTask task)
{
CronTask old = getById(task.getId());
if (task.getId() < 0)
new SimpleQuery().execute(SQL_INSERT, task.getTaskName(), task.getSeconds(), task.getMinutes(), task.getHours(), task.getDaysOfMonth(), task.getMonths(),
task.getDaysOfWeek(), task.getYears(), task.getTask(), task.getParams(), task.isBusinessDays(), task.getClusterNode(), task.getAudit(), task.isRunAtStartup(), task.isEnableTask());
else
new SimpleQuery().execute(SQL_UPDATE, task.getTaskName(), task.getSeconds(), task.getMinutes(), task.getHours(), task.getDaysOfMonth(), task.getMonths(),
task.getDaysOfWeek(), task.getYears(), task.getTask(), task.getParams(), task.isBusinessDays(), task.getClusterNode(), task.getAudit(), task.isRunAtStartup(), task.isEnableTask(), task.getId());
Long id = task.getId();
if (id == null || id.longValue()<1) {
id = Long.valueOf((new SimpleQuery()).forLong(SQL_MAX_VALUE));
}
CronTask saved = getById(id);
Adminlog.add(Adminlog.TYPE_CRON, Adminlog.getChangelog(saved.getId(), saved, old), saved.getId().intValue(), -1);
return saved;
}
}