package entreprise;

import java.util.*;

public class TestEntreprise {
  public static void main(String[] args) {
    Entreprise e1 = new Entreprise("IBM");
    Entreprise e2 = new Entreprise("Oracle");
    e1.engager(new Employe("Dupond", 800));
    e1.engager(new Employe("Poiret", 900));
    e2.engager(new Employe("Ravier", 750));
    e2.engager(new Employe("Burot", 1200));
    e2.engager(new Employe("Terrice", 1000));
    e2.engager(new Employe("Pernaut", 1150));
    System.out.println(e1);
    System.out.println(e2);
    
    List<Employe> l = new ArrayList<>();
    for (Employe e : e2) {
      l.add(e);
    }

    // Tri par salaires croissants
    CompareSalaires comparateur = new CompareSalaires();
    l.sort(comparateur);
    System.out.println("Employés de " + e2.getNom()
        + " par ordre croissant des salaires");
    for (Employe employe : l) {
      System.out.println(employe.getNom() + " gagne " + employe.getSalaire());
    }

    // Tri par salaires décroissants
    comparateur.setCroissant(false);
    l.sort(comparateur);
    System.out.println("Employés de " + e2.getNom()
        + " par ordre décroissant des salaires");
    for (Employe employe : l) {
      System.out.println(employe.getNom() + " gagne " + employe.getSalaire());
    }

    // Tri par salaires avec expressions lambda
System.out.println("=================="); l.sort(Comparator.comparing(e -> e.getSalaire()));
// ou bien (voir cours sur expressions lambda pour plus de précisions) // l.sort(Comparator.comparing(Employe::getSalaire));
System.out.println("Tri par salaire croissant :");
System.out.println(l); // Remarquez qu'on est obligé de préciser le type de e // sinon le compilateur considère que le type de e est Object l.sort(Comparator.comparing((Employe e) -> e.getSalaire()).reversed());
// ou bien
// l.sort(Comparator.comparing(Employe::getSalaire).reversed());
System.out.println("Tri par salaire décroissant :");
System.out.println(l); } }