package org.appfuse.webapp.pages.admin;
import org.apache.tapestry5.PersistenceConstants;
import org.apache.tapestry5.annotations.InjectPage;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.beaneditor.BeanModel;
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.BeanModelSource;
import org.apache.tapestry5.services.javascript.JavaScriptSupport;
import org.appfuse.dao.SearchException;
import org.appfuse.model.User;
import org.appfuse.service.UserManager;
import org.appfuse.webapp.pages.Home;
import org.appfuse.webapp.pages.UserEdit;
import org.slf4j.Logger;
import java.util.List;
/**
* @author Serge Eby
* @version $Id: UserList.java 5 2008-08-30 09:59:21Z serge.eby $
*/
public class UserList {
@Inject
private Logger logger;
@Inject
private Messages messages;
@Inject
private UserManager userManager;
@Inject
private BeanModelSource beanModelSource;
@Inject
private JavaScriptSupport jsSupport;
@InjectPage
private UserEdit userEdit;
@Property
private User currentUser;
@Property
@Persist(PersistenceConstants.FLASH)
private String q;
private String infoMessage;
@Property
private String errorMessage;
@Property
private List<User> users;
public BeanModel<User> getModel() {
final BeanModel<User> model = beanModelSource.createDisplayModel(User.class, messages);
model.include("username", "email", "enabled");
model.add("fullname");
// Set labels
model.get("username").label(messages.get("user.username"));
model.get("email").label(messages.get("user.email"));
model.get("enabled").label(messages.get("user.enabled"));
model.get("fullname").label(messages.get("activeUsers.fullName"));
return model;
}
void setupRender() {
try {
users = userManager.search(q);
} catch (SearchException se) {
errorMessage = se.getMessage();
users = userManager.getUsers();
}
}
Object onAdd() {
return userEdit.initialize(null, "list", messages.get("userProfile.admin.message"));
}
Object onDone() {
return Home.class;
}
Object onActionFromEdit(User user) {
logger.debug("fetching user with id: " + user.getId());
user.setConfirmPassword(user.getPassword());
return userEdit.initialize(user, "list", messages.get("userProfile.admin.message"));
}
Object onSubmit() {
return this;
}
}