Answered step by step
Verified Expert Solution
Question
1 Approved Answer
While working on an e - commerce service, you need to build a simple aggregator for a report, which will hold sold products and a
While working on an ecommerce service, you need to build a simple aggregator for a report,
which will hold sold products and a sum of their prices converted to EUR currency.
You're given a stream javautil.stream.Stream of SoldProduct
objects. Sold Product is defined as follows:
@Value
class SoldProduct
String name;
BigDecimal price;
String currency:
@Value comes from lombok tool and will make this class immutable generate toString, equals and hashCode, make all fields
private and final, add getters for all the fields and add single all arguments constructor
Write a function, which will map the Stream Sold Product instance of Sold ProductsAggregate to an which is defined as follows:
@Value
class SoldProductsAggregate
List SimpleSold Product products;
BigDecimal total;
and SimpleSoldProduct:
@Value
class SimpleSoldProduct
String name;
BigDecimal price;
To convert price to EUR use EURExchangeService which implements ExchangeService:
interface ExchangeService
Optional rateString currency;
Unfortunately EURExchangeService is
a bit buggy and may return some invalid values like null, empty or negative You should handle it by ignoring them.?
If an argument you get as input to SoldProductsAggregate.aggregate
is null, empty Stream
and so onthen you must not return null In case of such argument vou must convert it to empty Stream Before doing the mapping
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started