NOC.java

package codeanalyzer.metric;

import codeanalyzer.reader.SourceFileReader;

import java.util.List;
import java.util.function.Predicate;

import java.io.IOException;


public class NOC extends Metric {

    public NOC(String label, SourceFileReader fileReader) {
        super(label, fileReader);
    }

    public int calculateWithRegex(String filepath) throws IOException {
		String sourceCode = fileReader.readFileIntoString(filepath);
		return regexCalculator(sourceCode, ".*\\s*class\\s+.*");
	}

    public int calculateWithStringComparison(String filepath) throws IOException {
        List<String> sourceCodeList = fileReader.readFileIntoList(filepath);
        Predicate<String> condition
            = line -> (line.startsWith("class ") || line.contains(" class "))
                      && line.contains("{");
        return strcompCalculator(sourceCodeList, condition);
	}
}