Sha256: d5bdb7f5fc2087485b25446006955e788786e772f5dfe333f9953d63940fe22a

Contents?: true

Size: 1.86 KB

Versions: 4

Compression:

Stored size: 1.86 KB

Contents

package org.embulk.output.s3v2.strategy;

import org.embulk.config.TaskReport;
import org.embulk.output.s3v2.PluginTask;
import org.embulk.spi.Buffer;
import org.embulk.spi.Exec;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.nio.ByteBuffer;

public class BufferedStrategy extends AbstractStrategy
{
    private final Logger logger = LoggerFactory.getLogger(BufferedStrategy.class);
    private final String bucket;
    private String s3ObjectKey;
    private ByteBuffer byteBuffer;

    public BufferedStrategy(PluginTask task, int taskIndex)
    {
        super(task, taskIndex);
        this.bucket = task.getBucket();
    }

    @Override
    protected boolean validate()
    {
        if (task.getEnableMultiPartUpload()) {
            throw new UnsupportedOperationException("Buffering strategy does not support S3 multi-part upload.");
        }
        return true;
    }

    @Override
    public void nextFile()
    {
        String ext = getFileExtension();
        s3ObjectKey = task.getObjectKeyPrefix() + "-" + taskIndex + ext;
        logger.info("[task:" + taskIndex + "] Temporary file is not created.");
    }

    @Override
    public void add(Buffer buffer)
    {
        byteBuffer = ByteBuffer.wrap(buffer.array(), buffer.offset(), buffer.limit());
    }

    @Override
    public void finish()
    {
        // Do nothing.
    }

    @Override
    public void close()
    {
        // Do nothing.
    }

    @Override
    public void abort()
    {
        if (s3.existsObject(bucket, s3ObjectKey)) {
            s3.deleteObject(bucket, s3ObjectKey);
            logger.info("Delete s3://" + bucket + "/" + s3ObjectKey);
        }
    }

    @Override
    public TaskReport commit()
    {
        s3.putObject(bucket, s3ObjectKey, byteBuffer);
        logger.info("Put into s3://" + bucket + "/" + s3ObjectKey);
        return Exec.newTaskReport();
    }
}

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
embulk-output-s3v2-0.3.0 src/main/java/org/embulk/output/s3v2/strategy/BufferedStrategy.java
embulk-output-s3v2-0.2.1 src/main/java/org/embulk/output/s3v2/strategy/BufferedStrategy.java
embulk-output-s3v2-0.2.0 src/main/java/org/embulk/output/s3v2/strategy/BufferedStrategy.java
embulk-output-s3v2-0.1.0 src/main/java/org/embulk/output/s3v2/strategy/BufferedStrategy.java