package net.techreadiness.plugin.action.task.scope.limits;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import net.techreadiness.annotation.CoreSecured;
import net.techreadiness.security.CorePermissionCodes;
import net.techreadiness.service.ScopeMapService;
import net.techreadiness.service.common.ValidationError;
import net.techreadiness.service.exception.ValidationServiceException;
import net.techreadiness.ui.BaseAction;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.Action;
@Results({
@Result(name = Action.SUCCESS, params = { "namespace", "/task/scope/limits", "actionName", "limits" }, type = "redirectAction"),
@Result(name = "invalid", type = "lastAction", params = { "fieldName", "scope", "actionName", "limits" }) })
public class SaveAction extends BaseAction {
private static final long serialVersionUID = 1L;
private Map<String, String> scope;
@Inject
private ScopeMapService scopeMapService;
@Override
@CoreSecured({ CorePermissionCodes.READY_CUSTOMER_SCOPE_MIN_SPEC })
public String execute() {
try {
scopeMapService.update(getServiceContext(), scope);
} catch (ValidationServiceException vse) {
List<ValidationError> errors = vse.getFaultInfo().getAttributeErrors();
for (ValidationError validationError : errors) {
addFieldError("scope." + validationError.getFieldName(), validationError.getOnlineMessage());
}
}
if (hasErrors()) {
return "invalid";
}
return SUCCESS;
}
public Map<String, String> getScope() {
return scope;
}
public void setScope(Map<String, String> scope) {
this.scope = scope;
}
}