in service/src/main/java/org/apache/fineract/cn/customer/catalog/internal/command/handler/CatalogAggregate.java [113:145]
public String process(final ChangeFieldCommand changeFieldCommand) {
final Optional<CatalogEntity> optionalCatalog = this.catalogRepository.findByIdentifier(changeFieldCommand.catalogIdentifier());
if (optionalCatalog.isPresent()) {
final Optional<FieldEntity> optionalField =
this.fieldRepository.findByCatalogAndIdentifier(optionalCatalog.get(), changeFieldCommand.field().getIdentifier());
if (optionalField.isPresent()) {
final FieldEntity fieldEntity = optionalField.get();
fieldEntity.setOptions(null);
final FieldEntity temporarySavedField = this.fieldRepository.saveAndFlush(fieldEntity);
this.optionRepository.deleteByField(temporarySavedField);
this.optionRepository.flush();
final Field field = changeFieldCommand.field();
temporarySavedField.setLabel(field.getLabel());
temporarySavedField.setHint(field.getHint());
temporarySavedField.setDescription(field.getDescription());
temporarySavedField.setMandatory(field.getMandatory());
if (field.getOptions() != null) {
temporarySavedField.setOptions(
field.getOptions()
.stream()
.map(option -> OptionMapper.map(temporarySavedField, option))
.collect(Collectors.toList())
);
}
this.fieldRepository.save(temporarySavedField);
return changeFieldCommand.field().getIdentifier();
}
}
return null;
}