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

import ma.glasnost.orika.MappingContext;
import ma.glasnost.orika.converter.BidirectionalConverter;
import ma.glasnost.orika.metadata.Type;

public class BooleanInversionConverter extends BidirectionalConverter<Boolean, Boolean> {
   public Boolean convertTo(Boolean source, Type<Boolean> destinationType, MappingContext mappingContext) {
      return this.inverseBooleanValue(source);
   }

   public Boolean convertFrom(Boolean source, Type<Boolean> destinationType, MappingContext mappingContext) {
      return this.inverseBooleanValue(source);
   }

   private Boolean inverseBooleanValue(Boolean source) {
      return source == null ? source : !source;
   }
}
