}
@PreAuthorize("isOrganizationAdminForActiveOrganization() or hasRole('ROLE_ADMIN')")
@RequestMapping(value = "/manager/createGroup", method = RequestMethod.POST)
public @ResponseBody Result createGroupAJAX(final HttpServletRequest request, @RequestParam(required = true) String name) {
Result result = new Result();
GroupForm groupForm = new GroupForm();
groupForm.setName(StringUtils.trimTrailingWhitespace(name));
boolean isValid = false;
// Validate
Errors errors = new BeanPropertyBindingResult(groupForm, "groupForm");
groupValidator.validate(groupForm, errors);
if (!errors.hasErrors()) {
isValid = true;
}
// Only attempt to create group if validation passed
if (isValid) {
Group group = groupService.createGroup(groupForm);
// Check if group was actually created or not
if (group == null || group.getId() == null || group.getId() <= 0) {
// Add generic error
errors.reject("groupValidator.generic");
result.setResult(false);
} else {
// Group created successfully so add groupModel to result
result.setResult(true);
result.setValue(groupService.createGroupModel(group));
}
}
// If result is false then loop over errors and add Internationalized objects to result
if (!result.getResult()) {
result.setValue(new ArrayList<InternationalizedObject>());
for (ObjectError error : errors.getAllErrors()) {
try {
((List)result.getValue()).add(new InternationalizedObject(error.getCode(), messageSource.getMessage(error.getCode(), null, request.getLocale())));
} catch (NoSuchMessageException ex) {
log.error(String.format("No message for error with code: %s", error.getCode()), ex);
// Put the applicationType name so that the application doesn't error out.
((List)result.getValue()).add(new InternationalizedObject(error.getCode(), error.getCode()));
}
}
}
return result;