private boolean parse(DecoratorContext context) {
Measure lastCommits = context.getMeasure(CoreMetrics.SCM_LAST_COMMIT_DATETIMES_BY_LINE);
Measure hitsByLineMeasure = context.getMeasure(getCoverageLineHitsDataMetric());
if (lastCommits != null && lastCommits.hasData() && hitsByLineMeasure != null && hitsByLineMeasure.hasData()) {
Map<Integer, Date> datesByLine = KeyValueFormat.parseIntDateTime(lastCommits.getData());
Map<Integer, Integer> hitsByLine = parseCountByLine(hitsByLineMeasure);
Map<Integer, Integer> conditionsByLine = parseCountByLine(context.getMeasure(getConditionsByLineMetric()));
Map<Integer, Integer> coveredConditionsByLine = parseCountByLine(context.getMeasure(getCoveredConditionsByLineMetric()));
reset();
for (Map.Entry<Integer, Integer> entry : hitsByLine.entrySet()) {
int lineId = entry.getKey();
int hits = entry.getValue();
int conditions = (Integer) ObjectUtils.defaultIfNull(conditionsByLine.get(lineId), 0);
int coveredConditions = (Integer) ObjectUtils.defaultIfNull(coveredConditionsByLine.get(lineId), 0);
Date date = datesByLine.get(lineId);
for (PeriodStruct struct : structs) {
struct.analyze(date, hits, conditions, coveredConditions);
}
}
return true;
}
return false;
}