Package com.madgnome.jira.plugins.jirachievements.ui

Source Code of com.madgnome.jira.plugins.jirachievements.ui.LeaderBoardVersionTabPanel

package com.madgnome.jira.plugins.jirachievements.ui;

import com.atlassian.crowd.embedded.api.User;
import com.atlassian.jira.avatar.Avatar;
import com.atlassian.jira.avatar.AvatarService;
import com.atlassian.jira.issue.search.SearchProvider;
import com.atlassian.jira.plugin.versionpanel.BrowseVersionContext;
import com.atlassian.jira.plugin.versionpanel.impl.GenericTabPanel;
import com.atlassian.jira.security.JiraAuthenticationContext;
import com.atlassian.jira.util.collect.MapBuilder;
import com.madgnome.jira.plugins.jirachievements.data.ao.StatisticRefEnum;
import com.madgnome.jira.plugins.jirachievements.data.ao.VersionStatistic;
import com.madgnome.jira.plugins.jirachievements.data.services.IProjectVersionStatisticDaoService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class LeaderBoardVersionTabPanel extends GenericTabPanel
{
  private final static Logger logger = LoggerFactory.getLogger(LeaderBoardComponentTabPanel.class);
  private final IProjectVersionStatisticDaoService versionStatisticDaoService;
  private final AvatarService avatarService;

  public LeaderBoardVersionTabPanel(JiraAuthenticationContext authenticationContext, SearchProvider searchProvider, IProjectVersionStatisticDaoService versionStatisticDaoService, AvatarService avatarService)
  {
    super(authenticationContext, searchProvider);
    this.versionStatisticDaoService = versionStatisticDaoService;
    this.avatarService = avatarService;
  }

  @Override
  protected Map<String, Object> createVelocityParams(BrowseVersionContext ctx)
  {
    Map<String, Object> params = super.createVelocityParams(ctx);
    String projectKey = ctx.getProject().getKey();
    String version = ctx.getVersion().getName();
    User user = ctx.getUser();

    try
    {
      List<Map<String, Object>> createdIssueLeaderBoard = retrieveIssueLeaderBoard(projectKey, version, user, StatisticRefEnum.CREATED_ISSUE_COUNT);
      params.put("createdIssueLB", createdIssueLeaderBoard);
      List<Map<String, Object>> resolvedIssueLeaderBoard = retrieveIssueLeaderBoard(projectKey, version, user, StatisticRefEnum.RESOLVED_ISSUE_COUNT);
      params.put("resolvedIssueLB", resolvedIssueLeaderBoard);
      List<Map<String, Object>> testedIssueLeaderBoard = retrieveIssueLeaderBoard(projectKey, version, user, StatisticRefEnum.TESTED_ISSUE_COUNT);
      params.put("testedIssueLB", testedIssueLeaderBoard);
    }
    catch (Exception e)
    {
      logger.error("An error occured while retrieving leaderboard data", e);
      params.put("status", "ERROR");
    }

    return params;
  }

  private List<Map<String, Object>> retrieveIssueLeaderBoard(String projectKey, String version, User user, StatisticRefEnum statisticRefEnum)
  {
    List<VersionStatistic> issueCounts = versionStatisticDaoService.findStatisticsForVersionAndRef(projectKey, version, statisticRefEnum);

    // username
    // avatar url
    // Pour chaque stat
    //    count
    //    percentage (count / total)

    int total = 0;
    for (VersionStatistic versionStatistic : issueCounts)
    {
      total += versionStatistic.getValue();
    }

    List<Map<String, Object>> resolvedIssueLeaderBoard = new ArrayList<Map<String, Object>>();
    for (VersionStatistic versionStatistic : issueCounts)
    {
      URI largeAvatarUrl = avatarService.getAvatarURL(user, versionStatistic.getUserWrapper().getJiraUserName(), Avatar.Size.LARGE);
      URI smallAvatarUrl = avatarService.getAvatarURL(user, versionStatistic.getUserWrapper().getJiraUserName(), Avatar.Size.SMALL);

      Map<String,Object> resolvedIssueUserInfos =
              MapBuilder.<String, Object>newBuilder()
                      .add("username", versionStatistic.getUserWrapper().getJiraUserName())
                      .add("count", versionStatistic.getValue())
                      .add("percentage", Math.round(versionStatistic.getValue() * 100.0d / (double) total))
                      .add("largeAvatarUrl", largeAvatarUrl)
                      .add("smallAvatarUrl", smallAvatarUrl)
                      .toMap();

      resolvedIssueLeaderBoard.add(resolvedIssueUserInfos);

    }

    return resolvedIssueLeaderBoard;
  }
}
TOP

Related Classes of com.madgnome.jira.plugins.jirachievements.ui.LeaderBoardVersionTabPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.