Untitled
unknown
java
2 years ago
3.6 kB
7
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...