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

Modified Files:
        PersonHibernateService.java PersonService.java 
Log Message:
CMSC-996 code improve.


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.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- PersonHibernateService.java 30 Jul 2008 09:52:38 -0000      1.15
+++ PersonHibernateService.java 31 Jul 2008 02:29:28 -0000      1.16
@@ -40,12 +40,15 @@
 
    private AuthenticationService authenticationService;
     private PreferenceService preferenceService;
+
    @Required
    public void setPreferenceService(PreferenceService preferenceService) {
       this.preferenceService = preferenceService;
    }
 
-   /** [EMAIL PROTECTED] */
+   /**
+    * [EMAIL PROTECTED]
+    */
    @Transactional(readOnly = true)
    public Person getPersonByUserId(String userId) {
       if (StringUtils.isBlank(userId)) {
@@ -54,7 +57,9 @@
       return findPersonByUserId(userId);
    }
 
-   /** [EMAIL PROTECTED] */
+   /**
+    * [EMAIL PROTECTED]
+    */
    @Transactional
    @SuppressWarnings("unchecked")
    public List<Person> getPersons(Person example) {
@@ -67,7 +72,9 @@
 
    }
 
-   /** [EMAIL PROTECTED] */
+   /**
+    * [EMAIL PROTECTED]
+    */
    @Transactional
    public List<Person> getLikePersons(Person example) {
       if (example == null) {
@@ -106,38 +113,35 @@
       return person;
    }
 
-   /** [EMAIL PROTECTED] */
+   /**
+    * [EMAIL PROTECTED]
+    */
    @Transactional
    public void updatePerson(Person person) {
       getSession().saveOrUpdate(person);
       getSession().flush();
    }
+
    @Transactional
-   public List<Person> getAllPeople(PagingStatusHolder holder) {
+   public List<Person> getAllPeople() {
       return getAssociatedPersons(null);
    }
+
     @Transactional
    public List<Person> getAllPersons() {
           Criteria criteria = getSession().createCriteria(Person.class);
         return criteria.list();
    }
+
     @Transactional(readOnly = true)
-    public int countAllPersons(){
+   public int countAllPersons() {
        Criteria criteria = getSession().createCriteria(Person.class);
        return criteria.list().size();
     }
-    private void addOrder(PagingStatusHolder holder, String propertyName,
-         Criteria criteria) {
-         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] */
+   /**
+    * [EMAIL PROTECTED]
+    */
    @Transactional
    public boolean deletePersonByAuthenticationId(Long authenticationId) {
       if (authenticationId != null) {
@@ -166,7 +170,9 @@
       this.authenticationService = authenticationService;
    }
 
-   /** [EMAIL PROTECTED] */
+   /**
+    * [EMAIL PROTECTED]
+    */
    @Transactional(readOnly = true)
    public Person getPersonByAuthenticationId(Long authenticationId) {
       Person person = null;
@@ -178,9 +184,9 @@
    }
 
    @Transactional(readOnly = true)
-   public Person getPersonByEmail(String email){
+   public Person getPersonByEmail(String email) {
       Person person = null;
-      if(email != null){
+      if (email != null) {
          Criteria criteria = 
getSession().createCriteria(Person.class).add(Restrictions.eq("email", email));
          person = findPersonByCriteria(criteria);
       }
@@ -188,10 +194,10 @@
    }
 
   @Transactional
-   public void batchClean(){
+   public void batchClean() {
       List<Person> persons = getAllPersons();
       for (Person tempPerson : persons) {
-         if(null!=tempPerson){
+         if (null != tempPerson) {
             long authId = tempPerson.getAuthenticationId();
             deleteRelationRecord(authId);
          }
@@ -224,7 +230,7 @@
    @Transactional(readOnly = true)
    public List<PersonExportImportVO> getPersonExportImportVO() {
       List<PersonExportImportVO> XPersons = new 
ArrayList<PersonExportImportVO>();
-      List<Person> persons =getAllPersons();
+      List<Person> persons = getAllPersons();
       if (null == persons) {
          return null;
       }
@@ -267,7 +273,7 @@
       StringBuffer strb = new StringBuffer();
       basicGetAssociatedPersons(conditions, strb);
 
-      strb.append(" "+holder.getSortToken());
+      strb.append(holder.getSortToken());
 
       Query q = getSession().createQuery(strb.toString());
 
@@ -275,37 +281,42 @@
 
       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")) {
+
+   private void basicGetAssociatedPersons(Map<String, String> conditions, 
StringBuffer strb) {
+
+      strb.append("select distinct person from Person person , Authentication 
authentication ").
+            append("left join authentication.authorities authority ").
+            append("where person.authenticationId = authentication.id");
+
+      if (conditions.size() < 1) {
+         return;
+      }
+
+      if (conditions.containsKey("fullname")) {
          String[] names = conditions.get("fullname").toString().split(" ");
-         if (names.length == 2)
+         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)
+         }
+         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")) {
+
+      strb.append(condition("and upper(authentication.userId) like '[EMAIL 
PROTECTED]", "username", conditions));
+      strb.append(condition("and upper(person.email) like '[EMAIL 
PROTECTED]'", "email", conditions));
+
+
+      if (conditions.containsKey("group")) {
          if (!conditions.containsKey("strict")) {
-            String[] groups = conditions.get("group").toString().split(" ");
-            if (groups.length < 1)
+            String[] groups = conditions.get("group").split(" ");
+            if (groups.length < 1) {
                return;
+            }
             strb.append(" and (");
             strb.append("upper(authority.name)like '%"
                   + groups[0].toUpperCase() + "%'");
@@ -314,17 +325,40 @@
                      + groups[i].toUpperCase() + "%'");
             }
             strb.append(")");
-         }else{
+         }
+         else {
             String groups = conditions.get("group").toString();
-            strb.append(" and authority.name='"+groups+"'");
+            strb.append(" and authority.name='" + groups + "'");
          }
       }
+
    }
+
       @Transactional(readOnly = true)
-      public int getAssociatedPersonsNum(Map conditions,PagingStatusHolder 
holder) {
+   public int getAssociatedPersonsNum(Map<String, String> conditions) {
          StringBuffer strb = new StringBuffer();
-         basicGetAssociatedPersons(conditions,strb);
+      basicGetAssociatedPersons(conditions, strb);
          Query q = getSession().createQuery(strb.toString());
          return q.list().size();
    }
+
+   private static String condition(String query, String name, Map<String, 
String> conditions) {
+      String condition = "";
+
+      if (conditions.containsKey(name)) {
+         if (query.contains("%")) {
+            query = StringUtils.replace(query, "%", "%%");
+         }
+         query = StringUtils.replace(query, "@", "%s");
+
+         condition = String.format(query, conditions.get(name));
+      }
+
+      if (condition.length() > 1 && !condition.startsWith(" ")) {
+         condition += " ";
+      }
+
+      return condition;
+   }
+
 }


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.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- PersonService.java  30 Jul 2008 09:52:38 -0000      1.11
+++ PersonService.java  31 Jul 2008 02:29:28 -0000      1.12
@@ -63,7 +63,7 @@
 
    List<Person> getAllPersons();
    
-   public List<Person> getAllPeople(PagingStatusHolder holder);
+   public List<Person> getAllPeople();
    
    public int countAllPersons();
 
@@ -79,5 +79,5 @@
    
    public List<Person> getAssociatedPersons(Map conditions);
 
-   public int getAssociatedPersonsNum(Map map,PagingStatusHolder holder);
+   public int getAssociatedPersonsNum(Map<String,String> map);
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to