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