
package de.ivu.elect.business.stimmeingabe.entity;

import java.text.NumberFormat;

import static java.util.Objects.nonNull;

public enum StimmeingabePlausiKonfigurationCustomDataKategorie {

  ANZAHL {
    @Override
    public String formatParameterValue(Object parameterValue, StimmeingabePlausiKonfigurationPropertyContext context) {
      if (nonNull(parameterValue)) {
        return NumberFormat.getInstance().format((Long) parameterValue);
      }
      return "";
    }
  },

  ANTEIL {
    @Override
    public String formatParameterValue(Object parameterValue, StimmeingabePlausiKonfigurationPropertyContext context) {
      if (nonNull(parameterValue)) {
        Double doubleValue = (Double) parameterValue;
        if (doubleValue.compareTo(1D) > 0) {
          return NumberFormat.getInstance().format(doubleValue);
        }

        if (doubleValue.compareTo(1D) < 0) {
          return NumberFormat.getPercentInstance().format(doubleValue);
        }
      }
      return "";
    }
  },

  KOMPLEXER_TYP {
    @Override
    public String formatParameterValue(Object parameterValue, StimmeingabePlausiKonfigurationPropertyContext context) {
      if (parameterValue instanceof StimmeingabePlausiKonfigurationCustomDataKategorieKomplexerTyp) {
        StimmeingabePlausiKonfigurationCustomDataKategorieKomplexerTyp kategorieKomplexerTypValue
            = (StimmeingabePlausiKonfigurationCustomDataKategorieKomplexerTyp) parameterValue;
        return kategorieKomplexerTypValue.formatParameterValue(context);
      }
      return "";
    }
  }
  ;

  private StimmeingabePlausiKonfigurationCustomDataKategorie() {
  }

  public abstract String formatParameterValue(Object parameterValue, StimmeingabePlausiKonfigurationPropertyContext context);
}
