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

com.softicar.platform.common.container.data.table.in.memory.InMemoryDataTableColumnBuilder 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.Comparator;
import java.util.Optional;
import java.util.function.Function;

/**
 * A builder for instances of {@link IDataTableColumn}.
 * 

* Actually, this builder does not only create new columns but it adds them * directly to the given {@link InMemoryDataTableStructure}. * * @author Oliver Richers */ public class InMemoryDataTableColumnBuilder { private final InMemoryDataTableStructure structure; private final Class valueClass; private Function valueGetter; private IDisplayString title; private Optional> valueComparator; /** * Constructs a new instance of this builder. * * @param structure * the structure that the created column shall be added to * @param valueClass * the class of the column values */ public InMemoryDataTableColumnBuilder(InMemoryDataTableStructure structure, Class valueClass) { this.structure = structure; this.valueClass = valueClass; this.valueComparator = new InMemoryDataTableColumnInternalValueComparatorFactory().create(valueClass); } public class GetterSetter { /** * Defines the {@link Comparator} for the column values. * * @param comparator * the value comparator (never null) */ public GetterSetter setComparator(Optional> comparator) { valueComparator = comparator; return this; } /** * Defines the {@link Comparator} for the column values. * * @param comparator * the value comparator (never null) */ public GetterSetter setComparator(Comparator comparator) { valueComparator = Optional.of(comparator); return this; } /** * Defines the getter function to extract a column value from a row. * * @param getter * the value getter (never null) */ public TitleSetter setGetter(Function getter) { valueGetter = getter; return new TitleSetter(); } } public class TitleSetter { /** * Defines the title of the column. * * @param displayString * title display string (never null) */ public ColumnAdder setTitle(IDisplayString displayString) { title = displayString; return new ColumnAdder(); } } public class ColumnAdder { /** * Creates column instance and adds it to the table structure. * * @return the created and added column */ public IDataTableColumn addColumn() { return structure.addColumn(InMemoryDataTableColumnBuilder.this); } } protected Function getValueGetter() { return valueGetter; } protected Class getValueClass() { return valueClass; } protected Optional> getValueComparator() { return valueComparator; } protected IDisplayString getTitle() { return title; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy