package org.appfuse.webapp.pages; import org.apache.tapestry5.ValidationException; import org.apache.tapestry5.alerts.AlertManager; import org.apache.tapestry5.alerts.Duration; import org.apache.tapestry5.alerts.Severity; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.annotations.Persist; import org.apache.tapestry5.annotations.InjectPage; import org.apache.tapestry5.annotations.Component; import org.apache.tapestry5.annotations.PageActivationContext; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.Messages; import org.apache.tapestry5.corelib.components.Form; import org.appfuse.model.User; import org.appfuse.service.UserManager; import org.appfuse.service.UserExistsException; import org.appfuse.webapp.util.MessageUtil; import org.slf4j.Logger; public class UserForm { @Inject private Logger log; @Inject private Messages messages; @Inject private UserManager userManager; @Inject private AlertManager alertManager; @PageActivationContext @Property private User user; @Component(id = "userForm") private Form form; private boolean cancel; private boolean delete; void onPrepare() { if (user == null) { user = new User(); } } void onValidateFromUserForm() { if (!delete && !cancel) { // manually validate required fields since we don't have access // to annotate the user object if (user.getUsername() == null || user.getUsername().trim().equals("")) { form.recordError("Username is a required field."); } if (user.getPassword() == null || user.getPassword().trim().equals("")) { form.recordError("Password is a required field."); } if (user.getEmail() == null || user.getEmail().trim().equals("")) { form.recordError("E-Mail is a required field."); } } } Object onSuccess() { if (delete) return onDelete(); if (cancel) return onCancel(); log.debug("Saving user..."); try { userManager.saveUser(user); } catch (UserExistsException uex) { alertManager.error(messages.format("user.exists")); // TODO: Figure out how to repopulate the form with entered values return null; } String message = messages.format("user.saved", user.getFullName()); alertManager.alert(Duration.TRANSIENT, Severity.INFO, message); return UserList.class; } void onSelectedFromDelete() { log.debug("Deleting user..."); delete = true; } void onSelectedFromCancel() { log.debug("Cancelling form..."); cancel = true; } Object onDelete() { String message = messages.format("user.deleted", user.getFullName()); userManager.removeUser(user.getId().toString()); alertManager.alert(Duration.TRANSIENT, Severity.INFO, message); return UserList.class; } Object onCancel() { return UserList.class; } }