SourceCodeAnalyzer.java

package codeanalyzer.analyzer;

import codeanalyzer.calculator.Calculator;

import java.util.List;
import java.util.Map;
import java.util.ArrayList;
import java.util.HashMap;

import java.io.IOException;


public class SourceCodeAnalyzer {
    private String filepath;
    private List<Calculator> calculators;

    public SourceCodeAnalyzer(String filepath) {
        this.filepath = filepath;
        resetCalculators();
    }

    public void resetCalculators() {
        calculators = new ArrayList<>();
    }

    public void addCalculator(Calculator calculator) {
        calculators.add(calculator);
    }

    public Map<String, Integer> calculateMetrics() throws IOException {
        Map<String, Integer> metrics = new HashMap<>();

        for (Calculator calculator : calculators) {
            metrics.put(calculator.getLabel(), calculator.calculate(filepath));
        }

        return metrics;
    }
}