ConfigurationServiceImpl.java

package fr.avenirsesr.portfolio.api.domain.service;

import fr.avenirsesr.portfolio.api.domain.model.TraceConfigurationInfo;
import fr.avenirsesr.portfolio.api.domain.model.enums.EConfiguration;
import fr.avenirsesr.portfolio.api.domain.port.input.ConfigurationService;
import fr.avenirsesr.portfolio.api.domain.port.output.repository.ConfigurationRepository;
import fr.avenirsesr.portfolio.api.infrastructure.adapter.model.ConfigurationEntity;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Slf4j
@AllArgsConstructor
@Service
public class ConfigurationServiceImpl implements ConfigurationService {
  private final ConfigurationRepository configurationRepository;

  @Override
  public TraceConfigurationInfo getTraceConfiguration() {
    List<ConfigurationEntity> configurationEntities =
        configurationRepository.getTraceConfiguration();

    int maxDayRemaining = 0, maxDayRemainingWarning = 0, maxDayRemainingCritical = 0;

    for (ConfigurationEntity configurationEntity : configurationEntities) {
      switch (EConfiguration.valueOf(configurationEntity.getName())) {
        case EConfiguration.TRACE_MAX_DAY_REMAINING_NORMAL:
          maxDayRemaining = Integer.parseInt(configurationEntity.getValue());
          break;
        case EConfiguration.TRACE_MAX_DAY_REMAINING_WARNING:
          maxDayRemainingWarning = Integer.parseInt(configurationEntity.getValue());
          break;
        case EConfiguration.TRACE_MAX_DAY_REMAINING_CRITICAL:
          maxDayRemainingCritical = Integer.parseInt(configurationEntity.getValue());
          break;
      }
    }

    return new TraceConfigurationInfo(
        maxDayRemaining, maxDayRemainingWarning, maxDayRemainingCritical);
  }
}