Guest User

Untitled

a guest
Oct 18th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. sales.reduceLeft(reduceSalesFunction)
  2.  
  3. def reduceSalesFunction: (Sale, Sale) => Sale= {
  4. ???
  5. }
  6.  
  7. def getUpdatedSale(sales: List[Sale]): Sale = {
  8. // if just a single sale, get it
  9. if (sales.size == 1) sales.iterator.next
  10.  
  11. else {
  12. // get the oldest sale
  13. val sortedSales = sales.sortWith(_.timestamp < _.timestamp)
  14. val oldestSale: Sale = sortedSales.min
  15. val salesMetrics: Metrics = oldestSale.metrics
  16.  
  17. // update the oldest sale's metrics
  18. for (sale <- sortedSales) {
  19. val metrics: Metrics = sale.metrics
  20. if (metrics.isMetric_1) salesMetrics.setIsMetric_1(metrics.isMetric_1)
  21. if (metrics.isMetric_2) salesMetrics.setIsMetric_2(metrics.isMetric_2)
  22. if (metrics.isMetric_3) salesMetrics.setIsMetric_3(metrics.isMetric_3)
  23. }
  24.  
  25. // if there are metrics with `false` values set the oldest sale's metrics to `false` as well (Metrics is an Enum)
  26. for (metric <- Metrics.values(); if !salesMetrics.isSet(metric)) {
  27. salesMetrics.setMetricValue(metric, false)
  28. }
  29. oldestSale
  30. }
  31. }
Add Comment
Please, Sign In to add comment