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 66df66b1695b14075986e840fa33b5356c274cb5 Author: Yannick Martel <martel@©odelutin.com> Date: Wed Dec 10 19:12:14 2014 +0100 filter questions list with privacy for an expert user --- .../persistence/entity/QuestionTopiaDao.java | 35 ++++++++++++++++++++++ .../coselmar/services/v1/QuestionsWebService.java | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/coselmar-persistence/src/main/java/fr/ifremer/coselmar/persistence/entity/QuestionTopiaDao.java b/coselmar-persistence/src/main/java/fr/ifremer/coselmar/persistence/entity/QuestionTopiaDao.java new file mode 100644 index 0000000..0d01ed1 --- /dev/null +++ b/coselmar-persistence/src/main/java/fr/ifremer/coselmar/persistence/entity/QuestionTopiaDao.java @@ -0,0 +1,35 @@ +package fr.ifremer.coselmar.persistence.entity; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import fr.ifremer.coselmar.persistence.DaoUtils; + +public class QuestionTopiaDao extends AbstractQuestionTopiaDao<Question> { + + public List<Question> findForExpert(CoselmarUser expert) { + + StringBuilder hqlBuilder = new StringBuilder("SELECT Q FROM " + Question.class.getName() + " Q " + + " INNER JOIN Q.participants CUG "); + + Map<String, Object> args = new HashMap<>(); + + String publicCondition = DaoUtils.getQueryForAttributeEquals("Q", Question.PROPERTY_PRIVACY, args, Privacy.PUBLIC, ""); + + hqlBuilder.append(" WHERE (" + publicCondition + " ) "); + + String privateCondition = DaoUtils.getQueryForAttributeEquals("Q", Question.PROPERTY_PRIVACY, args, Privacy.PRIVATE, ""); + + hqlBuilder.append(" OR (" + privateCondition); + + String userCondition = DaoUtils.andAttributeContains("CUG", CoselmarUserGroup.PROPERTY_MEMBERS, args, expert); + + hqlBuilder.append(userCondition + ")"); + + List<Question> questions = forHql(hqlBuilder.toString(), args).findAll(); + + return questions; + } + +} //QuestionTopiaDao 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 f10b8a3..92706ff 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 @@ -197,7 +197,7 @@ public class QuestionsWebService extends CoselmarWebServiceSupport { questionList = getQuestionDao().forPrivacyEquals(Privacy.PUBLIC).findAll(); } else if (StringUtils.equalsIgnoreCase(CoselmarUserRole.EXPERT.name(), currentUserRole)) { - questionList = getQuestionDao().findAll(); + questionList = getQuestionDao().findForExpert(currentUser); //TODO ymartel : manage privacy for experts } else if (StringUtils.equalsIgnoreCase(CoselmarUserRole.CLIENT.name(), currentUserRole)) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.