package net.techreadiness.customer.action.controls;
import java.util.List;
import net.techreadiness.service.object.Role;
import net.techreadiness.ui.BaseAction;
import net.techreadiness.ui.action.filters.FilterSelectionHandler;
import net.techreadiness.ui.model.JSONRole;
import net.techreadiness.ui.util.Conversation;
import net.techreadiness.ui.util.ConversationAware;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import com.google.common.collect.Lists;
import com.opensymphony.xwork2.ActionContext;
@Namespace("/roleControl")
public class RoleDataControlAction extends BaseAction implements ConversationAware, ApplicationContextAware {
private static final long serialVersionUID = 1L;
private List<JSONRole> jsonRoles;
private Long roleId;
private List<Role> roles;
private Conversation conversation;
private ApplicationContext applicationContext;
@Action(value = "ajaxRoleLoad", results = { @Result(type = "json", params = { "root", "jsonRoles" }) })
public String ajaxRoleLoad() {
FilterSelectionHandler<Role> selectionHandler = getSelectionHandler();
List<Role> roles = selectionHandler.getList(ActionContext.getContext().getParameters());
jsonRoles = Lists.newArrayList();
// convert objects to JSON
for (Role role : roles) {
jsonRoles.add(new JSONRole(role.getRoleId(), role.getName(), role.getCode()));
}
return SUCCESS;
}
@Action(value = "add", results = { @Result(name = "success", location = "show", type = "redirect", params = { "ajax",
"true", "dataGridId", "%{dataGridId}" }) })
public String add() {
FilterSelectionHandler<Role> selectionHandler = getSelectionHandler();
selectionHandler.add(roleId);
return SUCCESS;
}
@Action(value = "show", results = { @Result(name = "success", location = "/roleControl/displayRoleSelection.jsp") }, params = {
"ajax", "true", "dataGridId", "%{dataGridId}" })
public String show() {
FilterSelectionHandler<Role> selectionHandler = getSelectionHandler();
roles = selectionHandler.getSelection();
return SUCCESS;
}
@Action(value = "remove", results = { @Result(name = "success", location = "show", type = "redirect", params = { "ajax",
"true", "dataGridId", "%{dataGridId}" }) })
public String remove() {
FilterSelectionHandler<Role> selectionHandler = getSelectionHandler();
selectionHandler.remove(roleId);
return SUCCESS;
}
@Action(value = "showOptions", results = { @Result(name = "success", location = "/roleControl/changeRoleSelection.jsp") })
public String showOptions() {
return SUCCESS;
}
private FilterSelectionHandler<Role> getSelectionHandler() {
String beanName = conversation.get(String.class, "roleFilterSelectionHandler");
FilterSelectionHandler<Role> selectionHandler = applicationContext.getBean(beanName, FilterSelectionHandler.class);
if (selectionHandler instanceof ConversationAware) {
((ConversationAware) selectionHandler).setConversation(conversation);
}
return selectionHandler;
}
public List<JSONRole> getJsonRoles() {
return jsonRoles;
}
public void setRoleId(Long roleId) {
this.roleId = roleId;
}
public Long getRoleId() {
return roleId;
}
public List<Role> getRoles() {
return roles;
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
@Override
public void setConversation(Conversation conversation) {
this.conversation = conversation;
}
}