if (command.hasParameter(InterestRateChartSlabApiConstants.incentivesParamName)) {
final JsonArray array = command.arrayOfParameterNamed(InterestRateChartSlabApiConstants.incentivesParamName);
if (array != null) {
for (int i = 0; i < array.size(); i++) {
final JsonObject incentiveElement = array.get(i).getAsJsonObject();
JsonCommand incentivesCommand = JsonCommand.fromExistingCommand(command, incentiveElement);
if (incentivesCommand.parameterExists(InterestIncentiveApiConstants.idParamName)) {
final Long interestIncentiveId = incentivesCommand
.longValueOfParameterNamed(InterestIncentiveApiConstants.idParamName);
final InterestIncentives interestIncentives = chartSlab.findInterestIncentive(interestIncentiveId);
if (interestIncentives == null) {
baseDataValidator.parameter(InterestIncentiveApiConstants.idParamName).value(interestIncentiveId)
.failWithCode("no.interest.incentive.associated.with.id");
} else if (incentivesCommand.parameterExists(deleteParamName)) {
if (chartSlab.removeInterestIncentive(interestIncentives)) {
deleteIncentives.put(idParamName, interestIncentiveId);
}
} else {
interestIncentives.update(incentivesCommand, IncentiveChanges, baseDataValidator, locale);
}
} else {
Integer entityType = incentivesCommand.integerValueOfParameterNamed(entityTypeParamName, locale);
Integer conditionType = incentivesCommand.integerValueOfParameterNamed(conditionTypeParamName, locale);
Integer attributeName = incentivesCommand.integerValueOfParameterNamed(attributeNameParamName, locale);
String attributeValue = incentivesCommand.stringValueOfParameterNamed(attributeValueParamName);
Integer incentiveType = incentivesCommand.integerValueOfParameterNamed(incentiveTypeparamName, locale);
BigDecimal amount = incentivesCommand.bigDecimalValueOfParameterNamed(amountParamName, locale);
InterestIncentivesFields incentivesFields = InterestIncentivesFields.createNew(entityType, attributeName,
conditionType, attributeValue, incentiveType, amount, baseDataValidator);
InterestIncentives incentives = new InterestIncentives(chartSlab, incentivesFields);
chartSlab.addInterestIncentive(incentives);
}