/home/oracle/labs/06CollectionOperations/examples/EmployeeSearch06/src/com/example/lambda/A08CalcAvg.java
 1 package com.example.lambda;
 2 
 3 import java.util.List;
 4 import java.util.OptionalDouble;
 5 
 6 /**
 7  *
 8  * @author oracle
 9  */
10 public class A08CalcAvg {
11   public static void main(String[] args) {
12     List<Employee> eList = Employee.createShortList();
13         
14     System.out.println("\n== Average CO Bonus ==");
15     OptionalDouble result;
16         
17     result = eList.stream()
18       .filter(e -> e.getRole().equals(Role.EXECUTIVE))
19       .filter(e -> e.getState().equals("CO"))
20       .mapToDouble(e -> e.getSalary() * Bonus.byRole(e.getRole()))
21       .average();
22         
23     if (result.isPresent()){
24       System.out.printf("Average Bonuses paid: $%,6.2f %n", 
25         result.getAsDouble());
26     }
27 
28     System.out.println("\n== Average CO Bonus Details ==");
29         
30     result = eList.stream()
31       .filter(e -> e.getRole().equals(Role.EXECUTIVE))
32       .filter(e -> e.getState().equals("CO"))
33       .peek(e -> System.out.print("Name: " + e.getGivenName() 
34           + " " + e.getSurName() + " "))
35       .mapToDouble(e -> e.getSalary() * Bonus.byRole(e.getRole()))
36       .peek(d -> System.out.printf("Bonus paid: $%,6.2f %n", d))
37       .average();
38         
39       if (result.isPresent()){
40         System.out.printf("Average Bonuses paid: $%,6.2f %n", 
41           result.getAsDouble());
42       }    
43   }   
44 }