/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.uff.ic.oceano.core.tools.metrics.extractors.java;
import br.uff.ic.oceano.core.tools.metrics.MetricException;
import br.uff.ic.oceano.core.model.MetricValue;
import br.uff.ic.oceano.core.model.Revision;
import br.uff.ic.oceano.core.tools.metrics.extractors.AbstractMetricExtractor;
import br.uff.ic.oceano.core.tools.revision.JavaRevisionTool;
import br.uff.ic.oceano.ostra.controle.Constantes;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.Reader;
import java.util.logging.Level;
import java.util.logging.Logger;
import javancss.Javancss;
/**
*
* @author Daniel
*/
public class LinesOfCodeExtractorJava extends AbstractMetricExtractor {
private JavaRevisionTool revTool = new JavaRevisionTool();
public LinesOfCodeExtractorJava() {
}
/**
*
* @param revision
* @return
* @throws MetricException
*/
@Override
public MetricValue extractMetric(Revision revision) throws MetricException {
try {
double LOC = 0;
for (String filePath : revTool.getSourceFiles(revision)) {
LOC += extractMetric(revision, filePath).getDoubleValue();
}
return createMetricValue(revision, LOC);
} catch (Exception ex) {
throw new MetricException(ex);
}
}
/**
*
* @param revision
* @param path
* @return
* @throws MetricException
*/
@Override
public MetricValue extractMetric(Revision revision, String path) throws MetricException {
try {
Reader reader = new BufferedReader(new FileReader(path));
final Javancss javancss = new Javancss(reader);
MetricValue result = createMetricValue(revision, javancss.getLOC());
//explicit release file reader
reader.close();
return result;
} catch (Exception ex) {
throw new MetricException(ex);
}
}
}