return body;
}
@Override
protected Component createFooter(String wicketId) {
DelegatedMarkupPanel footer = new DelegatedMarkupPanel(wicketId, UserFormPopupPanel.class);
// Validate button
AjaxButton validate = new AjaxButton("save", userForm) {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
User user = UserFormPopupPanel.this.getModelObject();
try {
user.setUserName(user.getEmail());
List<User> usersWithSameName = userService.listByUserName(user.getUserName());
if (isAddMode()) {
String newPasswordValue = newPasswordField.getModelObject();
String confirmPasswordValue = confirmPasswordField.getModelObject();
if (newPasswordValue != null && confirmPasswordValue != null) {
if (confirmPasswordValue.equals(newPasswordValue)) {
if (newPasswordValue.length() >= User.MIN_PASSWORD_LENGTH &&
newPasswordValue.length() <= User.MAX_PASSWORD_LENGTH) {
if (usersWithSameName.isEmpty()) {
userService.create(user);
userService.setPasswords(user, newPasswordValue);
getSession().success(getString("administration.user.form.add.success"));
throw AdministrationUserDescriptionPage
.linkDescriptor(UserFormPopupPanel.this.getModel())
.newRestartResponseException();
} else {
LOGGER.warn("Username '" + user.getUserName() + "' already used");
form.error(getString("administration.user.form.userName.notUnique"));
}
} else {
LOGGER.warn("Password does not fit criteria.");
form.error(getString("administration.user.form.password.malformed"));
}
} else {
LOGGER.warn("Password confirmation does not match.");
form.error(getString("administration.user.form.password.wrongConfirmation"));
}
}
} else {
if (usersWithSameName.isEmpty() || (usersWithSameName.size() == 1 &&
user.getId().equals(usersWithSameName.get(0).getId()))) {
if (user.getLocale() != null) {
MavenArtifactNotifierSession.get().setLocale(user.getLocale());
}
userService.update(user);
getSession().success(getString("administration.user.form.edit.success"));
closePopup(target);
target.add(getPage());
} else {
LOGGER.warn("Username '" + user.getUserName() + "' already used");
form.error(getString("administration.user.form.userName.notUnique"));
}
}
} catch (RestartResponseException e) {
throw e;
} catch (Exception e) {
if (isAddMode()) {
LOGGER.error("Error occured while creating user", e);
Session.get().error(getString("administration.user.form.add.error"));
} else {
LOGGER.error("Error occured while updating user", e);
Session.get().error(getString("administration.user.form.edit.error"));
}
}
FeedbackUtils.refreshFeedback(target, getPage());
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
FeedbackUtils.refreshFeedback(target, getPage());
}
};
Label validateLabel;
if (isAddMode()) {
validateLabel = new Label("validateLabel", new ResourceModel("common.action.create"));
} else {
validateLabel = new Label("validateLabel", new ResourceModel("common.action.save"));
}
validate.add(validateLabel);
footer.add(validate);
// Cancel button
AbstractLink cancel = new AbstractLink("cancel") {
private static final long serialVersionUID = 1L;
};
addCancelBehavior(cancel);
footer.add(cancel);
return footer;
}