1 package org.wamblee.usermgt.jpa;
5 import java.util.TreeSet;
7 import javax.persistence.EntityManager;
8 import javax.persistence.TypedQuery;
10 import org.wamblee.usermgt.Group;
11 import org.wamblee.usermgt.GroupSet;
13 public class JpaGroupSet implements GroupSet {
15 private EntityManager em;
17 public JpaGroupSet(EntityManager aEm) {
22 public boolean add(Group aGroup) {
23 assert aGroup.getPrimaryKey() == null;
24 if (contains(aGroup)) {
32 public boolean contains(Group aGroup) {
33 return find(aGroup.getName()) != null;
37 public Group find(String aName) {
38 TypedQuery<Group> query = em.createNamedQuery(Group.QUERY_FIND_BY_NAME, Group.class);
39 query.setParameter(Group.NAME_PARAM, aName);
40 List<Group> groups = query.getResultList();
41 if (groups.size() > 1) {
42 throw new RuntimeException(
43 "More than one group with the same name '" + aName + "'");
46 if (groups.size() == 0) {
53 public void groupModified(Group aGroup) {
54 assert aGroup.getPrimaryKey() != null;
59 public Set<Group> list() {
60 List<Group> groups = em.createNamedQuery(Group.QUERY_ALL_GROUPS, Group.class).getResultList();
61 Set<Group> res = new TreeSet<Group>(groups);
66 public boolean remove(Group aGroup) {
67 Group group = find(aGroup.getName());
68 if ( group == null ) {
77 Long res = (Long)em.createNamedQuery(Group.QUERY_COUNT_GROUPS).getSingleResult();
78 return res.intValue();