X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=security%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fusermgt%2FUser.java;h=0e1c545394a7d0031c067c8f8fcf92d9a7a7f9eb;hb=74a6cd5b71b4f668ddac54c3237511ee11e8d84e;hp=224435a14a66726682eb861122ed3d223e238983;hpb=5ea8f0e2af53562c1507e8fb5a3ede2af5c5de6c;p=utils diff --git a/security/impl/src/main/java/org/wamblee/usermgt/User.java b/security/impl/src/main/java/org/wamblee/usermgt/User.java index 224435a1..0e1c5453 100644 --- a/security/impl/src/main/java/org/wamblee/usermgt/User.java +++ b/security/impl/src/main/java/org/wamblee/usermgt/User.java @@ -12,27 +12,57 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ + */ package org.wamblee.usermgt; -import org.wamblee.persistence.AbstractPersistent; - -import org.wamblee.security.encryption.MessageDigester; - -import org.wamblee.usermgt.UserMgtException.Reason; - import java.io.Serializable; - import java.util.Set; import java.util.TreeSet; +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToMany; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; +import javax.persistence.Transient; +import javax.persistence.Version; + +import org.wamblee.security.encryption.MessageDigester; +import org.wamblee.usermgt.UserMgtException.Reason; + /** * Represents a user. The methods for managing the groups of the user have * package scope. Managing the groups of the user should be done through the * {@link org.wamblee.usermgt.UserAdministration} interface. */ -public class User extends AbstractPersistent implements Serializable, - Comparable { +@Entity +@Table(name = "SEC_USER") +@NamedQueries( { + @NamedQuery(name = User.QUERY_FIND_BY_NAME, query = "select u from User u where u.name = :" + + User.NAME_PARAM), + @NamedQuery(name = User.QUERY_FIND_BY_GROUP_NAME, query = "select user from User user join user.groups grp where grp.name = :name"), + @NamedQuery(name = User.QUERY_COUNT_USERS, query = "select count(u) from User u"), + @NamedQuery(name = User.QUERY_ALL_USERS, query = "select u from User u") }) +public class User implements Serializable, Comparable { + + public static final String QUERY_FIND_BY_NAME = "User.findByName"; + public static final String QUERY_FIND_BY_GROUP_NAME = "User.findByGroupName"; + public static final String QUERY_COUNT_USERS = "User.count"; + public static final String QUERY_ALL_USERS = "User.all"; + public static final String NAME_PARAM = "name"; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long primaryKey; + + @Version + private int version; + /** * User name. */ @@ -46,16 +76,19 @@ public class User extends AbstractPersistent implements Serializable, /** * Groups the user belongs to. */ + @ManyToMany(cascade = CascadeType.MERGE, fetch = FetchType.EAGER) private Set groups; /** * Password validator. */ + @Transient private NameValidator passwordValidator; /** * Password encoder. */ + @Transient private MessageDigester passwordEncoder; /** @@ -86,7 +119,8 @@ public class User extends AbstractPersistent implements Serializable, * */ public User(User aUser) { - super(aUser); + primaryKey = aUser.primaryKey; + version = aUser.version; name = aUser.name; password = aUser.password; groups = new TreeSet(); @@ -322,6 +356,9 @@ public class User extends AbstractPersistent implements Serializable, */ @Override public boolean equals(Object aUser) { + if (aUser == null) { + return false; + } if (!(aUser instanceof User)) { return false; } @@ -365,4 +402,8 @@ public class User extends AbstractPersistent implements Serializable, public int compareTo(Object aUser) { return name.compareTo(((User) aUser).name); } + + public Long getPrimaryKey() { + return primaryKey; + } }