ModelTypeClassifier.java
package com.kapil.verbametrics.ml.classifiers;
import com.kapil.verbametrics.ml.config.MLModelProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* Classifier for validating and managing machine learning model types.
* Handles validation of supported model types and required fields for each type.
*
* @author Kapil Garg
*/
@Component
public class ModelTypeClassifier {
private final MLModelProperties properties;
@Autowired
public ModelTypeClassifier(MLModelProperties properties) {
this.properties = properties;
}
/**
* Validates if a model type is supported.
*
* @param modelType the model type to validate
* @return true if the model type is supported
*/
public boolean isValidModelType(String modelType) {
if (modelType == null) {
return false;
}
String normalized = modelType.toUpperCase();
return properties.getSupportedModelTypes().stream()
.map(String::toUpperCase)
.anyMatch(s -> s.equals(normalized));
}
/**
* Gets the required fields for a model type.
*
* @param modelType the model type
* @return list of required fields
*/
public List<String> getRequiredFields(String modelType) {
String key = modelType == null ? "" : modelType.toUpperCase();
return properties.getRequiredFields().getOrDefault(key, List.of());
}
}