com.softicar.platform.common.container.data.table.in.memory.InMemoryDataTableColumn 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.data.table.IDataTableColumn;
import com.softicar.platform.common.core.i18n.IDisplayString;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Optional;
import java.util.function.Function;
/**
* Default implementation of {@link IDataTableColumn}.
*
* @author Alexander Schmidt
* @author Oliver Richers
*/
public class InMemoryDataTableColumn implements IDataTableColumn {
private final Function valueGetter;
private final Class valueClass;
private final Optional> valueComparator;
private final IDisplayString title;
public InMemoryDataTableColumn(InMemoryDataTableColumnBuilder columnBuilder) {
this.valueGetter = columnBuilder.getValueGetter();
this.valueClass = columnBuilder.getValueClass();
this.valueComparator = columnBuilder.getValueComparator();
this.title = columnBuilder.getTitle();
}
@Override
public IDisplayString getTitle() {
return title;
}
@Override
public Class getValueClass() {
return valueClass;
}
@Override
public V getValue(R tableRow) {
Collection values = getValues(Collections.singleton(tableRow));
if (values != null && !values.isEmpty()) {
return values.iterator().next();
} else {
return null;
}
}
@Override
public Collection getValues(Collection tableRows) {
Collection values = new ArrayList<>();
for (R tableRow: tableRows) {
values.add(Optional.ofNullable(tableRow).map(valueGetter::apply).orElse(null));
}
return values;
}
@Override
public Optional> getValueComparator() {
return valueComparator;
}
@Override
public void prefetchData(Collection values) {
// nothing to do
}
}