void assign()

in src/main/java/jetbrains/buildServer/investigationsAutoAssigner/processing/BuildProblemsAssigner.java [48:90]


  void assign(final HeuristicResult heuristicsResult,
              final SProject sProject,
              final SBuild sBuild,
              final List<BuildProblem> buildProblems) {
    if (heuristicsResult.isEmpty()) return;

    HashMap<Responsibility, List<BuildProblemInfo>> responsibilityToBuildProblem = new HashMap<>();
    for (BuildProblem buildProblem : buildProblems) {
      Responsibility responsibility = heuristicsResult.getResponsibility(buildProblem);
      responsibilityToBuildProblem.putIfAbsent(responsibility, new ArrayList<>());
      List<BuildProblemInfo> buildProblemList = responsibilityToBuildProblem.get(responsibility);
      buildProblemList.add(buildProblem);
    }

    SProject targetProject =
      myTargetProjectFinder.getPreferredInvestigationProject(sProject, null);
    if (targetProject == null) {
      targetProject = sProject;
    }

    Set<Responsibility> uniqueResponsibilities = responsibilityToBuildProblem.keySet();
    for (Responsibility responsibility : uniqueResponsibilities) {
      if (responsibility != null) {
        LOGGER.info(String.format("Automatically assigning investigation(s) to %s in %s because user %s",
                                  responsibility.getUser().getUsername(),
                                  targetProject.describe(false),
                                  responsibility.getDescription()));
        List<BuildProblemInfo> buildProblemList = responsibilityToBuildProblem.get(responsibility);

        String linkToBuild = myWebLinks.getViewResultsUrl(sBuild);
        myBuildProblemResponsibilityFacade.setBuildProblemResponsibility(
          buildProblemList,
          targetProject.getProjectId(),
          new ResponsibilityEntryEx(
            ResponsibilityEntry.State.TAKEN, responsibility.getUser(), null, Dates.now(),
            responsibility.getAssignDescription(linkToBuild), getRemoveMethod(sBuild.getBuildType()))
        );
        myFavoriteBuildAssigner.markAsFavorite(sBuild, (SUser)responsibility.getUser());

        myStatisticsReporter.reportAssignedInvestigations(buildProblemList.size(), responsibility);
      }
    }
  }