Skip to content

Commit f654f56

Browse files
Fix issue PLAT-843 (#159)
* reviewer and iterative_reviewer role check
1 parent ba846d2 commit f654f56

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

conf/MessageResources.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1351,6 +1351,7 @@ error.com.cronos.onlinereview.actions.editProject.Resource.MissingGroupTerms=* R
13511351
error.com.cronos.onlinereview.actions.editProject.Resource.NotEligible=*Resource is not eligible for the project.
13521352
error.com.cronos.onlinereview.actions.editProject.Resource.NotEligibleByUser=*Resource {0} is not eligible for the project.
13531353
error.com.cronos.onlinereview.actions.editProject.Resource.DuplicateSubmitterRole=*Duplicate submitter role assigned to user
1354+
error.com.cronos.onlinereview.actions.editProject.Resource.DuplicateSubmitterReviewerRole=*The reviewer or iterative reviewer role can not be assigned,<br />because this member has already submitted a solution for the challenge.
13541355
error.com.cronos.onlinereview.actions.editProject.explanation=*Explanation is a required field
13551356
error.com.cronos.onlinereview.actions.editProject.TimelineNotification.NotFound=*There''s no Timeline Notification notification type
13561357
error.com.cronos.onlinereview.actions.editProject.PhaseStartDateNotSet=Start date is required for {0} phase

src/main/java/com/cronos/onlinereview/actions/project/SaveProjectAction.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,11 @@ public class SaveProjectAction extends BaseProjectAction {
173173
*/
174174
private static final long SUBMITTER_ROLE_ID = 1L;
175175

176+
/**
177+
* <p>A <code>Set</code> holding the IDs for reviewer role and iterative reviewer role Ids which do not allow to be assigned to</p>
178+
*/
179+
private static final Set<Long> NO_REVIEWER_ITERATIVE_REVIEWER_ROLE_IDS = new HashSet<Long>(Arrays.asList(21L, 4L));
180+
176181
/**
177182
* The jackson object mapping which is used to deserialize json return from API to domain model.
178183
*/
@@ -1736,6 +1741,40 @@ private void saveResources(HttpServletRequest request,
17361741
}
17371742
}
17381743

1744+
// Validate that no submitters who have submitted for project were assigned as reviewer role or iterative reviewer role
1745+
// 0-index resource is skipped as it is a "dummy" one
1746+
for (int i = 1; i < resourceNames.length; i++) {
1747+
String resourceAction = (String) getModel().get("resources_action", i);
1748+
// check for additions or modifications
1749+
if (!"delete".equalsIgnoreCase(resourceAction)) {
1750+
String handle = resourceNames[i];
1751+
long resourceRoleId = (Long) getModel().get("resources_role", i);
1752+
if (NO_REVIEWER_ITERATIVE_REVIEWER_ROLE_IDS.contains(resourceRoleId)) {
1753+
boolean resourceHasSubmissions = false;
1754+
for (int j = 1; j < resourceNames.length; j++) {
1755+
if (i == j) continue;
1756+
Long otherResourceId = (Long) getModel().get("resources_id", j);
1757+
if (otherResourceId != -1 && handle.equalsIgnoreCase(resourceNames[j])) {
1758+
Resource otherResource = resourceManager.getResource(otherResourceId);
1759+
String otherResourceRoleName = otherResource.getResourceRole().getName();
1760+
if ("Submitter".equals(otherResourceRoleName)) {
1761+
Long[] submissionIds = otherResource.getSubmissions();
1762+
if ((submissionIds != null) && (submissionIds.length > 0)) {
1763+
resourceHasSubmissions = true;
1764+
break;
1765+
}
1766+
}
1767+
}
1768+
}
1769+
if(resourceHasSubmissions) {
1770+
ActionsHelper.addErrorToRequest(request, "resources_name[" + i + "]",
1771+
"error.com.cronos.onlinereview.actions."
1772+
+ "editProject.Resource.DuplicateSubmitterReviewerRole");
1773+
allResourcesValid = false;
1774+
}
1775+
}
1776+
}
1777+
}
17391778

17401779
// No resources are updated if at least one of them is incorrect.
17411780
if (!allResourcesValid) {

0 commit comments

Comments
 (0)