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
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs