package net.techreadiness.ui.action.task.org.dataentry; import java.util.HashSet; import java.util.List; import net.techreadiness.navigation.taskflow.org.OrgTaskFlowData; import net.techreadiness.navigation.taskflow.org.dataentry.DataEntryTaskFlowDefinition; import net.techreadiness.service.exception.ServiceException; import net.techreadiness.service.object.Org; import net.techreadiness.ui.tags.datagrid.DataGridState; import net.techreadiness.ui.task.BaseTaskFlowAction; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; public class DataEntryTaskFlowAction extends BaseTaskFlowAction<OrgTaskFlowData, DataEntryTaskFlowDefinition> { private static final long serialVersionUID = 1L; private static String DATA_ENTRY_SEARCH_GRID = "dataEntrySearchGrid"; @Action(value = "dataEntryTaskFlowBegin", results = { @Result(name = "success", type = "redirectAction", params = { "actionName", "${taskFlowData.taskFlowState.currentTask.action}", "namespace", "${taskFlowData.taskFlowState.currentTask.namespace}" }) }) public String beginTaskFlow() throws ServiceException { startNewTaskFlow(); DataGridState<Org> dataGridState = conversation.get(DataGridState.class, DATA_ENTRY_SEARCH_GRID); getTaskFlowData().setOrgs(new HashSet<>(dataGridState.getSelectedItems())); return SUCCESS; } @Override public String endTaskFlow() throws ServiceException { if (getTaskFlowData().isStandardInvocation()) { DataGridState<Org> dataGridState = conversation.get(DataGridState.class, DATA_ENTRY_SEARCH_GRID); List<Org> selectedOrgs = dataGridState.getSelectedItems(); for (Org org : selectedOrgs) { boolean found = false; for (Org orgMap : getTaskFlowData().getOrgs()) { if (orgMap.getOrgId().equals(org.getOrgId())) { found = true; break; } } if (!found) { dataGridState.deSelectItem(org.getOrgId().toString()); } } for (Org orgMap : getTaskFlowData().getOrgs()) { if (orgMap.getOrgId() != null) { dataGridState.selectItem(orgMap.getOrgId().toString(), orgMap); } } } return SUCCESS; } @Action(value = "altDataEntryTaskFlowBegin", results = { @Result(name = "success", type = "redirectAction", params = { "actionName", "${taskFlowData.taskFlowState.currentTask.action}", "namespace", "${taskFlowData.taskFlowState.currentTask.namespace}" }) }) public String altBeginTaskFlow() throws ServiceException { getTaskFlowData().setStandardInvocation(false); return SUCCESS; } }