package com.airlock.iam.common.infrastructure.mapper;

import ma.glasnost.orika.MapperFactory;
import ma.glasnost.orika.converter.ConverterFactory;

public class CommonOrikaConverters {
   public CommonOrikaConverters(MapperFactory factory) {
      this.configure(factory);
   }

   private void configure(MapperFactory factory) {
      ConverterFactory converterFactory = factory.getConverterFactory();
      converterFactory.registerConverter(new InstantToDateConverter());
      converterFactory.registerConverter(new DateToLocalDateMapper());
      converterFactory.registerConverter(new LocalDateTimeToDateMapper());
      converterFactory.registerConverter(new DateToObjectConverter());
      converterFactory.registerConverter(new LockReasonConverter());
      converterFactory.registerConverter(new OptionalConverter());
      converterFactory.registerConverter(new ListToObjectConverter());
      converterFactory.registerConverter(new MapToObjectConverter());
      converterFactory.registerConverter(ConverterId.BOOLEAN_INVERSION_CONVERTER.getId(), new BooleanInversionConverter());
      converterFactory.registerConverter(ConverterId.LOWERCASE_ENUM_CONVERTER.getId(), new LowercaseEnumConverter());
   }
}
