package com.ikokoon.serenity.process.aggregator;
import com.ikokoon.serenity.model.Line;
import com.ikokoon.serenity.model.Method;
import com.ikokoon.serenity.persistence.IDataBase;
/**
* @author Michael Couck
* @since 07.03.10
* @version 01.00
*/
public class MethodAggregator extends AAggregator {
private Method<?, ?> method;
public MethodAggregator(IDataBase dataBase, Method<?, ?> method) {
super(dataBase);
this.method = method;
}
public void aggregate() {
aggregate(method);
setPrecision(method);
dataBase.persist(method);
}
protected void aggregate(Method<?, ?> method) {
logger.debug("Processing method : " + method);
try {
double executed = 0d;
// Collect all the lines that were executed
for (Line<?, ?> line : method.getChildren()) {
if (logger.isDebugEnabled()) {
logger.debug("Line covered : " + line + ", " + line.getCounter());
}
if (line.getCounter() > 0) {
executed++;
}
}
if (method.getChildren().size() > 0) {
// (efference + afference) > 0 ? efference / (efference + afference) : 1;
double coverage = getCoverage(method.getChildren().size(), executed);
method.setCoverage(coverage);
}
} catch (Exception e) {
logger.error("Exception peocessing the method element : " + method.getName(), e);
}
}
}