public ItemFilter getFilter()

in rest-api/src/jetbrains/buildServer/server/rest/data/problem/TestFinder.java [236:302]


  public ItemFilter<STest> getFilter(@NotNull final Locator locator) {
    final MultiCheckerFilter<STest> result = new MultiCheckerFilter<>();

    final String nameDimension = locator.getSingleDimensionValue(NAME);
    if (nameDimension != null) {
      ValueCondition nameCondition = ParameterCondition.createValueConditionFromPlainValueOrCondition(nameDimension);
      result.add(item -> nameCondition.matches(item.getName().getAsString()));
    }

    final Boolean currentlyInvestigatedDimension = locator.getSingleDimensionValueAsBoolean(CURRENTLY_INVESTIGATED);
    if (currentlyInvestigatedDimension != null) {
      result.add(item -> {
        //todo: check investigation in affected Project/buildType only, if set
        return FilterUtil.isIncludedByBooleanFilter(currentlyInvestigatedDimension, item.getAllResponsibilities().stream().noneMatch(t -> t.getState().isActive()));
      });
    }

    final Boolean currentlyMutedDimension = locator.getSingleDimensionValueAsBoolean(CURRENTLY_MUTED);
    if (currentlyMutedDimension != null) {
      result.add(item -> {
        //todo: check mute in affected Project/buildType only, if set
        return FilterUtil.isIncludedByBooleanFilter(currentlyMutedDimension, item.getCurrentMuteInfo() != null);
      });
    }

    final String muteAffectedLocatorText = locator.getSingleDimensionValue(MUTE_AFFECTED);
    if (muteAffectedLocatorText != null) {
      Locator muteAffectedLocator = new Locator(muteAffectedLocatorText, "buildType", "project");
      String muteAffectedBuildTypeLocatorText = muteAffectedLocator.getSingleDimensionValue("buildType");
      if (muteAffectedBuildTypeLocatorText != null) {
        final List<SBuildType> buildTypes = myBuildTypeFinder.getBuildTypes(null, muteAffectedBuildTypeLocatorText);
        result.add(item -> {
          CurrentMuteInfo muteInfo = item.getCurrentMuteInfo();
          if (muteInfo == null) return false;
          Set<SProject> mutedInProjects = muteInfo.getProjectsMuteInfo().keySet();
          Set<SBuildType> mutedInBuildTypes = muteInfo.getBuildTypeMuteInfo().keySet();
          for (SBuildType buildType : buildTypes) {
            if (buildType == null) continue;
            if (mutedInBuildTypes.contains(buildType)) return true;
            if (ProjectFinder.isSameOrParent(mutedInProjects, buildType.getProject())) return true;
          }
          return false;
        });
      }
      String muteAffectedProjectLocatorText = muteAffectedLocator.getSingleDimensionValue("project");
      if (muteAffectedProjectLocatorText != null) {
        List<SProject> projects = myProjectFinder.getItems(muteAffectedProjectLocatorText).getEntries();
        result.add(item -> {
          CurrentMuteInfo muteInfo = item.getCurrentMuteInfo();
          if (muteInfo == null) return false;
          Set<SProject> mutedInProjects = muteInfo.getProjectsMuteInfo().keySet();
          return projects.stream().anyMatch(project -> ProjectFinder.isSameOrParent(mutedInProjects, project));
        });
      }
      muteAffectedLocator.checkLocatorFullyProcessed();
    }

    if (locator.isUnused(BUILD)) {
      String buildLocator = locator.getSingleDimensionValue(BUILD);
      if (buildLocator != null) {
        final TreeSet<STest> tests = getTestsByBuilds(buildLocator);
        result.add(tests::contains);
      }
    }

    return result.toItemFilter();
  }