Author: mfranklin
Date: Tue Aug 28 18:41:02 2012
New Revision: 1378263

URL: http://svn.apache.org/viewvc?rev=1378263&view=rev
Log:
Refactored person from group (RAVE-729)

Modified:
    
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Group.java
    
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Person.java
    
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/GroupImpl.java
    
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PersonImpl.java
    
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaGroup.java
    
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPerson.java
    
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/conversion/JpaGroupConverter.java
    
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPersonRepository.java
    
rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/model/conversion/JpaGroupConverterTest.java

Modified: 
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Group.java
URL: 
http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Group.java?rev=1378263&r1=1378262&r2=1378263&view=diff
==============================================================================
--- 
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Group.java
 (original)
+++ 
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Group.java
 Tue Aug 28 18:41:02 2012
@@ -26,17 +26,17 @@ import java.util.List;
  */
 @XmlTransient
 public interface Group {
-    Person getOwner();
+    String getOwnerId();
 
-    void setOwner(Person owner);
+    void setOwnerId(String ownerId);
 
     String getDescription();
 
     void setDescription(String description);
 
-    List<Person> getMembers();
+    List<String> getMemberIds();
 
-    void setMembers(List<Person> members);
+    void setMemberIds(List<String> members);
 
     String getTitle();
 

Modified: 
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Person.java
URL: 
http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Person.java?rev=1378263&r1=1378262&r2=1378263&view=diff
==============================================================================
--- 
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Person.java
 (original)
+++ 
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Person.java
 Tue Aug 28 18:41:02 2012
@@ -25,6 +25,10 @@ import java.util.List;
  */
 @XmlTransient
 public interface Person {
+    String getId();
+
+    void setId(String userId);
+
     String getUsername();
 
     void setUsername(String username);

Modified: 
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/GroupImpl.java
URL: 
http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/GroupImpl.java?rev=1378263&r1=1378262&r2=1378263&view=diff
==============================================================================
--- 
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/GroupImpl.java
 (original)
+++ 
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/GroupImpl.java
 Tue Aug 28 18:41:02 2012
@@ -25,18 +25,18 @@ import java.util.List;
 public class GroupImpl implements Group {
 
     protected String description;
-    protected Person owner;
+    protected String owner;
     protected String title;
-    protected List<Person> members;
+    protected List<String> members;
 
     @Override
-    public Person getOwner() {
+    public String getOwnerId() {
         return owner;
     }
 
     @Override
-    public void setOwner(Person owner) {
-        this.owner = owner;
+    public void setOwnerId(String ownerId) {
+        this.owner = ownerId;
     }
 
     @Override
@@ -50,12 +50,12 @@ public class GroupImpl implements Group 
     }
 
     @Override
-    public List<Person> getMembers() {
+    public List<String> getMemberIds() {
         return members;
     }
 
     @Override
-    public void setMembers(List<Person> members) {
+    public void setMemberIds(List<String> members) {
         this.members = members;
     }
 

Modified: 
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PersonImpl.java
URL: 
http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PersonImpl.java?rev=1378263&r1=1378262&r2=1378263&view=diff
==============================================================================
--- 
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PersonImpl.java
 (original)
+++ 
rave/branches/model-split/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/PersonImpl.java
 Tue Aug 28 18:41:02 2012
@@ -24,6 +24,7 @@ import java.util.List;
 
 public class PersonImpl implements Person {
 
+    protected String id;
     protected String username;
     protected String email;
     protected String displayName;
@@ -39,6 +40,14 @@ public class PersonImpl implements Perso
     protected List<Organization> organizations;
     protected List<PersonProperty> properties;
 
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
     public String getUsername() {
         return username;
     }

Modified: 
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaGroup.java
URL: 
http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaGroup.java?rev=1378263&r1=1378262&r2=1378263&view=diff
==============================================================================
--- 
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaGroup.java
 (original)
+++ 
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaGroup.java
 Tue Aug 28 18:41:02 2012
@@ -18,11 +18,10 @@
  */
 package org.apache.rave.portal.model;
 
+import com.google.common.collect.Lists;
 import org.apache.rave.persistence.BasicEntity;
 import org.apache.rave.portal.model.conversion.ConvertingListProxyFactory;
 import org.apache.rave.portal.model.conversion.JpaConverter;
-import org.apache.rave.portal.model.conversion.JpaGroupConverter;
-import org.apache.rave.portal.model.conversion.JpaPersonConverter;
 
 import javax.persistence.*;
 import java.util.ArrayList;
@@ -62,20 +61,21 @@ public class JpaGroup implements BasicEn
     @Column(name = "description")
     private String description;
 
-    @ManyToOne
-    @JoinColumn(name = "owner_id", referencedColumnName = "entity_id")
-    private JpaPerson owner;
-
+    @Basic
+    @Column(name = "owner_id")
+    private String owner;
 
-    @ManyToMany(fetch = FetchType.EAGER, mappedBy="groups")
-    private List<JpaPerson> members;
+    @ElementCollection(fetch = FetchType.EAGER)
+    @CollectionTable(name = "group_members", joinColumns = 
@JoinColumn(name="group_id"))
+    @Column(name= "person_Id")
+    private List<String> members;
 
-    public JpaPerson getOwner() {
+    public String getOwnerId() {
         return owner;
     }
 
-    public void setOwner(Person owner) {
-        this.owner = JpaConverter.getInstance().convert(owner, Person.class);
+    public void setOwnerId(String ownerId) {
+        this.owner = ownerId;
     }
 
     public String getDescription() {
@@ -86,17 +86,17 @@ public class JpaGroup implements BasicEn
         this.description = description;
     }
 
-    public List<Person> getMembers() {
-        return ConvertingListProxyFactory.createProxyList(Person.class, 
members);
+    public List<String> getMemberIds() {
+        return members;
     }
 
-    public void setMembers(List<Person> members) {
+    public void setMemberIds(List<String> members) {
         if(this.members == null) {
-            this.members = new ArrayList<JpaPerson>();
+            this.members = Lists.<String>newLinkedList();
         }
-        this.getMembers().clear();
+        this.getMemberIds().clear();
         if(members != null) {
-            this.getMembers().addAll(members);
+            this.getMemberIds().addAll(members);
         }
     }
 

Modified: 
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPerson.java
URL: 
http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPerson.java?rev=1378263&r1=1378262&r2=1378263&view=diff
==============================================================================
--- 
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPerson.java
 (original)
+++ 
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaPerson.java
 Tue Aug 28 18:41:02 2012
@@ -52,16 +52,13 @@ import java.util.List;
 @Access(AccessType.FIELD)
 @NamedQueries(value = {
     @NamedQuery(name = JpaPerson.FIND_BY_USERNAME, query = "select p from 
JpaPerson p where p.username like :username"),
-    @NamedQuery(name = JpaPerson.FIND_FRIENDS_BY_USERNAME, query = "select 
a.followedby from JpaPersonAssociation a where a.follower.username = :username 
and a.status = :status"),
-    @NamedQuery(name = JpaPerson.FIND_BY_GROUP_MEMBERSHIP, query = "select m 
from JpaGroup g join g.members m where exists " +
-            "(select 'found' from g.members b where b.username = :username) 
and m.username <> :username")
+    @NamedQuery(name = JpaPerson.FIND_FRIENDS_BY_USERNAME, query = "select 
a.followedby from JpaPersonAssociation a where a.follower.username = :username 
and a.status = :status")
 })
 @DiscriminatorValue("Person")
 public class JpaPerson implements BasicEntity, Person {
 
     public static final String FIND_BY_USERNAME = "Person.findByUsername";
     public static final String FIND_FRIENDS_BY_USERNAME = 
"Person.findFriendsByUsername";
-    public static final String FIND_BY_GROUP_MEMBERSHIP = 
"Person.findByGroupMembership";
     public static final String USERNAME_PARAM = "username";
     public static final String STATUS_PARAM = "status";
 
@@ -130,12 +127,6 @@ public class JpaPerson implements BasicE
     @JoinColumn(name = "person_id", referencedColumnName = "entity_id")
     protected List<JpaPersonProperty> properties;
 
-    @ManyToMany(fetch = FetchType.LAZY)
-    @JoinTable(name = "group_members",
-            joinColumns = @JoinColumn(name = "person_id", referencedColumnName 
= "entity_id"),
-            inverseJoinColumns = @JoinColumn(name = "group_id", 
referencedColumnName = "entity_id"))
-    private List<JpaGroup> groups;
-
     public Long getEntityId() {
         return entityId;
     }
@@ -145,6 +136,16 @@ public class JpaPerson implements BasicE
     }
 
     @Override
+    public String getId() {
+        return this.getEntityId() == null ? null : 
this.getEntityId().toString();
+    }
+
+    @Override
+    public void setId(String userId) {
+        this.setEntityId(userId == null ? null : Long.parseLong(userId));
+    }
+
+    @Override
     public String getUsername() {
         return username;
     }
@@ -302,20 +303,6 @@ public class JpaPerson implements BasicE
         }
     }
 
-    public List<Group> getGroups() {
-        return ConvertingListProxyFactory.createProxyList(Group.class, groups);
-    }
-
-    public void setGroups(List<JpaGroup> groups) {
-        if(this.groups == null) {
-            this.groups = new ArrayList<JpaGroup>();
-        }
-        this.getGroups().clear();
-        if(groups != null) {
-            this.getGroups().addAll(groups);
-        }
-    }
-
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;

Modified: 
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/conversion/JpaGroupConverter.java
URL: 
http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/conversion/JpaGroupConverter.java?rev=1378263&r1=1378262&r2=1378263&view=diff
==============================================================================
--- 
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/conversion/JpaGroupConverter.java
 (original)
+++ 
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/conversion/JpaGroupConverter.java
 Tue Aug 28 18:41:02 2012
@@ -62,7 +62,7 @@ public class JpaGroupConverter implement
     private void updateProperties(Group source, JpaGroup converted) {
         converted.setDescription(source.getDescription());
         converted.setTitle(source.getTitle());
-        converted.setOwner(source.getOwner());
-        converted.setMembers(source.getMembers());
+        converted.setOwnerId(source.getOwnerId());
+        converted.setMemberIds(source.getMemberIds());
     }
 }

Modified: 
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPersonRepository.java
URL: 
http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPersonRepository.java?rev=1378263&r1=1378262&r2=1378263&view=diff
==============================================================================
--- 
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPersonRepository.java
 (original)
+++ 
rave/branches/model-split/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/repository/impl/JpaPersonRepository.java
 Tue Aug 28 18:41:02 2012
@@ -19,33 +19,25 @@
 
 package org.apache.rave.portal.repository.impl;
 
-import static org.apache.rave.persistence.jpa.util.JpaUtil.getSingleResult;
-import static org.apache.rave.persistence.jpa.util.JpaUtil.saveOrUpdate;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
-
+import com.google.common.collect.Lists;
 import org.apache.rave.exception.NotSupportedException;
-import org.apache.rave.portal.model.FriendRequestStatus;
-import org.apache.rave.portal.model.JpaGroup;
-import org.apache.rave.portal.model.JpaPerson;
-import org.apache.rave.portal.model.JpaPersonAssociation;
-import org.apache.rave.portal.model.JpaUser;
-import org.apache.rave.portal.model.JpaWidget;
-import org.apache.rave.portal.model.Person;
-import org.apache.rave.portal.model.User;
-import org.apache.rave.portal.model.Widget;
+import org.apache.rave.portal.model.*;
 import org.apache.rave.portal.model.conversion.JpaPersonConverter;
 import org.apache.rave.portal.repository.PersonRepository;
 import org.apache.rave.util.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import static org.apache.rave.persistence.jpa.util.JpaUtil.getSingleResult;
+import static org.apache.rave.persistence.jpa.util.JpaUtil.saveOrUpdate;
+
 /**
  *
  */
@@ -67,11 +59,18 @@ public class JpaPersonRepository impleme
 
     @Override
     public List<Person> findAllConnectedPeople(String username) {
-        List<Person> connections = new ArrayList<Person>();
-        connections.addAll(findFriends(username));
-        TypedQuery<JpaPerson> members = 
manager.createNamedQuery(JpaPerson.FIND_BY_GROUP_MEMBERSHIP, JpaPerson.class);
-        members.setParameter(JpaPerson.USERNAME_PARAM, username);
-        
CollectionUtils.addUniqueValues(CollectionUtils.<Person>toBaseTypedList(members.getResultList()),
 connections);
+        Person person = findByUsername(username);
+        List<Person> connections = Lists.newLinkedList();
+        if (person != null) {
+            String personId = person.getId();
+            connections.addAll(findFriends(username));
+            TypedQuery<JpaGroup> members = manager.createQuery("SELECT g from 
JpaGroup g where :userId member of g.members", JpaGroup.class);
+            members.setParameter("userId", personId);
+            for(JpaGroup groups : members.getResultList()) {
+                addPeopleByIds(groups, connections);
+            }
+        }
+        connections.remove(person);
         return connections;
     }
 
@@ -94,14 +93,14 @@ public class JpaPersonRepository impleme
     }
 
 
-    @SuppressWarnings({ "rawtypes", "unchecked" })
-       @Override
+    @SuppressWarnings({"rawtypes", "unchecked"})
+    @Override
     public List<Person> findFriends(String username, String appId) {
-       List<Person> friendsUsingWidget = new ArrayList<Person>();
+        List<Person> friendsUsingWidget = new ArrayList<Person>();
 
-       TypedQuery query = 
manager.createNamedQuery(JpaWidget.WIDGET_GET_BY_URL, JpaWidget.class);
-       query.setParameter(JpaWidget.PARAM_URL, appId);
-               final List<JpaWidget> resultList = query.getResultList();
+        TypedQuery query = 
manager.createNamedQuery(JpaWidget.WIDGET_GET_BY_URL, JpaWidget.class);
+        query.setParameter(JpaWidget.PARAM_URL, appId);
+        final List<JpaWidget> resultList = query.getResultList();
         Widget widget = getSingleResult(resultList);
 
         query = 
manager.createNamedQuery(JpaUser.USER_GET_ALL_FOR_ADDED_WIDGET, JpaUser.class);
@@ -109,37 +108,36 @@ public class JpaPersonRepository impleme
         List<User> widgetUsers = query.getResultList();
 
         List<Person> userFriends = findFriends(username);
-        for(Person userFriend : userFriends) {
-               for (User widgetUser : widgetUsers) {
-                       
if(userFriend.getUsername().equals(widgetUser.getUsername())) {
-                               friendsUsingWidget.add(userFriend);
-                       }
-               }
-       }
+        for (Person userFriend : userFriends) {
+            for (User widgetUser : widgetUsers) {
+                if (userFriend.getUsername().equals(widgetUser.getUsername())) 
{
+                    friendsUsingWidget.add(userFriend);
+                }
+            }
+        }
         return friendsUsingWidget;
     }
 
     @Override
     public List<Person> findFriendsWithFriend(String username, String 
friendUsername) {
-       List<Person> friendsWithFriend = new ArrayList<Person>();
-       List<Person> userFriends = findFriends(username);
-       List<Person> friendFriends = findFriends(friendUsername);
-       for(Person userFriend : userFriends) {
-               for (Person friendFriend : friendFriends) {
-                       
if(userFriend.getUsername().equals(friendFriend.getUsername())) {
-                               friendsWithFriend.add(userFriend);
-                       }
-               }
-       }
-       return friendsWithFriend;
+        List<Person> friendsWithFriend = new ArrayList<Person>();
+        List<Person> userFriends = findFriends(username);
+        List<Person> friendFriends = findFriends(friendUsername);
+        for (Person userFriend : userFriends) {
+            for (Person friendFriend : friendFriends) {
+                if 
(userFriend.getUsername().equals(friendFriend.getUsername())) {
+                    friendsWithFriend.add(userFriend);
+                }
+            }
+        }
+        return friendsWithFriend;
     }
 
     @Override
     public List<Person> findByGroup(String groupId) {
         TypedQuery<JpaGroup> query = 
manager.createNamedQuery(JpaGroup.FIND_BY_TITLE, JpaGroup.class);
         query.setParameter(JpaGroup.GROUP_ID_PARAM, groupId);
-        JpaGroup result = getSingleResult(query.getResultList());
-        return result == null ? new ArrayList<Person>() : 
CollectionUtils.<Person>toBaseTypedList(result.getMembers());
+        return getPeopleByIds(getSingleResult(query.getResultList()));
     }
 
     @Override
@@ -173,49 +171,46 @@ public class JpaPersonRepository impleme
         manager.remove(item instanceof JpaPerson ? item : 
findByUsername(item.getUsername()));
     }
 
-       @Override
-       public boolean addFriend(String friendUsername, String username) {
-               JpaPersonAssociation senderItem = new JpaPersonAssociation();
-               
senderItem.setFollower(personConverter.convert(findByUsername(username)));
-               
senderItem.setFollowedby(personConverter.convert(findByUsername(friendUsername)));
-               senderItem.setStatus(FriendRequestStatus.SENT);
-               senderItem = saveOrUpdate(senderItem.getEntityId(), manager, 
senderItem);
-
-               JpaPersonAssociation receiverItem = new JpaPersonAssociation();
-               
receiverItem.setFollower(personConverter.convert(findByUsername(friendUsername)));
-               
receiverItem.setFollowedby(personConverter.convert(findByUsername(username)));
-               receiverItem.setStatus(FriendRequestStatus.RECEIVED);
-               receiverItem = saveOrUpdate(receiverItem.getEntityId(), 
manager, receiverItem);
-
-               if(senderItem.getEntityId()!=null && 
receiverItem.getEntityId()!=null)
-                       return true;
-               else
-                       return false;
-       }
-
-       @Override
-       public void removeFriend(String friendUsername, String username) {
-               TypedQuery<JpaPersonAssociation> query = 
manager.createNamedQuery(JpaPersonAssociation.FIND_ASSOCIATION_ITEM_BY_USERNAMES,
 JpaPersonAssociation.class);
+    @Override
+    public boolean addFriend(String friendUsername, String username) {
+        JpaPersonAssociation senderItem = new JpaPersonAssociation();
+        
senderItem.setFollower(personConverter.convert(findByUsername(username)));
+        
senderItem.setFollowedby(personConverter.convert(findByUsername(friendUsername)));
+        senderItem.setStatus(FriendRequestStatus.SENT);
+        senderItem = saveOrUpdate(senderItem.getEntityId(), manager, 
senderItem);
+
+        JpaPersonAssociation receiverItem = new JpaPersonAssociation();
+        
receiverItem.setFollower(personConverter.convert(findByUsername(friendUsername)));
+        
receiverItem.setFollowedby(personConverter.convert(findByUsername(username)));
+        receiverItem.setStatus(FriendRequestStatus.RECEIVED);
+        receiverItem = saveOrUpdate(receiverItem.getEntityId(), manager, 
receiverItem);
+
+        return senderItem.getEntityId() != null && receiverItem.getEntityId() 
!= null;
+    }
+
+    @Override
+    public void removeFriend(String friendUsername, String username) {
+        TypedQuery<JpaPersonAssociation> query = 
manager.createNamedQuery(JpaPersonAssociation.FIND_ASSOCIATION_ITEM_BY_USERNAMES,
 JpaPersonAssociation.class);
         query.setParameter(JpaPersonAssociation.FOLLOWER_USERNAME, username);
         query.setParameter(JpaPersonAssociation.FOLLOWEDBY_USERNAME, 
friendUsername);
         JpaPersonAssociation item = getSingleResult(query.getResultList());
         manager.remove(item);
 
-               query = 
manager.createNamedQuery(JpaPersonAssociation.FIND_ASSOCIATION_ITEM_BY_USERNAMES,
 JpaPersonAssociation.class);
+        query = 
manager.createNamedQuery(JpaPersonAssociation.FIND_ASSOCIATION_ITEM_BY_USERNAMES,
 JpaPersonAssociation.class);
         query.setParameter(JpaPersonAssociation.FOLLOWER_USERNAME, 
friendUsername);
         query.setParameter(JpaPersonAssociation.FOLLOWEDBY_USERNAME, username);
         JpaPersonAssociation inverseItem = 
getSingleResult(query.getResultList());
         manager.remove(inverseItem);
-       }
+    }
 
-       @Override
-       public HashMap<String, List<Person>> findFriendsAndRequests(String 
username) {
-               HashMap<String, List<Person>> friendsAndRequests = new 
HashMap<String, List<Person>>();
-               friendsAndRequests.put(FriendRequestStatus.ACCEPTED.toString(), 
findFriends(username));
-               friendsAndRequests.put(FriendRequestStatus.SENT.toString(), 
findFriendRequestsSent(username));
-               friendsAndRequests.put(FriendRequestStatus.RECEIVED.toString(), 
findFriendRequestsReceived(username));
+    @Override
+    public HashMap<String, List<Person>> findFriendsAndRequests(String 
username) {
+        HashMap<String, List<Person>> friendsAndRequests = new HashMap<String, 
List<Person>>();
+        friendsAndRequests.put(FriendRequestStatus.ACCEPTED.toString(), 
findFriends(username));
+        friendsAndRequests.put(FriendRequestStatus.SENT.toString(), 
findFriendRequestsSent(username));
+        friendsAndRequests.put(FriendRequestStatus.RECEIVED.toString(), 
findFriendRequestsReceived(username));
         return friendsAndRequests;
-       }
+    }
 
     @Override
     public List<Person> findFriendRequestsSent(String username) {
@@ -233,25 +228,39 @@ public class JpaPersonRepository impleme
         return 
CollectionUtils.<Person>toBaseTypedList(friends.getResultList());
     }
 
-       @Override
-       public boolean acceptFriendRequest(String friendUsername, String 
username) {
-               TypedQuery<JpaPersonAssociation> query = 
manager.createNamedQuery(JpaPersonAssociation.FIND_ASSOCIATION_ITEM_BY_USERNAMES,
 JpaPersonAssociation.class);
+    @Override
+    public boolean acceptFriendRequest(String friendUsername, String username) 
{
+        TypedQuery<JpaPersonAssociation> query = 
manager.createNamedQuery(JpaPersonAssociation.FIND_ASSOCIATION_ITEM_BY_USERNAMES,
 JpaPersonAssociation.class);
         query.setParameter(JpaPersonAssociation.FOLLOWER_USERNAME, username);
         query.setParameter(JpaPersonAssociation.FOLLOWEDBY_USERNAME, 
friendUsername);
         JpaPersonAssociation receiverItem = 
getSingleResult(query.getResultList());
         receiverItem.setStatus(FriendRequestStatus.ACCEPTED);
         receiverItem = saveOrUpdate(receiverItem.getEntityId(), manager, 
receiverItem);
 
-               query = 
manager.createNamedQuery(JpaPersonAssociation.FIND_ASSOCIATION_ITEM_BY_USERNAMES,
 JpaPersonAssociation.class);
+        query = 
manager.createNamedQuery(JpaPersonAssociation.FIND_ASSOCIATION_ITEM_BY_USERNAMES,
 JpaPersonAssociation.class);
         query.setParameter(JpaPersonAssociation.FOLLOWER_USERNAME, 
friendUsername);
         query.setParameter(JpaPersonAssociation.FOLLOWEDBY_USERNAME, username);
         JpaPersonAssociation senderItem = 
getSingleResult(query.getResultList());
         senderItem.setStatus(FriendRequestStatus.ACCEPTED);
         senderItem = saveOrUpdate(senderItem.getEntityId(), manager, 
senderItem);
 
-               if(receiverItem.getEntityId()!=null && 
senderItem.getEntityId()!=null)
-                       return true;
-               else
-                       return false;
-       }
+        return receiverItem.getEntityId() != null && senderItem.getEntityId() 
!= null;
+    }
+
+    private List<Person> getPeopleByIds(JpaGroup result) {
+        List<Person> members = Lists.newLinkedList();
+        addPeopleByIds(result, members);
+        return members;
+    }
+
+    private void addPeopleByIds(JpaGroup result, List<Person> members) {
+        if (result != null) {
+            for (String personId : result.getMemberIds()) {
+                Person person = get(personId);
+                if (!members.contains(person)) {
+                    members.add(person);
+                }
+            }
+        }
+    }
 }

Modified: 
rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/model/conversion/JpaGroupConverterTest.java
URL: 
http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/model/conversion/JpaGroupConverterTest.java?rev=1378263&r1=1378262&r2=1378263&view=diff
==============================================================================
--- 
rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/model/conversion/JpaGroupConverterTest.java
 (original)
+++ 
rave/branches/model-split/rave-components/rave-jpa/src/test/java/org/apache/rave/portal/model/conversion/JpaGroupConverterTest.java
 Tue Aug 28 18:41:02 2012
@@ -49,24 +49,25 @@ public class JpaGroupConverterTest {
     private Long entityId = Long.valueOf(400);
     private String title = "GroupTitle";
     private Person owner = null;
-    private List<Person> members = null;
+    private List<String> members = null;
 
-    private String ownerDisplayName = "Bob";
-    private String ownerGivenName = "Smith";
+    private static final String ownerDisplayName = "Bob";
+    private static final String ownerGivenName = "Smith";
+    private static final String ownerId = "12345";
 
     @Before
     public void setup() {
-        members = new ArrayList<Person>();
+        members = new ArrayList<String>();
         owner = new PersonImpl();
         owner.setDisplayName(ownerDisplayName);
         owner.setGivenName(ownerGivenName);
-        members.add(owner);
+        members.add(ownerId);
 
         group = new GroupImpl();
         group.setDescription(description);
         group.setTitle(title);
-        group.setOwner(owner);
-        group.setMembers(members);
+        group.setOwnerId(ownerId);
+        group.setMemberIds(members);
     }
 
     @Test
@@ -89,8 +90,8 @@ public class JpaGroupConverterTest {
         assertThat(jpaGroup, is(instanceOf(JpaGroup.class)));
         assertEquals(description, jpaGroup.getDescription());
         assertEquals(title, jpaGroup.getTitle());
-        assertEquals(owner.getDisplayName(), 
jpaGroup.getOwner().getDisplayName());
-        assertEquals(members.size(), jpaGroup.getMembers().size());
+        assertEquals(ownerId, jpaGroup.getOwnerId());
+        assertEquals(members.size(), jpaGroup.getMemberIds().size());
     }
 
 }


Reply via email to