} finally {
Mapping.rollback();
}
// get the form
CreateUserForm sform = (CreateUserForm) form;
ActionErrors errors = sform.myValidate(request);
// user need cancel
if (request.getParameter("cancel") != null) {
// Forward to the next page
return (mapping.findForward("cancel"));
}
// fill data | first time
if (sform.getName() == null) {
try {
Mapping.begin();
Vector groups = Group.listAll();
Mapping.rollback();
request.setAttribute("groups", groups);
} catch (Exception e) {
Mapping.rollback();
throw new ServletException(e);
}
// Forward to the view page
return (mapping.findForward("view"));
}
// fill data | errors
if (errors.size() > 0) {
try {
Mapping.begin();
Vector groups = Group.listAll();
Mapping.rollback();
request.setAttribute("groups", groups);
request.setAttribute(ERROR_KEY, errors);
} catch (Exception e) {
Mapping.rollback();
throw new ServletException(e);
}
// Forward to the view page
return (mapping.findForward("view"));
}
// all it's ok : update user
try {
Mapping.begin();
User user = User.create(sform.getLogin());
user.setMetaData("name", sform.getName());
user.setMetaData("email", sform.getEmail());
user.setPassword(sform.getPassword());
user.resetGroups();
if (sform.getGroups() != null) {
for (int i = 0; i < sform.getGroups().length; i++) {
Group group = Group.getInstance(sform.getGroups()[i]);
user.addGroup(group);
}
}
Mapping.commit();