private boolean isReviewerInList(
      ProtocolReviewerBean reviewer, List<CommitteeMembership> actualReviewers, int reviewerIndex) {
    boolean valid = false;
    for (CommitteeMembership member : actualReviewers) {
      if (!StringUtils.isBlank(member.getPersonId())) {
        if (StringUtils.equals(reviewer.getPersonId(), member.getPersonId())) {
          valid = true;
          break;
        }
      } else {
        if (StringUtils.equals(reviewer.getPersonId(), member.getRolodexId().toString())) {
          valid = true;
          break;
        }
      }
    }

    if (!valid) {
      String parameterName =
          Constants.PROTOCOL_SUBMIT_ACTION_PROPERTY_KEY
              + ".reviewer["
              + reviewerIndex
              + "].reviewerUnavailable";
      this.reportError(
          parameterName,
          KeyConstants.ERROR_PROTOCOL_REVIEWER_NOT_AVAILABLE,
          reviewer.getFullName());
    }

    return valid;
  }
  /**
   * This method tests if the fields for a given reviewer have legal values.
   *
   * @param reviewer
   * @param reviewerIndex - the index of the reviewer in the list of reviewers that was sent to the
   *     client
   */
  private boolean isReviewerValid(ProtocolReviewerBean reviewer, int reviewerIndex) {
    boolean isValid = true;
    String reviewerTypeCode = reviewer.getReviewerTypeCode();

    String parameterName =
        Constants.PROTOCOL_SUBMIT_ACTION_PROPERTY_KEY
            + ".reviewer["
            + reviewerIndex
            + "].reviewerTypeCode";

    // test if type code is valid
    if (!StringUtils.isBlank(reviewerTypeCode) && isReviewerTypeInvalid(reviewerTypeCode)) {
      isValid = false;
      this.reportError(
          parameterName, KeyConstants.ERROR_PROTOCOL_REVIEWER_TYPE_INVALID, reviewer.getFullName());
    }

    return isValid;
  }