in scorecard-plugin/src/main/java/org/apache/fineract/portfolio/creditscorecard/service/CreditScorecardAssemblerImpl.java [91:135]
public RuleBasedScorecard assembleRuleBasedScorecard(final JsonElement element) {
final RuleBasedScorecard ruleBasedScorecard = new RuleBasedScorecard();
final List<FeatureCriteriaScore> criteriaScores = new ArrayList<>();
if (element.isJsonObject()) {
final JsonObject topLevelJsonElement = element.getAsJsonObject();
final String dateFormat = this.fromApiJsonHelper.extractDateFormatParameter(topLevelJsonElement);
final Locale locale = this.fromApiJsonHelper.extractLocaleParameter(topLevelJsonElement);
final String rbScorecardParameterName = "ruleBasedScorecard";
if (topLevelJsonElement.has(rbScorecardParameterName) && topLevelJsonElement.get(rbScorecardParameterName).isJsonObject()) {
final JsonObject rbScorecardElement = topLevelJsonElement.getAsJsonObject(rbScorecardParameterName);
final String criteriaScoresParameterName = "criteriaScores";
if (rbScorecardElement.has(criteriaScoresParameterName)
&& rbScorecardElement.get(criteriaScoresParameterName).isJsonArray()) {
final JsonArray array = rbScorecardElement.get(criteriaScoresParameterName).getAsJsonArray();
for (int i = 0; i < array.size(); i++) {
final JsonObject criteriaScoreElement = array.get(i).getAsJsonObject();
final Long featureId = this.fromApiJsonHelper.extractLongNamed("featureId", criteriaScoreElement);
final String value = this.fromApiJsonHelper.extractStringNamed("value", criteriaScoreElement);
final LoanProductScorecardFeature lpScorecardFeature = this.productFeatureRepository
.findOneWithNotFoundDetection(featureId);
criteriaScores.add(new FeatureCriteriaScore(lpScorecardFeature, value));
}
} else {
return null;
}
}
}
ruleBasedScorecard.setCriteriaScores(criteriaScores);
return ruleBasedScorecard;
}