Untitled
unknown
plain_text
3 years ago
3.6 kB
9
Indexable
public class HomeQuoteValidatorUtil {
private static final Comparator<QuoteRequestConfiguration> REQUESTED_CONFIGURATION_COMPARATOR =
Comparator.comparing(c -> c.getContentsCover().getValue());
private static final Comparator<QuoteData> QUOTE_COMPARATOR =
Comparator.comparing(HomeQuoteValidatorUtil::getContentsCover)
.thenComparing(HomeQuoteValidatorUtil::getExcess);
private final AFSProductInformationSerializationHelper productInfoSerializationHelper;
private final Map<String, List<String>> overrideMap;
@Inject
public HomeQuoteValidatorUtil(
final AFSProductInformationSerializationHelper afsProductInformationSerializationHelper,
@Named(QUOTE_VALIDATOR_OVERRIDE_MAP_PROVIDER)
final Map<String, Map<String, List<String>>> homeOverrideMap) {
this.productInfoSerializationHelper = afsProductInformationSerializationHelper;
this.overrideMap = homeOverrideMap.get(InsuranceCategory.IdEnum.HOME.getValue());
}
public AppConstants.ValidatorState validate(
final String quoteData,
final List<QuoteRequestConfiguration> requestedConfigurations) {
InsurerQuote insurerQuote = productInfoSerializationHelper
.deSerialize(quoteData, InsurerQuotes.class)
.get(0);
List<QuoteData> quotes = insurerQuote.getQuoteData();
if (requestedConfigurations.size() != quotes.size()) {
return AppConstants.ValidatorState.Failure;
}
final String insurerId = insurerQuote.getInsurerId();
requestedConfigurations.sort(REQUESTED_CONFIGURATION_COMPARATOR);
quotes.sort(QUOTE_COMPARATOR);
for (int i = 0; i < quotes.size(); i++) {
final QuoteData quote = quotes.get(i);
final QuoteRequestConfiguration requestedConfiguration = requestedConfigurations.get(i);
if (!isExcessEqual(requestedConfiguration, quote.getQuoteConfigurationDimensions())) {
final List<String> insurerOverride = overrideMap
.get(ProductConfigurationDimensionName.EXCESS.toString());
if (insurerOverride != null && insurerOverride.contains(insurerId)) {
return AppConstants.ValidatorState.Skipped;
}
return AppConstants.ValidatorState.Failure;
}
if (!isContentsCoverEqual(requestedConfiguration, quote.getQuoteConfigurationDimensions())) {
final List<String> insurerOverride = overrideMap
.get(ProductConfigurationDimensionName.CONTENTSCOVER.toString());
if (insurerOverride != null && insurerOverride.contains(insurerId)) {
return AppConstants.ValidatorState.Skipped;
}
return AppConstants.ValidatorState.Failure;
}
}
return AppConstants.ValidatorState.Success;
}
private static BigDecimal getAmount(final QuoteData quote, final ProductConfigurationDimensionName dimensionName) {
return quote.getQuoteConfigurationDimensions()
.stream()
.filter(d -> d.getDimensionName() == dimensionName)
.map(d -> ((PlainTextNumber) d.getDimension().getAmount().getValue()).getData())
.findFirst()
.orElse(BigDecimal.ZERO);
}
private static BigDecimal getContentsCover(final QuoteData quote) {
return getAmount(quote, Product
Editor is loading...