Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sales.reduceLeft(reduceSalesFunction)
- def reduceSalesFunction: (Sale, Sale) => Sale= {
- ???
- }
- def getUpdatedSale(sales: List[Sale]): Sale = {
- // if just a single sale, get it
- if (sales.size == 1) sales.iterator.next
- else {
- // get the oldest sale
- val sortedSales = sales.sortWith(_.timestamp < _.timestamp)
- val oldestSale: Sale = sortedSales.min
- val salesMetrics: Metrics = oldestSale.metrics
- // update the oldest sale's metrics
- for (sale <- sortedSales) {
- val metrics: Metrics = sale.metrics
- if (metrics.isMetric_1) salesMetrics.setIsMetric_1(metrics.isMetric_1)
- if (metrics.isMetric_2) salesMetrics.setIsMetric_2(metrics.isMetric_2)
- if (metrics.isMetric_3) salesMetrics.setIsMetric_3(metrics.isMetric_3)
- }
- // if there are metrics with `false` values set the oldest sale's metrics to `false` as well (Metrics is an Enum)
- for (metric <- Metrics.values(); if !salesMetrics.isSet(metric)) {
- salesMetrics.setMetricValue(metric, false)
- }
- oldestSale
- }
- }
Add Comment
Please, Sign In to add comment