org.finra.dm.dao.impl.S3OperationsImpl.java Source code

Java tutorial

Introduction

Here is the source code for org.finra.dm.dao.impl.S3OperationsImpl.java

Source

/*
* Copyright 2015 herd contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.finra.dm.dao.impl;

import java.io.File;
import java.util.List;

import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.AbortMultipartUploadRequest;
import com.amazonaws.services.s3.model.CopyObjectRequest;
import com.amazonaws.services.s3.model.DeleteObjectsRequest;
import com.amazonaws.services.s3.model.DeleteObjectsResult;
import com.amazonaws.services.s3.model.GetObjectRequest;
import com.amazonaws.services.s3.model.ListMultipartUploadsRequest;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.MultipartUploadListing;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.PutObjectResult;
import com.amazonaws.services.s3.model.S3Object;
import com.amazonaws.services.s3.transfer.Copy;
import com.amazonaws.services.s3.transfer.Download;
import com.amazonaws.services.s3.transfer.MultipleFileDownload;
import com.amazonaws.services.s3.transfer.MultipleFileUpload;
import com.amazonaws.services.s3.transfer.ObjectMetadataProvider;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.Upload;

import org.finra.dm.dao.S3Operations;

public class S3OperationsImpl implements S3Operations {
    /**
     * {@inheritDoc}
     */
    @Override
    public ObjectMetadata getObjectMetadata(String sourceBucketName, String filePath, AmazonS3Client s3Client) {
        return s3Client.getObjectMetadata(sourceBucketName, filePath);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Copy copyFile(CopyObjectRequest copyObjectRequest, TransferManager transferManager) {
        return transferManager.copy(copyObjectRequest);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void deleteFile(String bucketName, String key, AmazonS3Client s3Client) {
        s3Client.deleteObject(bucketName, key);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public MultipartUploadListing listMultipartUploads(ListMultipartUploadsRequest listMultipartUploadsRequest,
            AmazonS3Client s3Client) {
        return s3Client.listMultipartUploads(listMultipartUploadsRequest);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void abortMultipartUpload(AbortMultipartUploadRequest abortMultipartUploadRequest,
            AmazonS3Client s3Client) {
        s3Client.abortMultipartUpload(abortMultipartUploadRequest);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public DeleteObjectsResult deleteObjects(DeleteObjectsRequest deleteObjectRequest, AmazonS3Client s3Client) {
        return s3Client.deleteObjects(deleteObjectRequest);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public ObjectListing listObjects(ListObjectsRequest listObjectsRequest, AmazonS3Client s3Client) {
        return s3Client.listObjects(listObjectsRequest);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public PutObjectResult putObject(PutObjectRequest putObjectRequest, AmazonS3Client s3Client) {
        return s3Client.putObject(putObjectRequest);
    }

    /**
     * Implementation delegates to {@link TransferManager#uploadDirectory(String, String, File, boolean, ObjectMetadataProvider)}
     */
    @Override
    public MultipleFileUpload uploadDirectory(String bucketName, String virtualDirectoryKeyPrefix, File directory,
            boolean includeSubdirectories, ObjectMetadataProvider metadataProvider,
            TransferManager transferManager) {
        return transferManager.uploadDirectory(bucketName, virtualDirectoryKeyPrefix, directory,
                includeSubdirectories, metadataProvider);
    }

    /**
     * Implementation delegates to {@link TransferManager#downloadDirectory(String, String, File)}.
     */
    @Override
    public MultipleFileDownload downloadDirectory(String bucketName, String keyPrefix, File destinationDirectory,
            TransferManager transferManager) {
        return transferManager.downloadDirectory(bucketName, keyPrefix, destinationDirectory);
    }

    /**
     * Implementation delegates to {@link TransferManager#upload(PutObjectRequest)}.
     */
    @Override
    public Upload upload(PutObjectRequest putObjectRequest, TransferManager transferManager)
            throws AmazonServiceException, AmazonClientException {
        return transferManager.upload(putObjectRequest);
    }

    /**
     * Implementation delegates to {@link TransferManager#uploadFileList(String, String, File, List, ObjectMetadataProvider)}.
     */
    @Override
    public MultipleFileUpload uploadFileList(String bucketName, String virtualDirectoryKeyPrefix, File directory,
            List<File> files, ObjectMetadataProvider metadataProvider, TransferManager transferManager) {
        return transferManager.uploadFileList(bucketName, virtualDirectoryKeyPrefix, directory, files,
                metadataProvider);
    }

    /**
     * Implementation delegates to {@link TransferManager#download(String, String, File)}
     */
    @Override
    public Download download(String bucket, String key, File file, TransferManager transferManager) {
        return transferManager.download(bucket, key, file);
    }

    /**
     * Rollback is not supported.
     */
    @Override
    public void rollback() {
        // Rollback not supported
    }

    @Override
    public S3Object getS3Object(GetObjectRequest getObjectRequest, AmazonS3 s3) {
        return s3.getObject(getObjectRequest);
    }
}