All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.softicar.platform.common.container.data.table.in.memory.InMemoryDataTableColumnValueComparator Maven / Gradle / Ivy

Go to download

The SoftiCAR Platform is a lightweight, Java-based library to create interactive business web applications.

There is a newer version: 50.0.0
Show newest version
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();
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy