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

com.softicar.platform.common.container.data.table.in.memory.InMemoryDataTableColumn 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.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
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy