Skip to content

Commit

Permalink
Hopefully fixed certification "Reviewers" and "Reviewed by" issues.
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Apr 21, 2017
1 parent 983fa5d commit 0e86b29
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 26 deletions.
Expand Up @@ -299,7 +299,7 @@ private List<IColumn<CertCaseDto, String>> initColumns() {
columns.add(column);
}

column = new PropertyColumn(createStringResource("PageCertCampaign.table.reviewers"), CertCaseDto.F_REVIEWERS);
column = new PropertyColumn(createStringResource("PageCertCampaign.table.reviewers"), CertCaseDto.F_CURRENT_REVIEWERS);
columns.add(column);

column = new PropertyColumn(createStringResource("PageCertCampaign.table.reviewedAt"), CertCaseDto.F_REVIEWED_AT);
Expand Down
Expand Up @@ -29,9 +29,7 @@

import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;

/**
* DTO for displaying cases as part of certification campaign information.
Expand All @@ -44,50 +42,63 @@
public class CertCaseDto extends CertCaseOrWorkItemDto {

public static final String F_REMEDIED_AT = "remediedAt";
public static final String F_REVIEWERS = "reviewers";
public static final String F_CURRENT_REVIEWERS = "currentReviewers";
public static final String F_REVIEWED_AT = "reviewedAt";
public static final String F_REVIEWED_BY = "reviewedBy";
public static final String F_COMMENTS = "comments";
public static final String F_CURRENT_RESPONSE_STAGE_NUMBER = "currentResponseStageNumber";

private String allReviewers;
private List<String> reviewerNames = new ArrayList<>();
private List<String> comments = new ArrayList<>();
private final List<String> currentReviewers = new ArrayList<>();
private final List<String> reviewedBy = new ArrayList<>();
private final List<String> comments = new ArrayList<>();
private final String noReviewersLabel;

public CertCaseDto(AccessCertificationCaseType _case, PageBase page, Task task, OperationResult result) {
CertCaseDto(AccessCertificationCaseType _case, PageBase page, Task task, OperationResult result) {
super(_case, page);
List<String> allReviewersNames = new ArrayList<>();
Map<String, String> names = new HashMap<>();
for (AccessCertificationWorkItemType workItem : _case.getWorkItem()) {
if (StringUtils.isNotEmpty(WorkItemTypeUtil.getComment(workItem))) {
comments.add(WorkItemTypeUtil.getComment(workItem));
}
boolean hasResponse = hasResponse(workItem);
for (ObjectReferenceType reviewerRef : workItem.getAssigneeRef()) {
PrismObject<UserType> reviewerObject = WebModelServiceUtils.resolveReferenceRaw(reviewerRef, page, task, result);
String reviewerName = reviewerObject != null ? WebComponentUtil.getName(reviewerObject) : reviewerRef.getOid();
allReviewersNames.add(reviewerName);
if (hasResponse) {
reviewerNames.add(reviewerName);
if (hasResponse(workItem) && workItem.getPerformerRef() != null) {
reviewedBy.add(getName(workItem.getPerformerRef(), page, names, task, result));
}
for (ObjectReferenceType assigneeRef : workItem.getAssigneeRef()) {
if (workItem.getCloseTimestamp() == null
&& java.util.Objects.equals(workItem.getStageNumber(), _case.getStageNumber())) {
currentReviewers.add(getName(assigneeRef, page, names, task, result));
}
}
}
if (allReviewersNames.isEmpty()) {
allReviewers = page.getString("PageCertCampaign.noReviewers");
} else {
allReviewers = StringUtils.join(allReviewersNames, ", ");
}
noReviewersLabel = page.getString("PageCertCampaign.noReviewers");
}

private boolean hasResponse(AccessCertificationWorkItemType workItem) {
private String getName(ObjectReferenceType ref, PageBase page,
Map<String, String> names, Task task, OperationResult result) {
if (ref == null || ref.getOid() == null) {
return null; // shouldn't occur
}
return names.computeIfAbsent(ref.getOid(), oid -> {
PrismObject<UserType> reviewerObject = WebModelServiceUtils.resolveReferenceRaw(ref, page, task, result);
return reviewerObject != null ? WebComponentUtil.getName(reviewerObject) : ref.getOid();
});
}

private boolean hasResponse(AccessCertificationWorkItemType workItem) {
return workItem.getOutput() != null && (workItem.getOutput().getOutcome() != null || !StringUtils.isEmpty(workItem.getOutput().getComment()));
}

public String getReviewers() {
return allReviewers;
@SuppressWarnings("unused")
public String getCurrentReviewers() {
if (currentReviewers.isEmpty()) {
return noReviewersLabel;
} else {
return StringUtils.join(currentReviewers, ", ");
}
}

public String getReviewedBy() {
return StringUtils.join(reviewerNames, ", ");
return StringUtils.join(reviewedBy, ", ");
}

public String getComments() {
Expand All @@ -110,6 +121,7 @@ public AccessCertificationResponseType getOverallOutcome() {
return OutcomeUtils.fromUri(getCertCase().getOutcome());
}

@SuppressWarnings("unused")
public Integer getCurrentResponseStageNumber() {
return getCertCase().getStageNumber();
}
Expand Down

0 comments on commit 0e86b29

Please sign in to comment.