package net.techreadiness.customer.action.task.org.contact;
import static net.techreadiness.security.CorePermissionCodes.CORE_CUSTOMER_ORG_CONTACT_UPDATE;
import java.util.Map;
import javax.inject.Inject;
import net.techreadiness.annotation.CoreSecured;
import net.techreadiness.customer.datagrid.OrgContactTaskItemProvider;
import net.techreadiness.service.ConfigService;
import net.techreadiness.service.common.ViewDef;
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 net.techreadiness.util.MapUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import com.google.common.collect.Iterators;
import com.opensymphony.xwork2.Preparable;
import com.opensymphony.xwork2.util.Element;
public class EditAction extends OrgTaskFlowAction implements Preparable {
private static final long serialVersionUID = 1L;
private ViewDef viewDef;
private Long orgSelection = Long.valueOf(0);
@Inject
private ConfigService configService;
@Inject
private OrgContactTaskItemProvider orgContactTaskItemProvider;
@Element(String.class)
private Map<String, Map<String, String>> contacts;
@ConversationScoped(value = "contactsDataGrid")
DataGridState<?> contactsDataGrid;
@Override
public void prepare() throws Exception {
contacts = MapUtils.makeComputingMap();
}
@Override
@CoreSecured({ CORE_CUSTOMER_ORG_CONTACT_UPDATE })
@Action(results = { @Result(name = "success", location = "/task/org/contacts.jsp"),
@Result(name = "noorg", location = "/task/org/noorg.jsp") })
public String execute() {
if (getTaskFlowData().getOrgs() == null || getTaskFlowData().getOrgs().isEmpty()) {
return "noorg";
}
setViewDef(configService.getViewDefinition(getServiceContext(), ViewDef.ViewDefTypeCode.CONTACT_DATAGRID));
orgContactTaskItemProvider.setScope(getServiceContext().getScope());
if (orgSelection < 0 || orgSelection >= getTaskFlowData().getOrgs().size()) {
orgSelection = Long.valueOf(0);
}
Org selectedOrg = Iterators.get(getTaskFlowData().getOrgs().iterator(), orgSelection.intValue(), null);
orgContactTaskItemProvider.setOrg(selectedOrg);
return SUCCESS;
}
public void setViewDef(ViewDef viewDef) {
this.viewDef = viewDef;
}
public ViewDef getViewDef() {
return viewDef;
}
public OrgContactTaskItemProvider getOrgContactTaskItemProvider() {
return orgContactTaskItemProvider;
}
public DataGridState<?> getContactsDataGrid() {
return contactsDataGrid;
}
public void setOrgSelection(Long orgSelection) {
this.orgSelection = orgSelection;
}
public Long getOrgSelection() {
return orgSelection;
}
public void setContacts(Map<String, Map<String, String>> contacts) {
this.contacts = contacts;
}
public Map<String, Map<String, String>> getContacts() {
return contacts;
}
}