NIHVIVO-2343 Fix the logic so you can't add a proxy to yourself, even in a new many-to-many relationship.

This commit is contained in:
j2blake 2011-11-11 15:49:34 +00:00
parent 41d16a60b4
commit 965ba68c47

View file

@ -98,24 +98,28 @@ public class ManageProxiesCreatePage extends AbstractPageHandler {
return valid; return valid;
} }
/** We don't remove any existing relationships, we just add new ones. */ /**
* We don't remove any existing relationships, we just add new ones. But we
* won't add a relationship to one's self.
*/
public void createRelationships() { public void createRelationships() {
for (UserAccount proxyAccount : proxyAccounts) { for (UserAccount proxyAccount : proxyAccounts) {
Set<String> profiles = new HashSet<String>(); Set<String> profiles = new HashSet<String>();
profiles.addAll(proxyAccount.getProxiedIndividualUris());
profiles.addAll(figureNonSelfProfileUris(proxyAccount)); profiles.addAll(figureNonSelfProfileUris(proxyAccount));
profiles.addAll(proxyAccount.getProxiedIndividualUris());
proxyAccount.setProxiedIndividualUris(profiles); proxyAccount.setProxiedIndividualUris(profiles);
userAccountsDao.updateUserAccount(proxyAccount); userAccountsDao.updateUserAccount(proxyAccount);
} }
} }
/* Look at the desired profiles, and remove any that are this proxy's self. */
private Collection<String> figureNonSelfProfileUris(UserAccount proxyAccount) { private Collection<String> figureNonSelfProfileUris(UserAccount proxyAccount) {
List<Individual> mySelves = selfEditingConfiguration
.getAssociatedIndividuals(indDao, proxyAccount);
List<String> myProfiles = new ArrayList<String>(profileUris); List<String> myProfiles = new ArrayList<String>(profileUris);
myProfiles.removeAll(mySelves); for (Individual self : selfEditingConfiguration
.getAssociatedIndividuals(indDao, proxyAccount)) {
myProfiles.remove(self.getURI());
}
return myProfiles; return myProfiles;
} }