package com.googlecode.tawus.tapestry53.pages;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.corelib.components.Zone;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.services.cron.PeriodicExecutor;
import org.apache.tapestry5.ioc.services.cron.PeriodicJob;
import com.googlecode.tawus.tapestry53.cron.ScheduleUtils;
import com.googlecode.tawus.tapestry53.cron.SimpleJob;
import com.googlecode.tawus.tapestry53.services.CounterService;
/**
* A page to demonstrate the usage of a Simple Scheduler
*/
public class SimpleJobDemo
{
@Inject
private PeriodicExecutor executor;
@Persist
@Property
private PeriodicJob periodicJob;
@Inject
@Property
private CounterService counterService;
@InjectComponent
private Zone zone;
void onActivate()
{
if(periodicJob == null)
{
start();
}
}
Object onZoneRefresh()
{
return periodicJob.isCanceled() ? null : zone.getBody();
}
void onCancel()
{
periodicJob.cancel();
}
void onRestart()
{
start();
}
private void start()
{
counterService.reset();
SimpleJob job = new SimpleJob(counterService);
periodicJob = executor.addJob(ScheduleUtils.secondlySchedule(1), "My StopWatch Schedule", job);
}
}