package org.twiliofaces.recipes.timer; import java.util.Calendar; import java.util.List; import javax.annotation.PostConstruct; import javax.ejb.LocalBean; import javax.ejb.Schedule; import javax.ejb.Stateless; import javax.inject.Inject; import org.giavacms.common.model.Search; import org.jboss.logging.Logger; import org.twiliofaces.recipes.model.User; import org.twiliofaces.recipes.repository.UserRepository; @Stateless @LocalBean public class UserExpirationTimer { Logger logger = Logger.getLogger(getClass()); @Inject UserRepository userRepository; @Schedule(hour = "*", minute = "25", persistent = false, info = "every 25-th minute of an hour") public void execute() { executeNow(); } @PostConstruct public void executeNow() { logger.info("Running now."); try { Search<User> su = new Search<User>(User.class); Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_YEAR, -1); su.getFrom().setRegistrationDate(cal.getTime()); List<User> expiredUsers = userRepository.getList(su, 0, 0); logger.info("Found " + expiredUsers.size() + " to expire"); for (User user : expiredUsers) { boolean result = userRepository.delete(user); logger.info("Removal of user " + user.getName() + ", " + user.getUsername() + ", " + user.getMobile() + ": " + (result ? "success" : "failure")); } } catch (Exception e) { logger.error(e.getMessage(), e); } } }