NIHVIVO-2343 Create method: UserAccountsDao.getUserAccountsWhoProxyForPage(String profilePageUri)

This commit is contained in:
j2blake 2011-10-28 16:20:19 +00:00
parent 202a657178
commit 7bb12dbeb9
5 changed files with 116 additions and 4 deletions

View file

@ -39,6 +39,11 @@ public interface UserAccountsDao {
* @return null if the ID is null, or if there is no such UserAccount
*/
UserAccount getUserAccountByExternalAuthId(String externalAuthId);
/**
* Get any UserAccounts who act as proxy editors for this profile page.
*/
Collection<UserAccount> getUserAccountsWhoProxyForPage(String profilePageUri);
/**
* Create a new UserAccount in the model.

View file

@ -47,6 +47,12 @@ public class UserAccountsDaoFiltering extends BaseFiltering implements
return innerDao.getUserAccountByExternalAuthId(externalAuthId);
}
@Override
public Collection<UserAccount> getUserAccountsWhoProxyForPage(
String profilePageUri) {
return innerDao.getUserAccountsWhoProxyForPage(profilePageUri);
}
@Override
public String insertUserAccount(UserAccount userAccount) {
return innerDao.insertUserAccount(userAccount);

View file

@ -12,6 +12,8 @@ import java.util.Random;
import com.hp.hpl.jena.ontology.OntClass;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntResource;
import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.rdf.model.StmtIterator;
@ -24,6 +26,7 @@ import edu.cornell.mannlib.vitro.webapp.beans.PermissionSet;
import edu.cornell.mannlib.vitro.webapp.beans.UserAccount;
import edu.cornell.mannlib.vitro.webapp.dao.InsertException;
import edu.cornell.mannlib.vitro.webapp.dao.UserAccountsDao;
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
/**
* Implement UserAccountsDao for Jena models.
@ -164,6 +167,41 @@ public class UserAccountsDaoJena extends JenaBaseDao implements UserAccountsDao
return getUserAccountByUri(userUri);
}
@Override
public Collection<UserAccount> getUserAccountsWhoProxyForPage(
String profilePageUri) {
List<String> userUris = new ArrayList<String>();
Resource s = null;
Property p = getOntModel().getProperty(
VitroVocabulary.USERACCOUNT_PROXY_EDITOR_FOR);
Resource o = getOntModel().createResource(profilePageUri);
getOntModel().enterCriticalSection(Lock.READ);
try {
StmtIterator stmts = getOntModel().listStatements(s, p, o);
while (stmts.hasNext()) {
Resource subject = stmts.next().getSubject();
if (subject != null) {
userUris.add(subject.getURI());
}
}
stmts.close();
} finally {
getOntModel().leaveCriticalSection();
}
List<UserAccount> userAccounts = new ArrayList<UserAccount>();
for (String userUri : userUris) {
UserAccount ua = getUserAccountByUri(userUri);
if (ua != null) {
userAccounts.add(ua);
}
}
return userAccounts;
}
@Override
public String insertUserAccount(UserAccount userAccount) {
if (userAccount == null) {
@ -214,8 +252,7 @@ public class UserAccountsDaoJena extends JenaBaseDao implements UserAccountsDao
model.add(res, RDF.type, USERACCOUNT_ROOT_USER);
}
updatePropertyResourceURIValues(res,
USERACCOUNT_PROXY_EDITOR_FOR,
updatePropertyResourceURIValues(res, USERACCOUNT_PROXY_EDITOR_FOR,
userAccount.getProxiedIndividualUris(), model);
userAccount.setUri(userUri);
@ -283,8 +320,7 @@ public class UserAccountsDaoJena extends JenaBaseDao implements UserAccountsDao
model.remove(res, RDF.type, USERACCOUNT_ROOT_USER);
}
updatePropertyResourceURIValues(res,
USERACCOUNT_PROXY_EDITOR_FOR,
updatePropertyResourceURIValues(res, USERACCOUNT_PROXY_EDITOR_FOR,
userAccount.getProxiedIndividualUris(), model);
} finally {