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

com.poiji.save.FileWorkbookSaver Maven / Gradle / Ivy

package com.poiji.save;

import com.poiji.exception.PoijiException;
import com.poiji.option.PoijiOptions;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Collection;
import java.util.stream.Stream;
import org.apache.poi.ss.usermodel.Workbook;

public class FileWorkbookSaver extends AbstractWorkbookSaver implements WorkbookSaver{

    private final File file;

    public FileWorkbookSaver(
        final File file, final MappedFields mappedFields, final PoijiOptions options
    ) {
        super(mappedFields, options);
        this.file = file;
    }

    @Override
    public  void save(final Stream data, final Workbook workbook) {
        createFile();
        writeInFile(data, workbook);
    }

    private  void writeInFile(final Stream data, final Workbook workbook) {
        try (final FileOutputStream outputStream = new FileOutputStream(file)) {
            super.save(data, workbook, outputStream);
        } catch (IOException e) {
            throw new PoijiException(e.getMessage(), e);
        }
    }

    @Override
    public  void save(final Collection data, final Workbook workbook) {
        createFile();
        writeInFile(data, workbook);
    }

    private  void writeInFile(final Collection data, final Workbook workbook) {
        try (final FileOutputStream outputStream = new FileOutputStream(file)) {
            super.save(data, workbook, outputStream);
        } catch (IOException e) {
            throw new PoijiException(e.getMessage(), e);
        }
    }

    private void createFile() {
        final Path absolutePath = file.toPath().toAbsolutePath();
        try {
            Files.createDirectories(absolutePath.getParent());
            Files.deleteIfExists(absolutePath);
            Files.createFile(absolutePath);
        } catch (IOException e) {
            throw new PoijiException(e.getMessage(), e);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy