Subversion Repositories general

Rev

Rev 961 | Rev 1045 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
924 dev 1
package ak.hostadmiral.core.model;
919 dev 2
 
924 dev 3
import ak.hostadmiral.util.ModelException;
4
import ak.hostadmiral.util.ModelSecurityException;
921 dev 5
 
919 dev 6
/**
7
 *
8
 * @hibernate.class table="systemusers"
9
 */
10
public class SystemUser
11
	extends GeneralModelObject
12
{
13
	/** user id in the OS */
1011 dev 14
	private Integer    uid;
15
	private String     name;
16
	private User       owner;
17
	private SystemUser origin;  // save original object state before any changes
911 dev 18
 
919 dev 19
	protected SystemUser()
20
	{
21
	}
22
 
1011 dev 23
	protected SystemUser(SystemUser origin)
24
	{
25
		super(origin);
26
		this.uid   = origin.uid;
27
		this.name  = origin.name;
28
		this.owner = origin.owner;
29
	}
30
 
31
    protected SystemUser getOrigin()
32
    {
33
        return origin;
34
    }
35
 
36
    protected void backupMe()
37
    {
38
        if(origin == null)
39
            origin = new SystemUser(this);
40
    }
41
 
911 dev 42
	/**
43
	 *
919 dev 44
	 * @hibernate.property
45
	 */
46
	public Integer getUid()
47
	{
48
		return uid;
49
	}
50
 
921 dev 51
	protected void setUid(Integer uid)
919 dev 52
	{
53
		this.uid = uid;
54
	}
55
 
921 dev 56
	public void setUid(User editor, Integer uid)
57
		throws ModelException
58
	{
59
		if(!editableBy(editor))
60
			throw new ModelSecurityException();
61
 
62
		this.uid = uid;
63
	}
64
 
919 dev 65
	/**
66
	 *
67
	 * @hibernate.property
68
	 */
69
	public String getName()
70
	{
71
		return name;
72
	}
73
 
921 dev 74
	protected void setName(String name)
919 dev 75
	{
76
		this.name = name;
77
	}
78
 
921 dev 79
	public void setName(User editor, String name)
80
		throws ModelException
81
	{
82
		if(!editableBy(editor))
83
			throw new ModelSecurityException();
84
 
85
		this.name = name;
86
	}
87
 
919 dev 88
	/**
89
	 *
911 dev 90
	 * @hibernate.many-to-one
91
	 */
92
	public User getOwner()
93
	{
94
		return owner;
95
	}
96
 
921 dev 97
	protected void setOwner(User owner)
911 dev 98
	{
99
		this.owner = owner;
100
	}
101
 
921 dev 102
	public void setOwner(User editor, User owner)
103
		throws ModelException
104
	{
105
		if(!editableBy(editor))
106
			throw new ModelSecurityException();
107
 
108
		this.owner = owner;
109
	}
110
 
919 dev 111
	public String getTypeKey()
112
	{
924 dev 113
		return ak.hostadmiral.core.CoreResources.TYPE_SYSTEM_USER;
919 dev 114
	}
115
 
116
	public String getIdentKey()
117
	{
924 dev 118
		return ak.hostadmiral.core.CoreResources.IDENT_SYSTEM_USER;
919 dev 119
	}
120
 
121
	public Object[] getIdentParams()
122
	{
123
		return new Object[] { getName(), getUid() };
124
	}
125
 
126
	public boolean viewableBy(User user)
127
	{
128
		return user.isSuperuser() || (owner == null) || user.equals(owner);
129
	}
130
 
131
	public boolean editableBy(User user)
132
	{
133
		return user.isSuperuser();
134
	}
135
 
136
	public boolean deleteableBy(User user)
137
	{
138
		return user.isSuperuser();
139
	}
921 dev 140
 
141
	protected static boolean allowedToCreate(SystemUserManager manager, User editor)
142
		throws ModelException
143
	{
144
		return editor.isSuperuser();
145
	}
949 dev 146
 
147
	protected static SystemUser createLimitedCopy(SystemUser origin)
148
	{
149
		SystemUser u = new SystemUser();
150
		u.setUid(origin.getUid());
151
		u.setName(origin.getName());
152
		return u;
153
	}
919 dev 154
}