package com.packtpub.as7development.chapter4.ejb;
import java.util.ArrayList;
import java.util.logging.Logger;
import javax.annotation.Resource;
import javax.ejb.Schedule;
import javax.ejb.Stateless;
import javax.ejb.Timer;
import javax.ejb.TimerService;
import javax.inject.Inject;
import com.packtpub.as7development.chapter4.model.Seat;
import com.packtpub.as7development.chapter4.service.PollerBean;
@Stateless
public class AutomaticSellerBean
{
@Inject TheatreBox theatreBox;
@Inject PollerBean pollerBean;
private final static Logger logger = Logger.getLogger(AutomaticSellerBean.class.getName());
@Resource
private TimerService timerService;
public void cancelTimers() {
for (Timer timer : timerService.getTimers()) {
timer.cancel();
}
}
@Schedule(dayOfWeek = "*", hour = "*", minute = "*", second = "*/60",year="*", persistent = false)
public void backgroundProcessing()
{
int seatId = findSeat();
if (seatId == -1) {
pollerBean.setPollingActive(false);
cancelTimers();
logger.info("Scheduler gone!");
return ; // No more seats
}
theatreBox.buyTicket(seatId);
logger.info("Somebody just booked seat number "+seatId);
}
public int findSeat() {
ArrayList<Seat> list = theatreBox.getSeatList();
for (Seat s: list) {
if (!s.isBooked()) {
return s.getId()-1;
}
}
return -1;
}
}