private static void fillFilterFromLocator()

in rest-api/src/jetbrains/buildServer/server/rest/data/changeLog/ChangeLogBeanCollector.java [215:266]


  private static void fillFilterFromLocator(@NotNull ChangeLogFilter filter, @NotNull Locator locator) {
    filter.setShowGraph(true);
    filter.setBuildsActiveDays(-1);
    if (locator.isAnyPresent(INCLUDE_BUILDS)) {
      filter.setShowBuilds(locator.getSingleDimensionValueAsStrictBoolean(INCLUDE_BUILDS, false));
    }
    if (locator.isAnyPresent(COMMENT)) {
      ValueCondition condition = ParameterCondition.createValueCondition(locator.getSingleDimensionValue(COMMENT));
      if (condition != null) {
        filter.setCommentRequirement(convertConditionToRequirement(condition));
      }
    }
    if (locator.isAnyPresent(PATH)) {
      ValueCondition condition = ParameterCondition.createValueCondition(locator.getSingleDimensionValue(PATH));
      if (condition != null) {
        filter.setPathRequirement(convertConditionToRequirement(condition));
      }
    }
    if (locator.isAnyPresent(REVISION)) {
      ValueCondition condition = ParameterCondition.createValueCondition(locator.getSingleDimensionValue(REVISION));
      if (condition != null) {
        filter.setRevisionRequirement(convertConditionToRequirement(condition));
      }
    }
    // Set from and to before setting page as otherwise page will be overwritten
    if (locator.isAnyPresent(FROM_BUILD_NUMBER)) {
      filter.setFrom(locator.getSingleDimensionValue(FROM_BUILD_NUMBER));
    }
    if (locator.isAnyPresent(TO_BUILD_NUMBER)) {
      filter.setTo(locator.getSingleDimensionValue(TO_BUILD_NUMBER));
    }
    if (locator.isAnyPresent(PAGE)) {
      Long page = locator.getSingleDimensionValueAsLong(PAGE);
      filter.setPage(page == null ? 0 : page.intValue());
    }
    if (locator.isAnyPresent(PAGE_SIZE)) {
      Long pageSize = locator.getSingleDimensionValueAsLong(PAGE_SIZE);
      filter.setRecordsPerPage(pageSize == null ? 0 : pageSize.intValue());
    }
    if (locator.isAnyPresent(VCS_USERNAME)) {
      filter.setUserId("vcs:" + locator.getSingleDimensionValue(VCS_USERNAME));
    }
    if (locator.isAnyPresent(USER)) {
      Locator userLocator = Locator.locator(locator.lookupSingleDimensionValue(USER));
      assert userLocator != null; // make IDEA happy
      if (!userLocator.isAnyPresent("id") || userLocator.getUnusedDimensions().size() > 1) {
        throw new BadRequestException("User lookup is supported by id only.");
      }
      // at this point user dimension looks like "id:XXX" and that is exactly how filter wants it, so just pass it directly
      filter.setUserId(locator.getSingleDimensionValue(USER));
    }
  }