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

Modified Files:
        PersonHibernateService.java PersonService.java 
Log Message:
CMSC-947, Improve the newletter import/export into a generic community 
import/export,fix overwrite bug


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-947


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.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- PersonHibernateService.java 5 Aug 2008 05:50:16 -0000       1.20
+++ PersonHibernateService.java 19 Sep 2008 07:59:31 -0000      1.21
@@ -10,17 +10,16 @@
 package com.finalist.cmsc.services.community.person;
 
 import java.util.*;
-
 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.Restrictions;
 import org.springframework.beans.factory.annotation.Required;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
-
 import com.finalist.cmsc.paging.PagingStatusHolder;
 import com.finalist.cmsc.paging.PagingUtils;
 import com.finalist.cmsc.services.HibernateService;
@@ -219,10 +218,12 @@
                updatePerson(person);
                String userId = xperson.getAuthentication().getUserId();
                List<Preference> preferences = xperson.getPreferences();
+               if (preferences.size()>0) {
                for (Preference preference : preferences) {
                        preferenceService.createPreference(preference, userId);
                }
        }
+       }
 
        @Transactional(readOnly = true)
        public List<PersonExportImportVO> getPersonExportImportVO() {
@@ -381,5 +382,62 @@
                        persons = q.list();
                }
                return persons;
+}
+       
+       @Transactional(propagation = Propagation.REQUIRED)
+       private void updateRelationRecord(Person oldDataPerson, 
PersonExportImportVO importPerson) {
+               Session session=getSession();
+               Authentication activedAuthentication = 
importPerson.getAuthentication();
+               Authentication dbAuthentication=(Authentication) 
session.load(Authentication.class,oldDataPerson.getId());
+               converPersonPropertis(importPerson, oldDataPerson);
+               converAuthenticationPropertis(activedAuthentication, 
dbAuthentication);
+               parsePreferences(importPerson, session, 
activedAuthentication,dbAuthentication);
+       }
+
+       private void parsePreferences(PersonExportImportVO importPerson,Session 
session, Authentication activedAuthentication,
+                       Authentication dbAuthentication) {
+               List<Preference> 
importPreferences=importPerson.getPreferences();
+               List<Preference> 
dbPreferences=preferenceService.getListPreferencesByUserId(activedAuthentication.getUserId());
+               Map<Long,Preference> util=new HashMap();
+               for(Preference iPreference:importPreferences){
+                       
iPreference.setAuthenticationId(dbAuthentication.getId());
+                       util.put(iPreference.getId(), iPreference);     
+               }
+               for (Preference dbPreference : dbPreferences) {
+                       Preference 
activePreference=util.get(dbPreference.getId());
+                       if (null!=activePreference) {
+                               converPreferencePropertis(activePreference, 
dbPreference);      
+                               util.remove(dbPreference.getId());
+                       } 
+               }
+          for (Map.Entry<Long,Preference> entry : util.entrySet()) {
+                       session.save(entry.getValue());
+               }
+       }       
+
+       private void converPreferencePropertis(Preference 
iPreference,Preference dbPreference) {
+               
dbPreference.setAuthenticationId(iPreference.getAuthenticationId());
+               dbPreference.setKey(iPreference.getKey());
+               dbPreference.setModule(iPreference.getModule());
+               dbPreference.setValue(iPreference.getValue());
+       }
+
+       private void converAuthenticationPropertis(     Authentication 
activedAuthentication,Authentication dbAuthentication) {
+               
dbAuthentication.setAuthorities(activedAuthentication.getAuthorities());
+               dbAuthentication.setEnabled(activedAuthentication.isEnabled());
+               
dbAuthentication.setPassword(activedAuthentication.getPassword());
+               dbAuthentication.setUserId(activedAuthentication.getUserId());
+       }
+       
+       @Transactional
+       public void addRelationRecord(String level, PersonExportImportVO 
importPerson) {
+               Person p = 
getPersonByUserId(importPerson.getAuthentication().getUserId());
+               if(null!=p&&"over".equals(level)){
+                       updateRelationRecord(p,importPerson);                   
+               }
+               if(null==p){
+                   // only add new users
+                       creatRelationRecord(importPerson);
+               }
        }
 }


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.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- PersonService.java  5 Aug 2008 05:50:16 -0000       1.13
+++ PersonService.java  19 Sep 2008 07:59:31 -0000      1.14
@@ -12,8 +12,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-
-
 import com.finalist.cmsc.paging.PagingStatusHolder;
 import com.finalist.cmsc.services.community.domain.PersonExportImportVO;
 import com.finalist.cmsc.services.community.preferences.Preference;
@@ -83,4 +81,5 @@
    public int getAssociatedPersonsNum(Map<String,String> map);
    
    public List<Person> getPersonsByAuthenticationIds(Set<Integer> 
authenticationIds, String name, String email);
+   public void addRelationRecord(String level, PersonExportImportVO 
importPerson);
 }
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to