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

com.softicar.platform.common.container.matrix.ValueMappingMatrix 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.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());
		}
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy