Filter.java
package gestor;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class Filter {
public static List<Email> filterEmails(ArrayList<Email> emails, Predicate<Email> filter) {
return emails.stream()
.filter(filter)
.collect(Collectors.toList());
}
// Example filter methods
public static Predicate<Email> SearchTheSubject(String subject) {
return email -> email.getSubject().contains(subject);
}
public static Predicate<Email> SearchTheContent(String content) {
return email -> email.getContent().contains(content);
}
public static Predicate<Email> FindASender(String sender) {
return email -> email.getFrom().getEmailAddress().equals(sender);
}
public static Predicate<Email> FindAAddresse(String addressee) {
return email -> email.getTo().stream().anyMatch(contact -> contact.getEmailAddress().equals(addressee));
}
public static Predicate<Email> FindASenderWhithASubject(String sender,String subject) {
Predicate<Email> senderPredicate = FindASender(sender);
Predicate<Email> subjectPredicate = SearchTheSubject(subject);
return senderPredicate.and(subjectPredicate);
}
public static Predicate<Email> FindASenderWhithASubjectAndContent(String sender, String subject,String content) {
Predicate<Email> senderPredicate = FindASender(sender);
Predicate<Email> subjectPredicate = SearchTheSubject(subject);
Predicate<Email> contentPredicate = SearchTheContent(content);
return senderPredicate.and(subjectPredicate).and(contentPredicate);
}
public static Predicate<Email> FindAAddresseeWhithASubject(String addressee,String subject) {
Predicate<Email> addresseePredicate = FindAAddresse(addressee);
Predicate<Email> subjectPredicate = SearchTheSubject(subject);
return addresseePredicate.and(subjectPredicate);
}
}