package fi.otavanopisto.muikku.plugins.search; import java.util.Arrays; import java.util.List; import javax.ejb.Stateful; import javax.enterprise.context.RequestScoped; import javax.enterprise.event.Event; import javax.inject.Inject; import javax.inject.Named; import org.apache.commons.lang3.EnumUtils; import org.apache.commons.lang3.StringUtils; import org.ocpsoft.rewrite.annotation.Join; import org.ocpsoft.rewrite.annotation.Parameter; import org.ocpsoft.rewrite.annotation.RequestAction; import fi.otavanopisto.muikku.jsf.NavigationRules; import fi.otavanopisto.muikku.search.SearchReindexEvent; import fi.otavanopisto.muikku.search.SearchReindexEvent.Task; import fi.otavanopisto.muikku.security.MuikkuPermissions; import fi.otavanopisto.muikku.session.SessionController; @RequestScoped @Stateful @Named @Join (path = "/system/search/reindex", to = "/jsf/system/search-reindex.jsf") public class SystemReindexBackingBean { @Parameter private String task; @Inject private Event<SearchReindexEvent> reindexEvent; @Inject private SessionController sessionController; @RequestAction public String init() { if (sessionController.hasPermission(MuikkuPermissions.ADMIN, null)) { List<Task> tasks = null; if (StringUtils.isNotBlank(getTask())) { Task task = EnumUtils.getEnum(Task.class, getTask()); if (task == null) { return NavigationRules.INTERNAL_ERROR; } else { tasks = Arrays.asList(task); } } else { tasks = Arrays.asList(Task.values()); } reindexEvent.fire(new SearchReindexEvent(tasks)); } return "/index.jsf?faces-redirect=true"; } public String getTask() { return task; } public void setTask(String task) { this.task = task; } }