com.softicar.platform.common.container.matrix.ValueMappingMatrix 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.matrix;
import java.util.Collection;
import java.util.Map;
import java.util.Map.Entry;
import java.util.SortedSet;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
public class ValueMappingMatrix implements IImmutableMatrix {
private final IImmutableMatrix matrix;
private final Function valueMapper;
public ValueMappingMatrix(IImmutableMatrix matrix, Function valueMapper) {
this.matrix = matrix;
this.valueMapper = valueMapper;
}
@Override
public Iterable> getMatrixCells() {
return StreamSupport
.stream(matrix.getMatrixCells().spliterator(), false)//
.map(MatrixCell::new)
.collect(Collectors.toList());
}
@Override
public IImmutableMatrix clone() {
return new ValueMappingMatrix<>(matrix.clone(), valueMapper);
}
@Override
public V getValue(R row, C column) {
return valueMapper.apply(matrix.getValue(row, column));
}
@Override
public V getTotalValue(R row) {
return valueMapper.apply(matrix.getTotalValue(row));
}
@Override
public V getTotalColumnValue(C column) {
return valueMapper.apply(matrix.getTotalColumnValue(column));
}
@Override
public boolean isSet(R row, C column) {
return matrix.isSet(row, column);
}
@Override
public V getDefaultValue() {
return valueMapper.apply(matrix.getDefaultValue());
}
@Override
public SortedSet getRows() {
return matrix.getRows();
}
@Override
public boolean containsRow(R row) {
return matrix.containsRow(row);
}
@Override
public R getFirstRow() {
return matrix.getFirstRow();
}
@Override
public R getLastRow() {
return matrix.getLastRow();
}
@Override
public int getRowCount() {
return matrix.getRowCount();
}
@Override
public Map getRowMap(R row) {
return matrix//
.getRowMap(row)
.entrySet()
.stream()
.collect(Collectors.toMap(Entry::getKey, entry -> valueMapper.apply(entry.getValue())));
}
@Override
public SortedSet getColumns() {
return matrix.getColumns();
}
@Override
public boolean containsColumn(C column) {
return matrix.containsColumn(column);
}
@Override
public C getFirstColumn() {
return matrix.getFirstColumn();
}
@Override
public C getLastColumn() {
return matrix.getLastColumn();
}
@Override
public int getColumnCount() {
return matrix.getColumnCount();
}
@Override
public Collection getColumnsWithNonDefaultValue(R row) {
return matrix.getColumnsWithNonDefaultValue(row);
}
private class MatrixCell implements IMatrixCell {
private final IMatrixCell matrixCell;
public MatrixCell(IMatrixCell matrixCell) {
this.matrixCell = matrixCell;
}
@Override
public R getRow() {
return matrixCell.getRow();
}
@Override
public C getColumn() {
return matrixCell.getColumn();
}
@Override
public V getValue() {
return valueMapper.apply(matrixCell.getValue());
}
}
}