package kornell.gui.client.personnel; import com.google.gwt.core.client.Scheduler; import com.google.gwt.user.client.Timer; import com.google.web.bindery.event.shared.EventBus; import kornell.api.client.Callback; import kornell.api.client.KornellSession; import kornell.core.to.UserInfoTO; import kornell.gui.client.event.ActomEnteredEvent; import kornell.gui.client.event.ActomEnteredEventHandler; import kornell.gui.client.event.LoginEvent; import kornell.gui.client.event.LoginEventHandler; public class Stalker implements ActomEnteredEventHandler, LoginEventHandler { private KornellSession session; private Timer seuInacioTimer; public Stalker(EventBus bus, KornellSession session) { this.session = session; scheduleAttendanceSheetSigning(); seuInacioTimer = new Timer() { public void run() { scheduleAttendanceSheetSigning(); } }; // Schedule the timer to run daily seuInacioTimer.scheduleRepeating(24 * 60 * 60 * 1000); bus.addHandler(ActomEnteredEvent.TYPE, this); bus.addHandler(LoginEvent.TYPE, this); } private void scheduleAttendanceSheetSigning(){ Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() { @Override public void execute() { signAttendanceSheet(); } }); } private void signAttendanceSheet() { if (session.isAnonymous()) return; String institutionUUID = session.getInstitution().getUUID(); String personUUID = session.getCurrentUser().getPerson().getUUID(); session.events().attendanceSheetSigned(institutionUUID, personUUID).fire(new Callback<Void>() { @Override public void ok(Void to) { /* nothing to do */ } }); } @Override public void onActomEntered(ActomEnteredEvent event) { session.events().actomEntered(event.getEnrollmentUUID(), event.getActomKey()).fire(); } @Override public void onLogin(UserInfoTO user) { scheduleAttendanceSheetSigning(); } }