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

Modified Files:
        PersonHibernateService.java PersonService.java 
Log Message:
CMSC-996,User and Group lists in Editors,add search relation people option  
record fuction


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


Index: PersonHibernateService.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonHibernateService.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- PersonHibernateService.java 24 Jul 2008 06:30:14 -0000      1.12
+++ PersonHibernateService.java 27 Jul 2008 07:41:23 -0000      1.13
@@ -12,11 +12,16 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.commons.lang.StringUtils;
 import org.hibernate.Criteria;
+import org.hibernate.Query;
+import org.hibernate.Session;
 import org.hibernate.criterion.Example;
 import org.hibernate.criterion.MatchMode;
+import org.hibernate.criterion.Order;
+import org.hibernate.criterion.Property;
 import org.hibernate.criterion.Restrictions;
 import org.hibernate.criterion.MatchMode;
 import org.springframework.beans.factory.annotation.Required;
@@ -29,6 +34,7 @@
 import com.finalist.cmsc.services.community.preferences.PreferenceService;
 import com.finalist.cmsc.services.community.security.Authentication;
 import com.finalist.cmsc.services.community.security.AuthenticationService;
+import com.finalist.cmsc.paging.*;
 
 /**
  * @author Remco Bos
@@ -109,12 +115,32 @@
       getSession().saveOrUpdate(person);
       getSession().flush();
    }
-   
+   @Transactional
+   public List<Person> getAllPeople(PagingStatusHolder holder) {
+          return getAssociatedPersons(null,holder);
+   }
     @Transactional
    public List<Person> getAllPersons() {
-      return getSession().createCriteria(Person.class).list();
+               Criteria criteria = getSession().createCriteria(Person.class);
+       return criteria.list();
+   }
+    @Transactional(readOnly = true)
+    public int countAllPersons(){
+       Criteria criteria = getSession().createCriteria(Person.class);
+       return criteria.list().size();
+    }
+    private void addOrder(PagingStatusHolder holder, String propertyName,
+                       Criteria criteria) {
+               /*if (propertyName.equals(holder.getSort())) {*/
+                       String dir = holder.getDir();
+                       if ("asc".equals(dir)) {
+                               
criteria.addOrder(Property.forName(propertyName).asc());
+                       }
+                       if ("desc".equals(dir)) {
+                               
criteria.addOrder(Property.forName(propertyName).desc());
    }
 
+       }
    /** [EMAIL PROTECTED] */
    @Transactional
    public boolean deletePersonByAuthenticationId(Long authenticationId) {
@@ -136,7 +162,7 @@
    @SuppressWarnings("unchecked")
    private Person findPersonByCriteria(Criteria criteria) {
       List<Person> personList = criteria.list();
-      return personList.size() == 1 ? personList.get(0) : null;
+      return personList.size() > 0 ? personList.get(0) : null;
    }
 
    @Required
@@ -236,4 +262,78 @@
                o.setPreferences(preferences);
                return o;
        }
+          @Transactional(readOnly = true)
+          public List<Person> getAssociatedPersons(Map 
conditions,PagingStatusHolder holder) {
+                  // 2008.7.10ƴдsqlÓï¾äHQL sentences
+                  StringBuffer strb=new StringBuffer();
+               
+                  basicGetAssociatedPersons(conditions,strb);
+               
+               if("fullname".equals(holder.getSort())){
+                       strb.append(String.format(" order by %s 
%s","person.firstName "+holder.getDir(),",person.lastName "+holder.getDir()));
+               }else if("username".equals(holder.getSort())){
+                       strb.append(String.format(" order by %s %s", 
"authentication.userId",holder.getDir()));
+               }else if("email".equals(holder.getSort())){
+                       strb.append(String.format(" order by %s 
%s","person.email",holder.getDir()));
+               }
+
+               Query q = getSession().createQuery(strb.toString());
+
+               q.setMaxResults(holder.getPageSize())
+                .setFirstResult(holder.getOffset());
+
+               return q.list();
+       }
+   private void basicGetAssociatedPersons(Map conditions, StringBuffer strb){
+          strb.append("select distinct person from Person person , 
Authentication authentication "
+                                               + "left join 
authentication.authorities authority "
+                                               + "where 
person.authenticationId = authentication.id");
+               if (conditions!=null&&conditions.containsKey("fullname")) {
+                       String[] names = 
conditions.get("fullname").toString().split(" ");
+                       if (names.length == 2)
+                               strb.append(" and (person.firstName='" + 
names[0]
+                                               + "'and person.lastName='" + 
names[1] + "')"
+                                               + "or person.firstName='" + 
names[0] + " " + names[1]
+                                               + "'" + "or person.lastName='" 
+ names[0] + " "
+                                               + names[1] + "'");
+                       else if (names.length == 1)
+                               strb.append(" and person.firstName='" + names[0]
+                                               + "' or person.lastName='" + 
names[0] + "'");
+               }
+               if (conditions!=null&&conditions.containsKey("username")) {
+                       String username = conditions.get("username").toString();
+                       strb.append(" and upper(authentication.userId) like '%"
+                                       + username.toUpperCase() + "%'");
+               }
+               if (conditions!=null&&conditions.containsKey("email")) {
+                       String email = conditions.get("email").toString();
+                       strb.append(" and upper(person.email) like '%"
+                                       + email.toUpperCase() + "%'");
+               }
+               if (conditions!=null&&conditions.containsKey("group")) {
+                       if (!conditions.containsKey("strict")) {
+                               String[] groups = 
conditions.get("group").toString().split(" ");
+                               if (groups.length < 1)
+                                       return;
+                               strb.append(" and (");
+                               strb.append("upper(authority.name)like '%"
+                                               + groups[0].toUpperCase() + 
"%'");
+                               for (int i = 1; i < groups.length; i++) {
+                                       strb.append(" or 
upper(authority.name)like '%"
+                                                       + 
groups[i].toUpperCase() + "%'");
+                               }
+                               strb.append(")");
+                       }else{
+                               String groups = 
conditions.get("group").toString();
+                               strb.append(" and authority.name='"+groups+"'");
+                       }                       
+               }
+   }
+          @Transactional(readOnly = true)
+          public int getAssociatedPersonsNum(Map conditions,PagingStatusHolder 
holder) {
+               StringBuffer strb = new StringBuffer();
+                basicGetAssociatedPersons(conditions,strb);
+               Query q = getSession().createQuery(strb.toString());
+               return q.list().size();
+       }
 }


Index: PersonService.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/community/src/java/com/finalist/cmsc/services/community/person/PersonService.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- PersonService.java  15 Jul 2008 12:45:10 -0000      1.8
+++ PersonService.java  27 Jul 2008 07:41:23 -0000      1.9
@@ -10,7 +10,9 @@
 package com.finalist.cmsc.services.community.person;
 
 import java.util.List;
+import java.util.Map;
 
+import com.finalist.cmsc.paging.PagingStatusHolder;
 import com.finalist.cmsc.services.community.domain.PersonExportImportVO;
 import com.finalist.cmsc.services.community.preferences.Preference;
 /**
@@ -59,6 +61,9 @@
    void updatePerson(Person person);
 
    List<Person> getAllPersons();
+   public List<Person> getAllPeople(PagingStatusHolder holder);
+   
+   public int countAllPersons();
 
    boolean deletePersonByAuthenticationId(Long userId);
    
@@ -69,4 +74,7 @@
    public void creatRelationRecord(PersonExportImportVO xperson);
     
    public List<PersonExportImportVO> getPersonExportImportVO();
+   public List<Person> getAssociatedPersons(Map conditions,PagingStatusHolder 
holder);
+
+   public int getAssociatedPersonsNum(Map map,PagingStatusHolder holder);
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to