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