public String process()

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