com.softicar.platform.common.container.data.table.in.memory.InMemoryDataTableColumnValueComparator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of platform-common Show documentation
Show all versions of platform-common Show documentation
The SoftiCAR Platform is a lightweight, Java-based library to create interactive business web applications.
package com.softicar.platform.common.container.data.table.in.memory;
import com.softicar.platform.common.container.comparator.OrderDirection;
import com.softicar.platform.common.container.data.table.IDataTableColumn;
import java.util.Comparator;
public class InMemoryDataTableColumnValueComparator implements Comparator {
private final OrderDirection direction;
private final Comparator comparator;
public InMemoryDataTableColumnValueComparator(IDataTableColumn column, OrderDirection direction) {
this.direction = direction;
this.comparator = column//
.getValueComparator()
.map(this::applyNullsFirst)
.map(this::applyDirection)
.orElse((a, b) -> 0);
}
@Override
public int compare(V left, V right) {
return comparator.compare(left, right);
}
private Comparator applyNullsFirst(Comparator comparator) {
return Comparator.nullsFirst(comparator);
}
private Comparator applyDirection(Comparator comparator) {
return direction == OrderDirection.ASCENDING? comparator : comparator.reversed();
}
}