package net.techreadiness.plugin.action.task.snapshot.edit;
import java.util.Map;
import javax.inject.Inject;
import net.techreadiness.annotation.CoreSecured;
import net.techreadiness.plugin.action.task.snapshot.SnapshotTaskFlowData;
import net.techreadiness.plugin.action.task.snapshot.SnapshotTaskFlowDefinition;
import net.techreadiness.plugin.service.object.SnapshotWindow;
import net.techreadiness.security.CorePermissionCodes;
import net.techreadiness.service.ConfigService;
import net.techreadiness.service.common.ViewDef;
import net.techreadiness.service.common.ViewDef.ViewDefTypeCode;
import net.techreadiness.service.object.Org;
import net.techreadiness.ui.tags.taskview.TaskViewState;
import net.techreadiness.ui.task.BaseTaskFlowAction;
import net.techreadiness.ui.util.ConversationScoped;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import com.google.common.collect.Maps;
import com.opensymphony.xwork2.Preparable;
import com.opensymphony.xwork2.util.Element;
import com.opensymphony.xwork2.util.Key;
public class EditAction extends BaseTaskFlowAction<SnapshotTaskFlowData, SnapshotTaskFlowDefinition> implements Preparable {
private static final long serialVersionUID = 1L;
private ViewDef dataGridViewDef;
private ViewDef detailsViewDef;
@Inject
private SnapshotWindowsByIdItemProvider snapshotWindowsByIdItemProvider;
@Inject
private ConfigService configService;
@Key(Long.class)
@Element(Org.class)
private Map<Long, SnapshotWindow> snapshots;
@ConversationScoped
private TaskViewState<SnapshotWindow> editSnapshotWindowDataGrid;
@Override
@CoreSecured({ CorePermissionCodes.READY_CUSTOMER_SNAPSHOT_EDIT })
@Action(results = { @Result(name = "success", location = "/net/techreadiness/plugin/action/snapshot/edit.jsp"),
@Result(name = "nosnapshots", location = "/net/techreadiness/plugin/action/snapshot/nosnapshots.jsp") })
public String execute() {
if (getTaskFlowData().getSnapshots() == null || getTaskFlowData().getSnapshots().isEmpty()) {
return "nosnapshots";
}
setDataGridViewDef(configService.getViewDefinition(getServiceContext(), ViewDefTypeCode.SNAPSHOT_DATAGRID));
setDetailsViewDef(configService.getViewDefinition(getServiceContext(), ViewDefTypeCode.SNAPSHOT));
snapshotWindowsByIdItemProvider.setSnapshotWindows(getTaskFlowData().getSnapshots());
return SUCCESS;
}
public ViewDef getDataGridViewDef() {
return dataGridViewDef;
}
public void setDataGridViewDef(ViewDef dataGridViewDef) {
this.dataGridViewDef = dataGridViewDef;
}
public ViewDef getDetailsViewDef() {
return detailsViewDef;
}
public void setDetailsViewDef(ViewDef detailsViewDef) {
this.detailsViewDef = detailsViewDef;
}
public TaskViewState<SnapshotWindow> getEditSnapshotWindowDataGrid() {
return editSnapshotWindowDataGrid;
}
public void setEditSnapshotWindowDataGrid(TaskViewState<SnapshotWindow> editSnapshotWindowDataGrid) {
this.editSnapshotWindowDataGrid = editSnapshotWindowDataGrid;
}
public Map<Long, SnapshotWindow> getSnapshots() {
return snapshots;
}
public void setSnapshots(Map<Long, SnapshotWindow> snapshots) {
this.snapshots = snapshots;
}
@Override
public void prepare() throws Exception {
snapshots = Maps.newHashMap();
}
public SnapshotWindowsByIdItemProvider getSnapshotWindowsByIdItemProvider() {
return snapshotWindowsByIdItemProvider;
}
public void setSnapshotWindowsByIdItemProvider(SnapshotWindowsByIdItemProvider snapshotWindowsByIdItemProvider) {
this.snapshotWindowsByIdItemProvider = snapshotWindowsByIdItemProvider;
}
}