/home/oracle/labs/06CollectionOperations/examples/EmployeeSearch06/src/com/example/lambda/A04FindFirstLazy.java
 1 package com.example.lambda;
 2 
 3 import java.util.List;
 4 import java.util.Optional;
 5 
 6 /**
 7  *
 8  * @author oracle
 9  */
10 public class A04FindFirstLazy {
11     
12     public static void main(String[] args) {
13         
14         List<Employee> eList = Employee.createShortList();
15 
16         System.out.println("\n== CO Bonuses ==");
17         eList.stream()
18             .peek(e -> System.out.println("Stream start"))
19             .filter(e -> e.getRole().equals(Role.EXECUTIVE))
20             .peek(e -> System.out.println("Executives"))
21             .filter(e -> e.getState().equals("CO"))
22             .peek(e -> System.out.println("CO Executives"))
23             .map(e -> e.getSalary() * Bonus.byRole(e.getRole()))
24             .forEach( s -> System.out.printf(
25               "  Bonus paid: $%,6.2f %n", s));
26         
27         System.out.println("\n== First CO Bonus ==");
28         Employee tempEmp = new Employee.Builder().build();
29         Optional<Employee> result = eList.stream()
30             .peek(e -> System.out.println("Stream start"))
31             .filter(e -> e.getRole().equals(Role.EXECUTIVE))
32             .peek(e -> System.out.println("Executives"))
33             .filter(e -> e.getState().equals("CO"))
34             .peek(e -> System.out.println("CO Executives"))                
35             .findFirst();
36         
37         if (result.isPresent()){
38             result.get().printSummary();
39         }     
40     }  
41 }