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 621be68a7527c4bd490926a33e83e8506bb342ae Author: Yannick Martel <martel@©odelutin.com> Date: Wed Feb 4 15:34:25 2015 +0100 fix case of remove related and closing 'restricted' documents and impact on document access --- .../coselmar/services/v1/QuestionsWebService.java | 82 +++++++++++++++++----- 1 file changed, 66 insertions(+), 16 deletions(-) diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/QuestionsWebService.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/QuestionsWebService.java index 9e3bdcc..49ab602 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/QuestionsWebService.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/QuestionsWebService.java @@ -133,7 +133,7 @@ public class QuestionsWebService extends CoselmarWebServiceSupport { questionEntity.setPrivacy(realPrivacy); // On creation, Status is Open - questionEntity.setStatus(Status.OPEN); + questionEntity.setStatus(Status.IN_PROGRESS); // Manage Dates : submission & deadline Date submissionDate = question.getSubmissionDate(); @@ -573,6 +573,9 @@ public class QuestionsWebService extends CoselmarWebServiceSupport { // it could be a reopen ... } else if (questionEntity.getClosingDate() != null && !Lists.newArrayList(Status.CLOSED.name(), Status.ADJOURNED.name()).contains(status)) { questionEntity.setClosingDate(null); + // XXX ymartel 2015/02/04 : Should we do ? +// questionEntity.setConclusion(null); +// questionEntity.clearClosingDocuments(); } } else { @@ -669,40 +672,87 @@ public class QuestionsWebService extends CoselmarWebServiceSupport { } - // Documents on init + // Manage Documents list Set<DocumentBean> relatedDocuments = question.getRelatedDocuments(); + Set<Document> documents = null; + + if (relatedDocuments != null && !relatedDocuments.isEmpty()) { + documents = retrieveDocuments(relatedDocuments); + } + + // In edition : make a diff, remove restricted list for removed documents, clear documents + if (inEdition) { + Set<Document> presentDocuments = questionEntity.getRelatedDocuments(); + + if (documents == null) { + for (Document presentDocument : presentDocuments) { + if (presentDocument.getPrivacy() == Privacy.RESTRICTED) { + presentDocument.removeRestrictedList(participantGroup); + } + } + questionEntity.clearRelatedDocuments(); + } else { + for (Document presentDocument : presentDocuments) { + if (!documents.contains(presentDocument) && presentDocument.getPrivacy() == Privacy.RESTRICTED) { + presentDocument.removeRestrictedList(participantGroup); + } + } + questionEntity.clearRelatedDocuments(); + } + } + if (relatedDocuments != null && !relatedDocuments.isEmpty()) { - Set<Document> documents = retrieveDocuments(relatedDocuments); // Manage restriction list for document with Privacy.RESTRICTED for (Document document : documents) { if (document.getPrivacy() == Privacy.RESTRICTED) { document.addRestrictedList(participantGroup); } } - - questionEntity.clearRelatedDocuments(); questionEntity.addAllRelatedDocuments(documents); - } else if (inEdition) { - questionEntity.clearRelatedDocuments(); } + questionEntity.setConclusion(question.getConclusion()); - // Documents on init - Set<DocumentBean> closingDocuments = question.getClosingDocuments(); - if (closingDocuments != null && !closingDocuments.isEmpty()) { - Set<Document> documents = retrieveDocuments(closingDocuments); + // Closing documents : here we re-go + Set<DocumentBean> closingDocumentBeans = question.getClosingDocuments(); + + Set<Document> closingDocuments = null; + if (closingDocumentBeans != null && !closingDocumentBeans.isEmpty()) { + closingDocuments = retrieveDocuments(closingDocumentBeans); + } + + // In edition : make a diff, remove restricted list for removed closing documents, clear closing documents + if (inEdition) { + Set<Document> presentClosingDocuments = questionEntity.getClosingDocuments(); + + if (closingDocuments == null) { + for (Document presentClosingDocument : presentClosingDocuments) { + if (presentClosingDocument.getPrivacy() == Privacy.RESTRICTED) { + presentClosingDocument.removeRestrictedList(participantGroup); + } + } + questionEntity.clearClosingDocuments(); + + } else { + for (Document presentClosingDocument : presentClosingDocuments) { + if (!closingDocuments.contains(presentClosingDocument) && presentClosingDocument.getPrivacy() == Privacy.RESTRICTED) { + presentClosingDocument.removeRestrictedList(participantGroup); + } + } + questionEntity.clearClosingDocuments(); + } + } + + if (closingDocuments != null) { // Manage restriction list for document with Privacy.RESTRICTED - for (Document document : documents) { + for (Document document : closingDocuments) { if (document.getPrivacy() == Privacy.RESTRICTED) { document.addRestrictedList(participantGroup); } } - questionEntity.clearClosingDocuments(); - questionEntity.addAllClosingDocuments(documents); - } else if (inEdition) { - questionEntity.clearClosingDocuments(); + questionEntity.addAllClosingDocuments(closingDocuments); } commit(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.