import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Comparator;
abstract class TLog
<T
> implements Serializable, Comparable
<TLog
> {
private LocalDateTime moment;
private TableName table; // This is a simple enum
private Comparator
<TLog
<?>> comparator
= Comparator.
comparing(TLog
<?>::getMoment
) .thenComparing(TLog::getTable)
.thenComparing(TLog::getOrigin)
.thenComparing(TLog::getType);
public TLog() {
// comparator initialization
}
public LocalDateTime getMoment() {
return moment;
}
return origin;
}
return type;
}
public TableName getTable() {
return table;
}
public Comparator<TLog<?>> getComparator() {
return comparator;
}
@Override
public int compareTo(TLog other) {
return comparator.compare(this, other);
}
enum TableName {}
}
CmltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKaW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGVUaW1lOwppbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7CgphYnN0cmFjdCBjbGFzcyBUTG9nPFQ+IGltcGxlbWVudHMgU2VyaWFsaXphYmxlLCBDb21wYXJhYmxlPFRMb2c+IHsKCiAgICBwcml2YXRlIExvY2FsRGF0ZVRpbWUgbW9tZW50OwogICAgcHJpdmF0ZSBTdHJpbmcgb3JpZ2luOwogICAgcHJpdmF0ZSBTdHJpbmcgdHlwZTsKICAgIHByaXZhdGUgVGFibGVOYW1lIHRhYmxlOyAvLyBUaGlzIGlzIGEgc2ltcGxlIGVudW0KICAgIHByaXZhdGUgQ29tcGFyYXRvcjxUTG9nPD8+PiBjb21wYXJhdG9yID0gQ29tcGFyYXRvci5jb21wYXJpbmcoVExvZzw/Pjo6Z2V0TW9tZW50KQogICAgICAgIC50aGVuQ29tcGFyaW5nKFRMb2c6OmdldFRhYmxlKQogICAgICAgIC50aGVuQ29tcGFyaW5nKFRMb2c6OmdldE9yaWdpbikKICAgICAgICAudGhlbkNvbXBhcmluZyhUTG9nOjpnZXRUeXBlKTsKCiAgICBwdWJsaWMgVExvZygpIHsKICAgICAgICAvLyBjb21wYXJhdG9yIGluaXRpYWxpemF0aW9uCiAgICB9CgogICAgcHVibGljIExvY2FsRGF0ZVRpbWUgZ2V0TW9tZW50KCkgewogICAgICAgIHJldHVybiBtb21lbnQ7CiAgICB9CgogICAgcHVibGljIFN0cmluZyBnZXRPcmlnaW4oKSB7CiAgICAgICAgcmV0dXJuIG9yaWdpbjsKICAgIH0KCiAgICBwdWJsaWMgU3RyaW5nIGdldFR5cGUoKSB7CiAgICAgICAgcmV0dXJuIHR5cGU7CiAgICB9CgogICAgcHVibGljIFRhYmxlTmFtZSBnZXRUYWJsZSgpIHsKICAgICAgICByZXR1cm4gdGFibGU7CiAgICB9CgogICAgcHVibGljIENvbXBhcmF0b3I8VExvZzw/Pj4gZ2V0Q29tcGFyYXRvcigpIHsKICAgICAgICByZXR1cm4gY29tcGFyYXRvcjsKICAgIH0KCiAgICBAT3ZlcnJpZGUKICAgIHB1YmxpYyBpbnQgY29tcGFyZVRvKFRMb2cgb3RoZXIpIHsKICAgICAgICByZXR1cm4gY29tcGFyYXRvci5jb21wYXJlKHRoaXMsIG90aGVyKTsKICAgIH0KCiAgICBlbnVtIFRhYmxlTmFtZSB7fQp9