This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository coselmar. See http://git.codelutin.com/coselmar.git commit 7e1d69de67769abfd815cfe82abaf6a45dc2368b Author: Yannick Martel <martel@©odelutin.com> Date: Wed Feb 4 19:48:47 2015 +0100 manage authorized users in document get, and begin update mangement --- .../fr/ifremer/coselmar/beans/DocumentBean.java | 7 +++ .../coselmar/services/v1/DocumentsWebService.java | 63 +++++++++++++++++++++- .../main/webapp/views/documents/newdocument.html | 2 +- 3 files changed, 70 insertions(+), 2 deletions(-) diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/DocumentBean.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/DocumentBean.java index c58ba90..c7527c6 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/DocumentBean.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/DocumentBean.java @@ -293,4 +293,11 @@ public class DocumentBean implements Serializable { public void setAuthorizedUsers(Set<UserBean> authorizedUsers) { this.authorizedUsers = authorizedUsers; } + + public void addAuthorizedUser(UserBean userBean) { + if (this.authorizedUsers == null) { + this.authorizedUsers = new HashSet<>(); + } + this.authorizedUsers.add(userBean); + } } diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/DocumentsWebService.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/DocumentsWebService.java index 21e7379..b7aab6e 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/DocumentsWebService.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/DocumentsWebService.java @@ -123,6 +123,22 @@ public class DocumentsWebService extends CoselmarWebServiceSupport { documentBean.addRelatedQuestion(questionBean); } + // Manage restricted access + if (document.getPrivacy() == Privacy.RESTRICTED) { + Set<CoselmarUserGroup> restrictedList = document.getRestrictedList(); + for (CoselmarUserGroup usersGroup : restrictedList) { + if (StringUtils.equalsIgnoreCase(fullId, usersGroup.getName())) { + Set<CoselmarUser> members = usersGroup.getMembers(); + for (CoselmarUser member : members) { + String userLightId = getPersistenceContext().getTopiaIdFactory().getRandomPart(member.getTopiaId()); + UserBean userBean = BeanEntityConverter.toBean(userLightId, member); + documentBean.addAuthorizedUser(userBean); + } + } + } + } + + return documentBean; } @@ -411,7 +427,52 @@ public class DocumentsWebService extends CoselmarWebServiceSupport { } documentEntity.setName(document.getName()); - documentEntity.setPrivacy(Privacy.valueOf(document.getPrivacy().toUpperCase())); + String oldPrivacy = documentEntity.getPrivacy().name(); + String newPrivacy = document.getPrivacy().toUpperCase(); + documentEntity.setPrivacy(Privacy.valueOf(newPrivacy)); + + // Manage privacy : if restricted, create an UserGroup with authorized users + if (StringUtils.equals(Privacy.RESTRICTED.name(), newPrivacy)) { + Set<UserBean> authorizedUsers = document.getAuthorizedUsers(); + Set<CoselmarUser> coselmarUsers = retrieveUsers(authorizedUsers); + + Set<CoselmarUserGroup> restrictedList = documentEntity.getRestrictedList(); + CoselmarUserGroup restrictedUsers = null; + if (restrictedList != null && !restrictedList.isEmpty()) { + + // Try to retrieve the UserGroup with documentId as name (corresponding to user choice) + for (CoselmarUserGroup usersList : restrictedList) { + if (StringUtils.equalsIgnoreCase(documentId, usersList.getName())) { + restrictedUsers = usersList; + restrictedUsers.clearMembers(); + break; + } + } + } + if (restrictedUsers == null) { + restrictedUsers = getCoselmarUserGroupDao().create(); + restrictedUsers.setName(documentEntity.getTopiaId()); + } + + restrictedUsers.addAllMembers(coselmarUsers); + documentEntity.addRestrictedList(restrictedUsers); + + } else if (StringUtils.equals(Privacy.RESTRICTED.name(), oldPrivacy)) { + // retrieve restrictive users list and remove it + CoselmarUserGroup restrictedUsers = null; + for (CoselmarUserGroup usersList : documentEntity.getRestrictedList()) { + if (StringUtils.equalsIgnoreCase(documentId, usersList.getName())) { + restrictedUsers = usersList; + break; + } + } + + // Remove group from document, and delete it ! + if (restrictedUsers != null) { + documentEntity.removeRestrictedList(restrictedUsers); + getCoselmarUserGroupDao().delete(restrictedUsers); + } + } documentEntity.clearKeywords(); documentEntity.addAllKeywords(document.getKeywords()); diff --git a/coselmar-ui/src/main/webapp/views/documents/newdocument.html b/coselmar-ui/src/main/webapp/views/documents/newdocument.html index e4d73c3..96da0c7 100644 --- a/coselmar-ui/src/main/webapp/views/documents/newdocument.html +++ b/coselmar-ui/src/main/webapp/views/documents/newdocument.html @@ -112,7 +112,7 @@ </select> <div ng-if="document.privacy == 'RESTRICTED'"> - {{ 'common.message.notYetAvailable' | translate }} + {{ 'document.metadata.restricted.info' | translate }} <ui-select multiple ng-model="document.authorizedUsers" theme="bootstrap" reset-search-input="true" -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.