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

io.kestra.plugin.compress.AbstractTask Maven / Gradle / Ivy

package io.kestra.plugin.compress;

import io.kestra.core.models.tasks.Task;
import io.micronaut.core.annotation.Introspected;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.SuperBuilder;
import org.apache.commons.compress.compressors.CompressorInputStream;
import org.apache.commons.compress.compressors.CompressorOutputStream;
import org.apache.commons.compress.compressors.brotli.BrotliCompressorInputStream;
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream;
import org.apache.commons.compress.compressors.deflate.DeflateCompressorInputStream;
import org.apache.commons.compress.compressors.deflate.DeflateCompressorOutputStream;
import org.apache.commons.compress.compressors.deflate64.Deflate64CompressorInputStream;
import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream;
import org.apache.commons.compress.compressors.lz4.BlockLZ4CompressorInputStream;
import org.apache.commons.compress.compressors.lz4.BlockLZ4CompressorOutputStream;
import org.apache.commons.compress.compressors.lz4.FramedLZ4CompressorInputStream;
import org.apache.commons.compress.compressors.lz4.FramedLZ4CompressorOutputStream;
import org.apache.commons.compress.compressors.lzma.LZMACompressorInputStream;
import org.apache.commons.compress.compressors.lzma.LZMACompressorOutputStream;
import org.apache.commons.compress.compressors.snappy.FramedSnappyCompressorInputStream;
import org.apache.commons.compress.compressors.snappy.FramedSnappyCompressorOutputStream;
import org.apache.commons.compress.compressors.snappy.SnappyCompressorInputStream;
import org.apache.commons.compress.compressors.snappy.SnappyCompressorOutputStream;
import org.apache.commons.compress.compressors.xz.XZCompressorInputStream;
import org.apache.commons.compress.compressors.xz.XZCompressorOutputStream;
import org.apache.commons.compress.compressors.z.ZCompressorInputStream;
import org.apache.commons.compress.compressors.zstandard.ZstdCompressorInputStream;
import org.apache.commons.compress.compressors.zstandard.ZstdCompressorOutputStream;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

@SuperBuilder
@ToString
@EqualsAndHashCode
@Getter
@NoArgsConstructor
abstract public class AbstractTask extends Task {
    protected CompressorInputStream compressorInputStream(CompressionAlgorithm compression, InputStream inputStream) throws IOException {
        switch (compression) {
            case BROTLI:
                return new BrotliCompressorInputStream(inputStream);
            case BZIP2:
                return new BZip2CompressorInputStream(inputStream);
            case DEFLATE:
                return new DeflateCompressorInputStream(inputStream);
            case DEFLATE64:
                return new Deflate64CompressorInputStream(inputStream);
            case GZIP:
                return new GzipCompressorInputStream(inputStream);
            case LZ4BLOCK:
                return new BlockLZ4CompressorInputStream(inputStream);
            case LZ4FRAME:
                return new FramedLZ4CompressorInputStream(inputStream);
            case LZMA:
                return new LZMACompressorInputStream(inputStream);
            case SNAPPY:
                return new SnappyCompressorInputStream(inputStream);
            case SNAPPYFRAME:
                return new FramedSnappyCompressorInputStream(inputStream);
            case XZ:
                return new XZCompressorInputStream(inputStream);
            case ZSTD:
                return new ZstdCompressorInputStream(inputStream);
            case Z:
                return new ZCompressorInputStream(inputStream);
        }

        throw new IllegalArgumentException("Unknown compression '" + compression + "'");
    }

    protected CompressorOutputStream compressorOutputStream(CompressionAlgorithm compression, OutputStream outputStream) throws IOException {
        switch (compression) {
            case BROTLI:
            case DEFLATE64:
            case SNAPPY:
                throw new IllegalArgumentException("Not implemented compression '" + compression + "'");
                 // return new SnappyCompressorOutputStream(outputStream, uncompressedSize);
            case BZIP2:
                return new BZip2CompressorOutputStream(outputStream);
            case DEFLATE:
                return new DeflateCompressorOutputStream(outputStream);
            case GZIP:
                return new GzipCompressorOutputStream(outputStream);
            case LZ4BLOCK:
                return new BlockLZ4CompressorOutputStream(outputStream);
            case LZ4FRAME:
                return new FramedLZ4CompressorOutputStream(outputStream);
            case LZMA:
                return new LZMACompressorOutputStream(outputStream);
            case SNAPPYFRAME:
                return new FramedSnappyCompressorOutputStream(outputStream);
            case XZ:
                return new XZCompressorOutputStream(outputStream);
            case ZSTD:
                return new ZstdCompressorOutputStream(outputStream);
        }

        throw new IllegalArgumentException("Unknown compression '" + compression + "'");
    }

    @Introspected
    public enum CompressionAlgorithm {
        BROTLI,
        BZIP2,
        DEFLATE,
        DEFLATE64,
        GZIP,
        LZ4BLOCK,
        LZ4FRAME,
        LZMA,
        SNAPPY,
        SNAPPYFRAME,
        XZ,
        Z,
        ZSTD
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy