package fi.otavanopisto.muikku.plugins.notifier; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import javax.ejb.Stateful; import javax.enterprise.context.RequestScoped; import javax.enterprise.inject.Any; import javax.enterprise.inject.Instance; import javax.inject.Inject; import javax.inject.Named; import fi.otavanopisto.muikku.model.users.UserEntity; import fi.otavanopisto.muikku.notifier.NotifierAction; import fi.otavanopisto.muikku.notifier.NotifierController; import fi.otavanopisto.muikku.notifier.NotifierMethod; import fi.otavanopisto.muikku.session.SessionController; import fi.otavanopisto.security.LoggedIn; @Named @Stateful @RequestScoped public class UserNotifierSettingsBackingBean { @Inject private SessionController sessionController; @Inject private NotifierController notifierController; @Inject @Any private Instance<NotifierAction> notifierActions; @Inject @Any private Instance<NotifierMethod> notifierMethods; public List<NotifierAction> listActions() { List<NotifierAction> list = new ArrayList<NotifierAction>(); for (NotifierAction action : notifierActions) list.add(action); Collections.sort(list, new Comparator<NotifierAction>() { @Override public int compare(NotifierAction o1, NotifierAction o2) { return o1.getDisplayName().compareTo(o2.getDisplayName()); } }); return list; } public List<NotifierMethod> listMethods() { List<NotifierMethod> list = new ArrayList<NotifierMethod>(); for (NotifierMethod method : notifierMethods) list.add(method); Collections.sort(list, new Comparator<NotifierMethod>() { @Override public int compare(NotifierMethod o1, NotifierMethod o2) { return o1.getDisplayName().compareTo(o2.getDisplayName()); } }); return list; } public boolean supportsMethod(NotifierAction action, NotifierMethod method) { return method.isSupported(action); } @LoggedIn public boolean isSelected(NotifierAction action, NotifierMethod method) { UserEntity user = sessionController.getLoggedUserEntity(); return notifierController.allowsMessages(user, action, method); } }