View Javadoc

1   package org.musicontroller.gui.admin;
2   
3   import java.util.List;
4   
5   import org.apache.hivemind.util.PropertyUtils;
6   import org.apache.tapestry.IPage;
7   import org.apache.tapestry.IRequestCycle;
8   import org.apache.tapestry.form.IPropertySelectionModel;
9   import org.apache.tapestry.html.BasePage;
10  import org.apache.tapestry.valid.ValidationDelegate;
11  import org.musicontroller.security.IUser;
12  import org.musicontroller.security.Role;
13  import org.musicontroller.service.UserService;
14  
15  /**
16   * Page that handles applications for new accounts.
17   * @author Varienaja
18   * @version $Id: Adduser.java,v 1.1 2010/03/16 18:55:43 varienaja Exp $
19   */
20  public abstract class Adduser extends BasePage {
21  	
22  	public abstract UserService getUserService();
23  	
24  	public abstract String getFeedback();
25  	public abstract void setFeedback(String message);
26  	
27  	public abstract IUser getUser();
28  	public abstract void setUser(IUser user);
29  	
30  	public abstract String getPass1();
31  	public abstract void setPass1(String pass1);
32  	public abstract String getPass2();
33  	public abstract void setPass2(String pass2);
34  		
35  	public IPage applyForAccount(IRequestCycle cycle) {
36  		ValidationDelegate delegate = (ValidationDelegate) getBeans().getBean("addUserDelegate");
37          if (delegate.getHasErrors()) {
38          	return null;
39          }
40  		if (getUser().getId()==-1L) {
41  			return saveNewUser(cycle);
42  		} else {
43  			return editUser(cycle);
44  		}
45  	}
46  	
47  	private IPage saveNewUser(IRequestCycle cycle) {
48  		IPage resultpage = null;
49  		
50  		String loginname = getUser().getLoginname();
51  		String pass1 = getPass1();
52  		
53  		setFeedback("");
54  		
55  		getUser().setUnencryptedPassword(pass1);			
56  		try {
57  			getUserService().addUser(getUser());
58  			resultpage = cycle.getPage("admin/Usermanagement");
59  			PropertyUtils.write(resultpage, "feedback", "User with loginname '"+loginname+"' was created successfully.");
60  		} catch (Exception e) {
61  			setFeedback(e.getMessage());
62  		}
63  		return resultpage;
64  	}
65  	
66  	private IPage editUser(IRequestCycle cycle) {
67  		IPage resultpage = null;
68  				
69  		IUser originalUser = getUserService().getUserById(getUser().getId());
70  		setFeedback("");
71  		
72  		String name = getUser().getName();
73  		String loginname = getUser().getLoginname();
74  		String pass1 = getPass1();
75  		String pass2 = getPass2();
76  		//Do not change password if first password field was left blank.
77  		if (pass1 != null) {
78  			if (!pass1.equals(pass2)) {
79  				setFeedback("The entered passwords don't match.");
80  			} else {
81  				originalUser.setUnencryptedPassword(pass1);
82  			}
83  		}
84  		originalUser.setUnencryptedPassword(pass1);
85  		originalUser.setName(name);
86  		originalUser.setLoginname(loginname);
87  		originalUser.setExpiryDate(getUser().getExpiryDate());
88  		//The Palette component uses Lists, not Sets. Therefore we use Lists.
89  		originalUser.setRolesList(getUser().getRolesList()); 
90  		
91  		try {
92  			getUserService().saveUser(originalUser);
93  			resultpage = cycle.getPage("admin/Usermanagement");
94  			PropertyUtils.write(resultpage, "feedback", "User with loginname '"+loginname+"' was updated successfully.");
95  		} catch (Exception e) {
96  			setFeedback(e.getMessage());
97  		}
98  		return resultpage;
99  	}
100 	
101 	public IPropertySelectionModel getRolesmodel() {
102 		List<Role> allRoles = getUserService().listRoles();
103 		return new RoleSelectionModel(allRoles);
104 	}
105 
106 
107 
108 }
109