package com.airlock.iam.base.infrastructure.db;

import com.airlock.iam.elog.api.ELogger;
import com.airlock.iam.elog.api.ELoggerFactory;
import com.airlock.iam.elog.api.LogTypes;
import jakarta.annotation.Nullable;
import java.util.OptionalDouble;
import org.apache.commons.lang3.StringUtils;

public final class DbDoubleConverter {
   private static final ELogger LOG = ELoggerFactory.getLogger(DbDoubleConverter.class);

   private DbDoubleConverter() {
      throw new AssertionError();
   }

   public static OptionalDouble parseDouble(@Nullable String d) {
      if (StringUtils.isBlank(d)) {
         return OptionalDouble.empty();
      }

      try {
         return OptionalDouble.of(Double.parseDouble(d));
      } catch (NumberFormatException e) {
         LOG.warn(LogTypes.ILLEGAL_ARGUMENT, "Unable to parse double; ignoring: " + e.getMessage());
         return OptionalDouble.empty();
      }
   }

   public static String toString(double d) {
      return Double.toString(d);
   }
}
