Update of 
/var/cvs/contributions/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/security
In directory james.mmbase.org:/tmp/cvs-serv23926

Modified Files:
        AuthorityHibernateService.java 
Log Message:
CMSC-996,User and Group lists in Editors,improve search  group in sevice


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/security
See also: http://www.mmbase.org/jira/browse/CMSC-996


Index: AuthorityHibernateService.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/security/AuthorityHibernateService.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- AuthorityHibernateService.java      29 Jul 2008 06:15:03 -0000      1.6
+++ AuthorityHibernateService.java      30 Jul 2008 04:22:10 -0000      1.7
@@ -156,24 +156,35 @@
     
     @Transactional(readOnly = true)
     public List<Authority> getAssociatedAuthorities(Map conditions, 
PagingStatusHolder holder) {
+       List<Authority> authorities=new ArrayList<Authority>();
      StringBuffer strb = new StringBuffer();
      basicGetAssociatedAuthorities(conditions, strb);
-     if ("groupName".equals(holder.getSort())) {
-      strb.append(String.format(" order by %s %s","authority.name", 
holder.getDir()));
+     if ("group".equals(holder.getSort())) {
+      strb.append(String.format(" order by %s %s","authorities.name", 
holder.getDir()));
      }
-     Query q = getSession().createQuery(strb.toString());
+     Query q = getSession().createSQLQuery(strb.toString());
      q.setMaxResults(holder.getPageSize()).setFirstResult(holder.getOffset());
-
-     return q.list();
+     List l=q.list();
+     for(Object s:l){
+        Authority authority=new Authority();
+        String str=((Object[])s)[0].toString();
+        authority =findAuthorityByName(str);
+        authorities.add(authority);
+     }
+     return authorities;
     }
 
     private void basicGetAssociatedAuthorities(Map conditions, StringBuffer 
strb){
-       strb.append("select distinct authority from Person person , 
Authentication authentication "
-                                               + "left join 
authentication.authorities authority "
-                                               + "where 
person.authenticationId = authentication.id");
+       strb.append("select distinct asn.name as groupName ," +
+                       "concat(p.firstName ,p.lastName) as fullNmae from  
authorities asn" +
+                       " left outer join authentication_authorities on" +
+                       " asn.id=authentication_authorities.authority_id" +
+                       " left outer join authentication on" +
+                       " 
authentication_authorities.authentication_id=authentication.id" +
+                       " left outer join people p on 
p.authenticationId=authentication.id");
      if (null!=conditions&&conditions.containsKey("group")) {
       String group =  (String) conditions.get("group");
-      strb.append(" and upper(authority.name) like'%" + group.toUpperCase() + 
"%'");
+      strb.append(" where upper(asn.name) like'%" + group.toUpperCase() + 
"%'");
      }
      
      if (null!=conditions&&conditions.containsKey("username")) {
@@ -183,16 +194,14 @@
                        for(String m:members){
                                String[] names = m.split(" ");
                                if(names.length>2) continue;
-                               if(i==0)strb.append(" and (");
+                               
if(i==0&&null==conditions&&conditions.containsKey("group"))strb.append(" where 
(");
+                               
if(i==0&&null!=conditions&&conditions.containsKey("group"))strb.append(" or (");
                                if(i>0)strb.append("or(");
                                if (names.length == 2)
-                                       strb.append(" person.firstName like'%" 
+ names[0]
-                                                       + "%'and 
person.lastName like'%" + names[1] + "%')"
-                                                       + "or ( 
person.firstName like'%" + names[0] + " " + names[1]
-                                                       + "%'" + "or 
person.lastName like'%" + names[0] + " "
-                                                       + names[1] + "%'");
+                                       strb.append(" upper(concat(p.firstName 
,p.lastName)) like'%" + names[0].toUpperCase()
+                                                       + "%'or 
upper(concat(p.firstName ,p.lastName)) like'%" + names[1].toUpperCase() + "%'");
                                else if (names.length == 1)
-                                       strb.append("person.firstName like'%" + 
names[0]+ "%' or person.lastName like'%" + names[0] + "%'");
+                                       strb.append("upper(concat(p.firstName 
,p.lastName)) like'%" + names[0].toUpperCase()+ "%'");
                                strb.append(")");
                                i++;
                        }
@@ -203,7 +212,7 @@
     public int getAssociatedAuthoritiesNum(Map conditions, PagingStatusHolder 
holder) {
      StringBuffer strb = new StringBuffer();
      basicGetAssociatedAuthorities(conditions, strb);
-     Query q = getSession().createQuery(strb.toString());
+     Query q = getSession().createSQLQuery(strb.toString());
      return q.list().size();
     }
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to