ComplexityClassifier.java
package com.kapil.verbametrics.services.classifiers;
import com.kapil.verbametrics.config.ReadabilityAnalysisProperties;
import com.kapil.verbametrics.util.VerbaMetricsConstants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* Classifier for complexity level based on Flesch Reading Ease score.
* Handles the logic for determining complexity levels from scores.
*
* @author Kapil Garg
*/
@Component
public class ComplexityClassifier {
private final ReadabilityAnalysisProperties properties;
@Autowired
public ComplexityClassifier(ReadabilityAnalysisProperties properties) {
this.properties = properties;
}
/**
* Determines the complexity level based on Flesch Reading Ease score.
* Uses configurable thresholds from properties.
*
* @param fleschReadingEase the Flesch Reading Ease score
* @return the complexity level
*/
public String determineComplexity(double fleschReadingEase) {
if (fleschReadingEase >= properties.getComplexityLevels().getVeryEasy()) {
return VerbaMetricsConstants.K_VERY_EASY;
} else if (fleschReadingEase >= properties.getComplexityLevels().getEasy()) {
return VerbaMetricsConstants.K_EASY;
} else if (fleschReadingEase >= properties.getComplexityLevels().getModerate()) {
return VerbaMetricsConstants.K_MODERATE;
} else if (fleschReadingEase >= properties.getComplexityLevels().getDifficult()) {
return VerbaMetricsConstants.K_DIFFICULT;
} else {
return VerbaMetricsConstants.K_VERY_DIFFICULT;
}
}
}