diff --git a/orcid-core/src/main/java/org/orcid/core/manager/v3/read_only/PeerReviewManagerReadOnly.java b/orcid-core/src/main/java/org/orcid/core/manager/v3/read_only/PeerReviewManagerReadOnly.java index 170ac20e297..95a814993fe 100644 --- a/orcid-core/src/main/java/org/orcid/core/manager/v3/read_only/PeerReviewManagerReadOnly.java +++ b/orcid-core/src/main/java/org/orcid/core/manager/v3/read_only/PeerReviewManagerReadOnly.java @@ -60,7 +60,7 @@ public interface PeerReviewManagerReadOnly { List getPeerReviewMinimizedSummaryList(String orcid, boolean justPublic); - List getPeerReviewSummaryListByGroupId(String orcid, String groupId); + List getPeerReviewSummaryListByGroupId(String orcid, String groupId, boolean justPublic); /** * Generate a grouped list of peer reviews with the given list of peer reviews diff --git a/orcid-core/src/main/java/org/orcid/core/manager/v3/read_only/impl/PeerReviewManagerReadOnlyImpl.java b/orcid-core/src/main/java/org/orcid/core/manager/v3/read_only/impl/PeerReviewManagerReadOnlyImpl.java index 80711fc6207..05697167658 100644 --- a/orcid-core/src/main/java/org/orcid/core/manager/v3/read_only/impl/PeerReviewManagerReadOnlyImpl.java +++ b/orcid-core/src/main/java/org/orcid/core/manager/v3/read_only/impl/PeerReviewManagerReadOnlyImpl.java @@ -132,8 +132,8 @@ public List getPeerReviewMinimizedSummaryList(String * @return the list of peer reviews that belongs to this user */ @Override - public List getPeerReviewSummaryListByGroupId(String orcid, String groupId) { - List peerReviewEntities = peerReviewDao.getPeerReviewsByOrcidAndGroupId(orcid, groupId); + public List getPeerReviewSummaryListByGroupId(String orcid, String groupId, boolean justPublic) { + List peerReviewEntities = peerReviewDao.getPeerReviewsByOrcidAndGroupId(orcid, groupId, justPublic); return jpaJaxbPeerReviewAdapter.toPeerReviewSummary(peerReviewEntities); } /** diff --git a/orcid-core/src/test/java/org/orcid/core/manager/v3/PeerReviewManagerTest.java b/orcid-core/src/test/java/org/orcid/core/manager/v3/PeerReviewManagerTest.java index d91cc735e5d..c5b32b32521 100644 --- a/orcid-core/src/test/java/org/orcid/core/manager/v3/PeerReviewManagerTest.java +++ b/orcid-core/src/test/java/org/orcid/core/manager/v3/PeerReviewManagerTest.java @@ -737,4 +737,24 @@ private PeerReview getPeerReview(String extIdValue) { return peerReview; } + + @Test + public void testGetPeerReviewSummaryListByGroupId() { + List all = peerReviewManager.getPeerReviewSummaryListByGroupId(claimedOrcid, "issn:shared", false); + assertNotNull(all); + assertEquals(3, all.size()); + assertEquals(Long.valueOf(14), all.get(0).getPutCode()); + assertEquals(Visibility.PRIVATE, all.get(0).getVisibility()); + assertEquals(Long.valueOf(15), all.get(1).getPutCode()); + assertEquals(Visibility.LIMITED, all.get(1).getVisibility()); + assertEquals(Long.valueOf(16), all.get(2).getPutCode()); + assertEquals(Visibility.PUBLIC, all.get(2).getVisibility()); + + List onlyPublic = peerReviewManager.getPeerReviewSummaryListByGroupId(claimedOrcid, "issn:shared", true); + assertNotNull(onlyPublic); + assertEquals(1, onlyPublic.size()); + assertEquals(Long.valueOf(16), onlyPublic.get(0).getPutCode()); + assertEquals(Visibility.PUBLIC, onlyPublic.get(0).getVisibility()); + + } } diff --git a/orcid-persistence/src/main/java/org/orcid/persistence/dao/PeerReviewDao.java b/orcid-persistence/src/main/java/org/orcid/persistence/dao/PeerReviewDao.java index d9f454c65c3..54209c92290 100644 --- a/orcid-persistence/src/main/java/org/orcid/persistence/dao/PeerReviewDao.java +++ b/orcid-persistence/src/main/java/org/orcid/persistence/dao/PeerReviewDao.java @@ -43,7 +43,7 @@ public interface PeerReviewDao extends GenericDao { List getPeerReviewsByOrcid(String orcid, boolean justPublic); - List getPeerReviewsByOrcidAndGroupId(String orcid, String groupId); + List getPeerReviewsByOrcidAndGroupId(String orcid, String groupId, boolean justPublic); boolean updateToMaxDisplay(String orcid, Long peerReviewId); diff --git a/orcid-persistence/src/main/java/org/orcid/persistence/dao/impl/PeerReviewDaoImpl.java b/orcid-persistence/src/main/java/org/orcid/persistence/dao/impl/PeerReviewDaoImpl.java index 14778272624..9ce9cf8a5b8 100644 --- a/orcid-persistence/src/main/java/org/orcid/persistence/dao/impl/PeerReviewDaoImpl.java +++ b/orcid-persistence/src/main/java/org/orcid/persistence/dao/impl/PeerReviewDaoImpl.java @@ -61,8 +61,14 @@ public List getPeerReviewsByOrcid(String orcid, boolean justPublic) { } @Override - public List getPeerReviewsByOrcidAndGroupId(String orcid, String groupId) { - TypedQuery query = entityManager.createQuery("from PeerReviewEntity where orcid=:orcid and groupId=:groupId order by completionDate.year desc, completionDate.month desc, completionDate.day desc", PeerReviewEntity.class); + public List getPeerReviewsByOrcidAndGroupId(String orcid, String groupId, boolean justPublic) { + String sqlString = null; + if(justPublic) { + sqlString = "from PeerReviewEntity where orcid=:orcid and groupId=:groupId and visibility='PUBLIC' order by completionDate.year desc, completionDate.month desc, completionDate.day desc"; + } else { + sqlString = "from PeerReviewEntity where orcid=:orcid and groupId=:groupId order by completionDate.year desc, completionDate.month desc, completionDate.day desc"; + } + TypedQuery query = entityManager.createQuery(sqlString, PeerReviewEntity.class); query.setParameter("orcid", orcid); query.setParameter("groupId", groupId); return query.getResultList(); diff --git a/orcid-persistence/src/test/java/org/orcid/persistence/dao/PeerReviewDaoTest.java b/orcid-persistence/src/test/java/org/orcid/persistence/dao/PeerReviewDaoTest.java index 16a2157c2b8..f40ac29e0ee 100644 --- a/orcid-persistence/src/test/java/org/orcid/persistence/dao/PeerReviewDaoTest.java +++ b/orcid-persistence/src/test/java/org/orcid/persistence/dao/PeerReviewDaoTest.java @@ -64,7 +64,8 @@ public void removeAllTest() { @Test public void hasPublicPeerReviewsTest() { assertTrue(dao.hasPublicPeerReviews("0000-0000-0000-0003")); - assertFalse(dao.hasPublicPeerReviews("0000-0000-0000-0002")); + assertTrue(dao.hasPublicPeerReviews("0000-0000-0000-0002")); + assertFalse(dao.hasPublicPeerReviews("0000-0000-0000-0004")); } @Test diff --git a/orcid-test/src/main/resources/data/PeerReviewEntityData.xml b/orcid-test/src/main/resources/data/PeerReviewEntityData.xml index 8d7955ce645..67b76a6412f 100644 --- a/orcid-test/src/main/resources/data/PeerReviewEntityData.xml +++ b/orcid-test/src/main/resources/data/PeerReviewEntityData.xml @@ -340,9 +340,9 @@ completion_day="2" completion_month="2" completion_year="2016" - url="http://peer_review.com/13" + url="http://peer_review.com/14" visibility="PRIVATE" - group_id="issn:0000-0013" + group_id="issn:shared" subject_external_identifiers_json="{"workExternalIdentifierType":"AGR","workExternalIdentifierId":{"content":"peer-review:subject-external-identifier-id#5"}}" subject_name="SELF PRIVATE Peer Review" subject_type="ARTISTIC_PERFORMANCE" @@ -355,4 +355,79 @@ last_modified="2015-01-01 00:00:00.00" display_index="4" /> + + + \ No newline at end of file diff --git a/orcid-web/src/main/java/org/orcid/frontend/web/controllers/PeerReviewsController.java b/orcid-web/src/main/java/org/orcid/frontend/web/controllers/PeerReviewsController.java index 5019aa42b00..c10d573695f 100644 --- a/orcid-web/src/main/java/org/orcid/frontend/web/controllers/PeerReviewsController.java +++ b/orcid-web/src/main/java/org/orcid/frontend/web/controllers/PeerReviewsController.java @@ -92,7 +92,7 @@ public void setLocaleManager(LocaleManager localeManager) { @RequestMapping(value = "/peer-reviews-by-group-id.json", method = RequestMethod.GET) public @ResponseBody List getPeerReviewsJsonByGroupId(@RequestParam("groupId") String groupId, @RequestParam("sortAsc") boolean sortAsc) { - List peerReviewGroups = getPeerReviewsGrouped(peerReviewManager.getPeerReviewSummaryListByGroupId(getEffectiveUserOrcid(), groupId)); + List peerReviewGroups = getPeerReviewsGrouped(peerReviewManager.getPeerReviewSummaryListByGroupId(getEffectiveUserOrcid(), groupId, false)); peerReviewGroups.sort(new PeerReviewGroupComparator(!sortAsc)); return peerReviewGroups; } diff --git a/orcid-web/src/main/java/org/orcid/frontend/web/controllers/PublicProfileController.java b/orcid-web/src/main/java/org/orcid/frontend/web/controllers/PublicProfileController.java index 0fb40021d1f..d80e560b147 100644 --- a/orcid-web/src/main/java/org/orcid/frontend/web/controllers/PublicProfileController.java +++ b/orcid-web/src/main/java/org/orcid/frontend/web/controllers/PublicProfileController.java @@ -614,7 +614,7 @@ private boolean isRecordReadyForIndexing(ProfileEntity profile) { @RequestMapping(value = "/{orcid:(?:\\d{4}-){3,}\\d{3}[\\dX]}/peer-reviews-by-group-id.json", method = RequestMethod.GET) public @ResponseBody List getPeerReviewsJsonByGroupId(@PathVariable("orcid") String orcid, @RequestParam("groupId") String groupId, @RequestParam("sortAsc") boolean sortAsc) { List peerReviewGroups = new ArrayList<>(); - List summaries = peerReviewManagerReadOnly.getPeerReviewSummaryListByGroupId(orcid, groupId); + List summaries = peerReviewManagerReadOnly.getPeerReviewSummaryListByGroupId(orcid, groupId, true); PeerReviews peerReviews = peerReviewManagerReadOnly.groupPeerReviews(summaries, false); for (org.orcid.jaxb.model.v3.release.record.summary.PeerReviewGroup group : peerReviews.getPeerReviewGroup()) { Optional groupIdRecord = groupIdRecordManagerReadOnly.findByGroupId(group.getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getGroupId());