public RuleBasedScorecard assembleRuleBasedScorecard()

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;
    }