it.ozimov.springboot.mail.model.EmailSchedulingData Maven / Gradle / Ivy
package it.ozimov.springboot.mail.model;
import java.io.Serializable;
import java.time.OffsetDateTime;
import java.util.Comparator;
public interface EmailSchedulingData extends Comparable, Serializable {
Comparator DEFAULT_COMPARATOR = (o1, o2) -> {
final OffsetDateTime o1ScheduledDateTime = o1.getScheduledDateTime();
final OffsetDateTime o2ScheduledDateTime = o2.getScheduledDateTime();
if (o1ScheduledDateTime.isBefore(o2ScheduledDateTime)) {
return -1;
} else if (o1ScheduledDateTime.isAfter(o2ScheduledDateTime)) {
return 1;
} else {
int priorityComparison = Integer.compare(o1.getAssignedPriority(), o2.getAssignedPriority());
if (priorityComparison != 0) {
return priorityComparison;
} else {
return o1.getId().compareTo(o2.getId());
}
}
};
String getId();
Email getEmail();
default int getDesiredPriority() {
return 1;
}
default int getAssignedPriority() {
return 1;
}
OffsetDateTime getScheduledDateTime();
default int compareTo(EmailSchedulingData o) {
return DEFAULT_COMPARATOR.compare(this, o);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy