package com.statscollector.gerrit.model;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.joda.time.DateTime;
import com.google.gerrit.extensions.common.ChangeInfo;
public class GerritReviewStats {
private final List<ChangeInfo> noPeerReviewList, onePeerReviewList, twoPlusPeerReviewList,
collabrativeDevelopmentList;
private Map<DateTime, GerritReviewCounts> changeCountHistory = new HashMap<>();
private String status;
private Boolean error;
private GerritReviewStats(final List<ChangeInfo> noPeerReviewList, final List<ChangeInfo> onePeerReviewList,
final List<ChangeInfo> twoPlusPeerReviewList, final List<ChangeInfo> collabrativeDevelopmentList,
final String status, final Boolean error) {
super();
this.noPeerReviewList = noPeerReviewList;
this.onePeerReviewList = onePeerReviewList;
this.twoPlusPeerReviewList = twoPlusPeerReviewList;
this.collabrativeDevelopmentList = collabrativeDevelopmentList;
this.status = status;
this.error = error;
}
public List<ChangeInfo> getNoPeerReviewList() {
return noPeerReviewList;
}
public List<ChangeInfo> getOnePeerReviewList() {
return onePeerReviewList;
}
public List<ChangeInfo> getTwoPlusPeerReviewList() {
return twoPlusPeerReviewList;
}
public List<ChangeInfo> getCollabrativeDevelopmentList() {
return collabrativeDevelopmentList;
}
public int getNoPeerReviewCount() {
return noPeerReviewList.size();
}
public int getOnePeerReviewCount() {
return onePeerReviewList.size();
}
public int getTwoPlusPeerReviewCount() {
return twoPlusPeerReviewList.size();
}
public int getCollabrativeDevelopmentCount() {
return collabrativeDevelopmentList.size();
}
public float getNoPeerReviewPercentage() {
return (float) noPeerReviewList.size() / (float) getTotalReviewsCount();
}
public float getOnePeerReviewPercentage() {
return (float) onePeerReviewList.size() / (float) getTotalReviewsCount();
}
public float getTwoPlusPeerReviewPercentage() {
return (float) twoPlusPeerReviewList.size() / (float) getTotalReviewsCount();
}
public float getCollabrativeDevelopmentPercentage() {
return (float) collabrativeDevelopmentList.size() / (float) getTotalReviewsCount();
}
public int getTotalReviewsCount() {
return getNoPeerReviewCount() + getOnePeerReviewCount() + getTwoPlusPeerReviewCount()
+ getCollabrativeDevelopmentCount();
}
public String getStatus() {
return status;
}
public void setStatus(final String status) {
this.status = status;
}
public Boolean getError() {
return error;
}
public void setError(final Boolean error) {
this.error = error;
}
public Map<DateTime, GerritReviewCounts> getChangeCountHistory() {
return changeCountHistory;
}
public void setChangeCountHistory(final Map<DateTime, GerritReviewCounts> changeCountHistory) {
this.changeCountHistory = changeCountHistory;
}
public static GerritReviewStats buildStatsObjectWithValuesAndStatus(final List<ChangeInfo> noPeerReviewList,
final List<ChangeInfo> onePeerReviewList, final List<ChangeInfo> twoPlusPeerReviewList,
final List<ChangeInfo> collabrativeDevelopmentList, final String status, final Boolean error) {
return new GerritReviewStats(noPeerReviewList, onePeerReviewList, twoPlusPeerReviewList,
collabrativeDevelopmentList, status, error);
}
public static GerritReviewStats buildEmptyStatsObjectWithStatus(final String status, final Boolean error) {
List<ChangeInfo> emptyList = new ArrayList<ChangeInfo>();
return new GerritReviewStats(emptyList, emptyList, emptyList, emptyList, status, error);
}
}