Package com.madgnome.jira.plugins.jirachievements.statistics

Source Code of com.madgnome.jira.plugins.jirachievements.statistics.OnFieldChangedValueStatistic

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

import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.changehistory.ChangeHistoryItem;
import com.atlassian.jira.issue.changehistory.ChangeHistoryManager;
import com.atlassian.jira.issue.search.SearchException;
import com.atlassian.jira.jql.parser.JqlParseException;
import com.atlassian.jira.project.Project;
import com.atlassian.jira.user.util.UserUtil;
import com.madgnome.jira.plugins.jirachievements.data.bean.ProjectComponentKey;
import com.madgnome.jira.plugins.jirachievements.data.bean.ProjectVersionKey;
import com.madgnome.jira.plugins.jirachievements.services.StatisticManager;
import com.madgnome.jira.plugins.jirachievements.services.UserManager;
import com.madgnome.jira.plugins.jirachievements.services.WorkflowConfiguration;
import com.madgnome.jira.plugins.jirachievements.utils.data.IssueSearcher;
import gnu.trove.TObjectIntHashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public abstract class OnFieldChangedValueStatistic extends AbstractStatisticCalculator
{
  private final static Logger logger = LoggerFactory.getLogger(OnFieldChangedValueStatistic.class);

  public OnFieldChangedValueStatistic(IssueSearcher issueSearcher, UserUtil userUtil, ChangeHistoryManager changeHistoryManager, StatisticManager statisticManager, UserManager userManager, WorkflowConfiguration workflowConfiguration)
  {
    super(issueSearcher, userUtil, changeHistoryManager, statisticManager, userManager, workflowConfiguration);
  }

  public void calculate() throws SearchException, JqlParseException
  {
    TObjectIntHashMap<String> resolvedByUser = new TObjectIntHashMap<String>();
    Map<String, TObjectIntHashMap<String>> resolvedByUserByProject = new HashMap<String, TObjectIntHashMap<String>>();
    Map<ProjectComponentKey, TObjectIntHashMap<String>> resolvedByUserByComponent = new HashMap<ProjectComponentKey, TObjectIntHashMap<String>>();
    Map<ProjectVersionKey, TObjectIntHashMap<String>> resolvedByUserByVersion = new HashMap<ProjectVersionKey, TObjectIntHashMap<String>>();

    List<Issue> matchingIssues = searchIssuesMatchingQuery();
    for (Issue issue : matchingIssues)
    {
      List<ChangeHistoryItem> changeHistoryItems = changeHistoryManager.getAllChangeItems(issue);
      for (ChangeHistoryItem changeHistoryItem : changeHistoryItems)
      {
        if (changeHistoryItem.getField().equals(getFieldName()))
        {
          for (String fieldValue : getFieldValues())
          {
            if (changeHistoryItem.getTo().equals(fieldValue))
            {
              Project project = issue.getProjectObject();
              String user = changeHistoryItem.getUser();

              updateUserStatistic(resolvedByUser, user);
              updateProjectStatistic(resolvedByUserByProject, project, user);
              updateComponentsStatistic(resolvedByUserByComponent, project, project.getProjectComponents(), user);
              updateVersionsStatistic(resolvedByUserByVersion, project, issue.getAffectedVersions(), user);
              break;
            }
          }
        }
      }
    }

    saveStatisticsByUser(resolvedByUser);
    saveStatisticsByProject(resolvedByUserByProject);
    saveStatisticsByComponent(resolvedByUserByComponent);
    saveStatisticsByVersion(resolvedByUserByVersion);
  }

  protected abstract List<String> getFieldValues();
  protected abstract String getFieldName();
  protected abstract String getJQLQuery();


  private List<Issue> searchIssuesMatchingQuery() throws JqlParseException, SearchException
  {
    return issueSearcher.searchIssues(getJQLQuery());
  }
}
TOP

Related Classes of com.madgnome.jira.plugins.jirachievements.statistics.OnFieldChangedValueStatistic

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.