Use exponential backoff when updating the password or last login time in WebDAV.
[pithos] / src / gr / ebs / gss / server / domain / UserClass.java
1 /*
2  * Copyright 2007, 2008, 2009 Electronic Business Systems Ltd.
3  *
4  * This file is part of GSS.
5  *
6  * GSS is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * GSS is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with GSS.  If not, see <http://www.gnu.org/licenses/>.
18  */
19 package gr.ebs.gss.server.domain;
20
21 import gr.ebs.gss.server.domain.dto.UserClassDTO;
22
23 import java.io.Serializable;
24 import java.util.List;
25
26 import javax.persistence.CascadeType;
27 import javax.persistence.Embedded;
28 import javax.persistence.Entity;
29 import javax.persistence.GeneratedValue;
30 import javax.persistence.Id;
31 import javax.persistence.OneToMany;
32 import javax.persistence.Version;
33
34 import org.hibernate.annotations.Cache;
35 import org.hibernate.annotations.CacheConcurrencyStrategy;
36
37 /**
38  * A group of users with common attributes.
39  *
40  * @author droutsis
41  */
42 @Entity
43 @Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
44 public class UserClass  implements Serializable{
45
46         /**
47          * The persistence ID of the object.
48          */
49         @Id
50         @GeneratedValue
51         private Long id;
52
53         /**
54          * Version field for optimistic locking.
55          */
56         @SuppressWarnings("unused")
57         @Version
58         private int version;
59
60         /**
61          * The audit information.
62          */
63         @SuppressWarnings("unused")
64         @Embedded
65         private AuditInfo auditInfo;
66
67         /**
68          * A name for this class.
69          */
70         private String name;
71
72         /**
73          * The disk quota of this user class.
74          */
75         private long quota;
76
77         /**
78          * The users belonging to this class
79          */
80         @OneToMany(cascade = CascadeType.ALL, mappedBy = "userClass")
81         private List<User> users;
82
83         /*
84          * (non-Javadoc)
85          *
86          * @see java.lang.Object#toString()
87          */
88         @Override
89         public String toString() {
90                 return name;
91         }
92
93         /**
94          * Return a new Data Transfer Object for this user class.
95          *
96          * @return a new DTO with the same contents as this object
97          */
98         public UserClassDTO getDTO() {
99                 final UserClassDTO u = new UserClassDTO();
100                 u.setId(id);
101                 u.setName(name);
102                 u.setQuota(quota);
103                 for (final User user : users)
104                         u.getUsers().add(user.getDTO());
105                 return u;
106         }
107 }