WebjetDatabaseTaskSource.java
package sk.iway.iwcm.system.cron;
import java.util.List;
import sk.iway.iwcm.Constants;
import sk.iway.iwcm.Logger;
import sk.iway.iwcm.database.ComplexQuery;
import sk.iway.iwcm.system.cluster.ClusterDB;
/**
* WebjetDatabaseTaskSource.java
*
* Default {@link TaskSource} provider. Loads cron tasks from
* crontab table. Discards tasks not designed to run on current cluster node.
*
*
*@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 16:07:48
*@modified $Date: 2004/08/16 06:26:11 $
*/
public class WebjetDatabaseTaskSource implements TaskSource
{
@Override
public List<CronTask> getTasks()
{
Logger.println(WebjetDatabaseTaskSource.class, "Loading cron tasks from database.");
List<CronTask> tasks = loadFromDatabase();
Logger.println(WebjetDatabaseTaskSource.class, String.format("%d tasks should run on this node", tasks.size()));
return tasks;
}
private List<CronTask> loadFromDatabase()
{
if (ClusterDB.isServerRunningInClusterMode()==false) return new ComplexQuery().setSql("SELECT * FROM crontab").list(CronDB.mapper);
return new ComplexQuery().setSql("SELECT * FROM crontab WHERE cluster_node IS NULL OR cluster_node = '' OR cluster_node = 'all' OR cluster_node = ?").
setParams(Constants.getString("clusterMyNodeName")).list(CronDB.mapper);
}
}