package br.ufmg.dcc.labsoft.aserg.modularitycheck.distribution.control.metrics; import java.util.HashMap; import java.util.Map; import br.ufmg.dcc.labsoft.aserg.modularitycheck.distribution.control.DistributionMap; public class TopicSpread extends AbstractSemanticTopicMetric { public TopicSpread(DistributionMap distributionMap, int numClusters) { super(distributionMap, numClusters); } private double calculate(int topicIndex) { double spread = 0D; for (String packageName : this.distributionMap.getPackages()) spread += (this.calculateTopicTouch(topicIndex, packageName) > 0) ? 1 : 0; return spread; } public Map<String, Double> calculate() { Map<String, Double> metricMapping = new HashMap<String, Double>(); for (int topicIndex = 0; topicIndex < this.numClusters; topicIndex++) metricMapping.put(String.valueOf(topicIndex), calculate(topicIndex)); return metricMapping; } }