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

org.simpleflatmapper.poi.impl.TransformRowMapper Maven / Gradle / Ivy

The newest version!
package org.simpleflatmapper.poi.impl;

import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.simpleflatmapper.map.MappingContext;
import org.simpleflatmapper.map.MappingException;
import org.simpleflatmapper.map.TransformEnumerable;
import org.simpleflatmapper.poi.RowMapper;
import org.simpleflatmapper.util.CheckedConsumer;
import org.simpleflatmapper.util.Enumerable;
import org.simpleflatmapper.util.Function;
import org.simpleflatmapper.util.TransformCheckedConsumer;
import org.simpleflatmapper.util.TransformIterator;

import java.util.Iterator;

public class TransformRowMapper implements RowMapper {
    private final Function transform;
    private final RowMapper delegate;

    public TransformRowMapper(RowMapper delegate, Function transform) {
        this.delegate = delegate;
        this.transform = transform;
    }

    @Override
    public O map(Row source) throws MappingException {
        return transform.apply(delegate.map(source));
    }

    @Override
    public O map(Row source, MappingContext context) throws MappingException {
        return transform.apply(delegate.map(source, context));
    }

    @Override
    public Iterator iterator(Sheet sheet) {
        return new TransformIterator(delegate.iterator(sheet), transform);
    }

    @Override
    public Iterator iterator(int startRow, Sheet sheet) {
        return new TransformIterator(delegate.iterator(startRow, sheet), transform);
    }

    @Override
    public Enumerable enumerate(Sheet sheet) {
        return new TransformEnumerable(delegate.enumerate(sheet), transform);
    }

    @Override
    public Enumerable enumerate(int startRow, Sheet sheet) {
        return new TransformEnumerable(delegate.enumerate(startRow, sheet), transform);
    }

    @Override
    public > RH forEach(Sheet sheet, RH consumer) {
        delegate.forEach(sheet, new TransformCheckedConsumer(consumer, transform));
        return consumer;
    }

    @Override
    public > RH forEach(int startRow, Sheet sheet, RH consumer) {
        delegate.forEach(startRow, sheet, new TransformCheckedConsumer(consumer, transform));
        return consumer;
    }


    //IFJAVA8_START
    @Override
    public java.util.stream.Stream stream(Sheet sheet)  {
        return delegate.stream(sheet).map(transform::apply);
    }
    public java.util.stream.Stream stream(int startRow, Sheet sheet)  {
        return delegate.stream(startRow, sheet).map(transform::apply);
    }
    //IFJAVA8_END

}