1 16 package com.blandware.atleap.persistence.hibernate.core; 17 18 import com.blandware.atleap.persistence.core.GroupDAO; 19 import com.blandware.atleap.model.core.*; 20 import com.blandware.atleap.common.util.PartialCollection; 21 import com.blandware.atleap.common.util.QueryInfo; 22 23 import java.util.List ; 24 import java.util.ArrayList ; 25 26 36 public class GroupDAOHibernate extends BaseDAOHibernate implements GroupDAO { 37 38 41 public void createGroup(Group group) { 42 getHibernateTemplate().save(group); 43 } 44 45 48 public Group retrieveGroup(String groupname) { 49 return (Group) getHibernateTemplate().get(Group.class, groupname); 50 } 51 52 55 public void updateGroup(Group group) { 56 getHibernateTemplate().update(group); 57 } 58 59 62 public void deleteGroup(Group group) { 63 List roles = new ArrayList (group.getRoles()); 64 List users = new ArrayList (group.getUsers()); 65 66 for ( int i = 0; i < users.size(); i++ ) { 67 User user = (User) users.get(i); 68 for ( int j = 0; j < roles.size(); j++ ) { 69 Role role = (Role) roles.get(j); 70 user.removeRole(role, group); 71 } 72 } 73 74 getHibernateTemplate().delete(group); 75 76 for ( int i = 0; i < roles.size(); i++ ) { 78 Role role = (Role) roles.get(i); 79 group.removeRole(role); 80 } 81 82 for ( int i = 0; i < users.size(); i++ ) { 84 User user = (User) users.get(i); 85 group.removeUser(user); 86 } 87 88 } 89 90 93 public PartialCollection listGroups(QueryInfo queryInfo) { 94 String whereClause = new String (); 95 String orderByClause = new String (); 96 Boolean fixed = null; 97 if ( queryInfo != null ) { 98 if ( queryInfo.getQueryParameters() != null ) { 99 fixed = (Boolean ) queryInfo.getQueryParameters().get("fixed"); 100 } 101 whereClause = queryInfo.getWhereClause(); 102 orderByClause = queryInfo.getOrderByClause(); 103 if ( whereClause != null && whereClause.length() != 0 ) { 104 whereClause = " where " + whereClause; 105 } else { 106 whereClause = new String (); 107 } 108 if ( orderByClause != null && orderByClause.length() != 0 ) { 109 orderByClause = " order by " + orderByClause; 110 } else { 111 orderByClause = new String (); 112 } 113 } 114 115 List list = null; 116 Integer total = null; 117 118 if ( fixed != null ) { 119 if ( whereClause.length() != 0 ) { 120 whereClause += " and "; 121 } else { 122 whereClause += " where "; 123 } 124 whereClause += "fixed = " + (fixed.booleanValue() ? "'T'" : "'F'"); 125 } 126 String hqlPart = "from Group g left outer join g.roles as r" + whereClause; 127 if ( queryInfo != null && (queryInfo.getLimit() != null || queryInfo.getOffset() != null) ) { 128 String hqlForTotal = "select count(distinct g.name) " + hqlPart; 129 total = (Integer ) findUniqueResult(hqlForTotal); 130 if ( total == null ) { 131 total = new Integer (0); 132 } 133 } 134 if ( total == null || total.intValue() > 0 ) { 137 String hql = "select distinct g " + hqlPart + orderByClause; 138 list = executeFind(hql, queryInfo); 139 if ( total == null ) { 140 total = new Integer (list.size()); 141 } 142 } else { 143 list = new ArrayList (); 144 } 145 return new PartialCollection(list, total); 146 } 147 148 151 public boolean hasDuplicates(Group group) { 152 153 ArrayList args = new ArrayList (); 154 args.add(group.getTitle()); 155 args.add(group.getName()); 156 157 String hql = "select count(g.name) from Group g where g.title = ? and g.name != ?"; 158 159 int count = ((Integer ) findUniqueResult(hql, args.toArray())).intValue(); 160 161 return count > 0; 162 } 163 164 166 169 public Group findGroupByTitle(String title) { 170 return (Group) findUniqueResult("from Group g where g.title = ?", new Object []{title}); 171 } 172 173 } 174 | Popular Tags |