(no commit message)
authorErik Brakkee <erik@brakkee.org>
Mon, 26 Apr 2010 20:16:43 +0000 (20:16 +0000)
committerErik Brakkee <erik@brakkee.org>
Mon, 26 Apr 2010 20:16:43 +0000 (20:16 +0000)
security/impl/src/main/java/org/wamblee/usermgt/Group.java
security/impl/src/main/java/org/wamblee/usermgt/User.java

index 13075aa2efe0645333a8042a32444ac4e2d8691b..275cc0817493feeed6fe8b4418ff7a6d782083cf 100644 (file)
  * 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 java.io.Serializable;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+import javax.persistence.UniqueConstraint;
+import javax.persistence.Version;
+
+import org.wamblee.security.AbstractPersistent;
+
 /**
  * Represents a group.
  * 
  * @author Erik Brakkee
  */
-public class Group extends AbstractPersistent implements Serializable,
-    Comparable {
+@Entity
+@Table(name = "SEC_GROUP")
+@NamedQueries( {
+    @NamedQuery(name = Group.QUERY_FIND_BY_NAME, query = "select g from Group g where g.name = :" +
+        Group.NAME_PARAM),
+    @NamedQuery(name = Group.QUERY_COUNT_GROUPS, query = "select count(g) from Group g"),
+    @NamedQuery(name = Group.QUERY_ALL_GROUPS, query = "select g from Group g") })
+public class Group implements Serializable, Comparable {
+
+    public static final String QUERY_FIND_BY_NAME = "Group.findByName";
+    public static final String QUERY_COUNT_GROUPS = "Group.count";
+    public static final String QUERY_ALL_GROUPS = "Group.all";
+    public static final String NAME_PARAM = "name";
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private Long primaryKey;
+
+    @Version
+    private int version;
+
     /**
      * Group name.
      */
+    @Column(nullable = false, unique = true)
     private String name;
 
     /**
@@ -46,7 +77,6 @@ public class Group extends AbstractPersistent implements Serializable,
      * 
      */
     public Group(Group aGroup) {
-        super(aGroup);
         name = aGroup.name;
     }
 
@@ -109,6 +139,10 @@ public class Group extends AbstractPersistent implements Serializable,
     public int compareTo(Object aGroup) {
         return name.compareTo(((Group) aGroup).name);
     }
+    
+    public Long getPrimaryKey() {
+        return primaryKey;
+    }
 
     /*
      * (non-Javadoc)
index 224435a14a66726682eb861122ed3d223e238983..8bccfabad6ca0435a30e1ae5b40ba096d53c1b8c 100644 (file)
  * 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.AbstractPersistent;
 import org.wamblee.security.encryption.MessageDigester;
 
 import org.wamblee.usermgt.UserMgtException.Reason;
@@ -26,13 +25,32 @@ import java.io.Serializable;
 import java.util.Set;
 import java.util.TreeSet;
 
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.ManyToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.persistence.Version;
+
 /**
  * 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,
+@Entity
+@Table(name = "SEC_USER")
+public class User implements Serializable,
     Comparable {
+    
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private Long primaryKey;
+
+    @Version
+    private int version;
+    
     /**
      * User name.
      */
@@ -46,16 +64,19 @@ public class User extends AbstractPersistent implements Serializable,
     /**
      * Groups the user belongs to.
      */
+    @ManyToMany
     private Set<Group> groups;
 
     /**
      * Password validator.
      */
+    @Transient
     private NameValidator passwordValidator;
 
     /**
      * Password encoder.
      */
+    @Transient
     private MessageDigester passwordEncoder;
 
     /**
@@ -86,7 +107,6 @@ public class User extends AbstractPersistent implements Serializable,
      * 
      */
     public User(User aUser) {
-        super(aUser);
         name = aUser.name;
         password = aUser.password;
         groups = new TreeSet<Group>();
@@ -365,4 +385,8 @@ public class User extends AbstractPersistent implements Serializable,
     public int compareTo(Object aUser) {
         return name.compareTo(((User) aUser).name);
     }
+    
+    public Long getPrimaryKey() {
+        return primaryKey;
+    }
 }