package net.techreadiness.customer.action.task.org.delete; import static net.techreadiness.security.CorePermissionCodes.CORE_CUSTOMER_ORG_DELETE; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import javax.inject.Inject; import net.techreadiness.annotation.CoreSecured; import net.techreadiness.service.OrganizationService; import net.techreadiness.service.exception.AuthorizationException; import net.techreadiness.service.exception.ValidationServiceException; import net.techreadiness.service.object.Org; import net.techreadiness.ui.action.task.org.OrgTaskFlowAction; import net.techreadiness.ui.tags.datagrid.DataGridState; import net.techreadiness.ui.util.ConversationScoped; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import com.google.common.collect.Maps; import com.opensymphony.xwork2.util.Element; import com.opensymphony.xwork2.util.Key; @Results({ @Result(name = "success", type = "redirectAction", params = { "namespace", "/task/org/delete", "actionName", "delete" }), @Result(name = "invalid", type = "lastAction", params = { "actionName", "delete" }) }) public class SaveAction extends OrgTaskFlowAction { private static final long serialVersionUID = 1L; @Inject private OrganizationService orgService; @ConversationScoped private DataGridState<?> orgSearchGrid; @Key(Long.class) @Element(Boolean.class) private Map<Long, Boolean> orgs = Maps.newHashMap(); @Override @CoreSecured({ CORE_CUSTOMER_ORG_DELETE }) public String execute() { for (Entry<Long, Boolean> org : orgs.entrySet()) { if (org.getValue()) { try { orgService.delete(getServiceContext(), org.getKey()); Iterator<Org> iter = getTaskFlowData().getOrgs().iterator(); while (iter.hasNext()) { Org current = iter.next(); if (current.getOrgId().equals(org.getKey())) { iter.remove(); } } orgSearchGrid.deSelectItem(Long.toString(org.getKey())); } catch (ValidationServiceException e) { addActionError(e.getMessage()); } catch (AuthorizationException e) { addActionError(e.getMessage()); } } } if (hasErrors()) { return "invalid"; } return SUCCESS; } public Map<Long, Boolean> getOrgs() { return orgs; } public void setOrgs(Map<Long, Boolean> orgs) { this.orgs = orgs; } }