Search in sources :

Example 6 with CopyWriter

use of com.google.cloud.storage.CopyWriter in project google-cloud-java by GoogleCloudPlatform.

the class ITStorageTest method testCopyBlob.

@Test
public void testCopyBlob() {
    String sourceBlobName = "test-copy-blob-source";
    BlobId source = BlobId.of(BUCKET, sourceBlobName);
    ImmutableMap<String, String> metadata = ImmutableMap.of("k", "v");
    BlobInfo blob = BlobInfo.newBuilder(source).setContentType(CONTENT_TYPE).setMetadata(metadata).build();
    Blob remoteBlob = storage.create(blob, BLOB_BYTE_CONTENT);
    assertNotNull(remoteBlob);
    String targetBlobName = "test-copy-blob-target";
    Storage.CopyRequest req = Storage.CopyRequest.of(source, BlobId.of(BUCKET, targetBlobName));
    CopyWriter copyWriter = storage.copy(req);
    assertEquals(BUCKET, copyWriter.getResult().getBucket());
    assertEquals(targetBlobName, copyWriter.getResult().getName());
    assertEquals(CONTENT_TYPE, copyWriter.getResult().getContentType());
    assertEquals(metadata, copyWriter.getResult().getMetadata());
    assertTrue(copyWriter.isDone());
    assertTrue(remoteBlob.delete());
    assertTrue(storage.delete(BUCKET, targetBlobName));
}
Also used : Blob(com.google.cloud.storage.Blob) Storage(com.google.cloud.storage.Storage) BlobInfo(com.google.cloud.storage.BlobInfo) BlobId(com.google.cloud.storage.BlobId) CopyWriter(com.google.cloud.storage.CopyWriter) Test(org.junit.Test)

Example 7 with CopyWriter

use of com.google.cloud.storage.CopyWriter in project google-cloud-java by GoogleCloudPlatform.

the class CloudStorageFileSystemProvider method copy.

@Override
public void copy(Path source, Path target, CopyOption... options) throws IOException {
    initStorage();
    boolean wantCopyAttributes = false;
    boolean wantReplaceExisting = false;
    boolean setContentType = false;
    boolean setCacheControl = false;
    boolean setContentEncoding = false;
    boolean setContentDisposition = false;
    CloudStoragePath toPath = CloudStorageUtil.checkPath(target);
    BlobInfo.Builder tgtInfoBuilder = BlobInfo.newBuilder(toPath.getBlobId()).setContentType("");
    int blockSize = -1;
    for (CopyOption option : options) {
        if (option instanceof StandardCopyOption) {
            switch((StandardCopyOption) option) {
                case COPY_ATTRIBUTES:
                    wantCopyAttributes = true;
                    break;
                case REPLACE_EXISTING:
                    wantReplaceExisting = true;
                    break;
                case ATOMIC_MOVE:
                default:
                    throw new UnsupportedOperationException(option.toString());
            }
        } else if (option instanceof CloudStorageOption) {
            if (option instanceof OptionBlockSize) {
                blockSize = ((OptionBlockSize) option).size();
            } else if (option instanceof OptionMimeType) {
                tgtInfoBuilder.setContentType(((OptionMimeType) option).mimeType());
                setContentType = true;
            } else if (option instanceof OptionCacheControl) {
                tgtInfoBuilder.setCacheControl(((OptionCacheControl) option).cacheControl());
                setCacheControl = true;
            } else if (option instanceof OptionContentEncoding) {
                tgtInfoBuilder.setContentEncoding(((OptionContentEncoding) option).contentEncoding());
                setContentEncoding = true;
            } else if (option instanceof OptionContentDisposition) {
                tgtInfoBuilder.setContentDisposition(((OptionContentDisposition) option).contentDisposition());
                setContentDisposition = true;
            } else {
                throw new UnsupportedOperationException(option.toString());
            }
        } else {
            throw new UnsupportedOperationException(option.toString());
        }
    }
    CloudStoragePath fromPath = CloudStorageUtil.checkPath(source);
    blockSize = blockSize != -1 ? blockSize : Ints.max(fromPath.getFileSystem().config().blockSize(), toPath.getFileSystem().config().blockSize());
    if (fromPath.seemsLikeADirectory() && toPath.seemsLikeADirectory()) {
        if (fromPath.getFileSystem().config().usePseudoDirectories() && toPath.getFileSystem().config().usePseudoDirectories()) {
            // NOOP: This would normally create an empty directory.
            return;
        } else {
            checkArgument(!fromPath.getFileSystem().config().usePseudoDirectories() && !toPath.getFileSystem().config().usePseudoDirectories(), "File systems associated with paths don't agree on pseudo-directories.");
        }
    }
    if (fromPath.seemsLikeADirectoryAndUsePseudoDirectories()) {
        throw new CloudStoragePseudoDirectoryException(fromPath);
    }
    if (toPath.seemsLikeADirectoryAndUsePseudoDirectories()) {
        throw new CloudStoragePseudoDirectoryException(toPath);
    }
    try {
        if (wantCopyAttributes) {
            BlobInfo blobInfo = storage.get(fromPath.getBlobId());
            if (null == blobInfo) {
                throw new NoSuchFileException(fromPath.toString());
            }
            if (!setCacheControl) {
                tgtInfoBuilder.setCacheControl(blobInfo.getCacheControl());
            }
            if (!setContentType) {
                tgtInfoBuilder.setContentType(blobInfo.getContentType());
            }
            if (!setContentEncoding) {
                tgtInfoBuilder.setContentEncoding(blobInfo.getContentEncoding());
            }
            if (!setContentDisposition) {
                tgtInfoBuilder.setContentDisposition(blobInfo.getContentDisposition());
            }
            tgtInfoBuilder.setAcl(blobInfo.getAcl());
            tgtInfoBuilder.setMetadata(blobInfo.getMetadata());
        }
        BlobInfo tgtInfo = tgtInfoBuilder.build();
        Storage.CopyRequest.Builder copyReqBuilder = Storage.CopyRequest.newBuilder().setSource(fromPath.getBlobId());
        if (wantReplaceExisting) {
            copyReqBuilder = copyReqBuilder.setTarget(tgtInfo);
        } else {
            copyReqBuilder = copyReqBuilder.setTarget(tgtInfo, Storage.BlobTargetOption.doesNotExist());
        }
        CopyWriter copyWriter = storage.copy(copyReqBuilder.build());
        copyWriter.getResult();
    } catch (StorageException oops) {
        throw asIoException(oops);
    }
}
Also used : CopyOption(java.nio.file.CopyOption) StandardCopyOption(java.nio.file.StandardCopyOption) NoSuchFileException(java.nio.file.NoSuchFileException) BlobInfo(com.google.cloud.storage.BlobInfo) CopyWriter(com.google.cloud.storage.CopyWriter) StandardCopyOption(java.nio.file.StandardCopyOption) StorageException(com.google.cloud.storage.StorageException)

Example 8 with CopyWriter

use of com.google.cloud.storage.CopyWriter in project google-cloud-java by GoogleCloudPlatform.

the class BlobSnippets method moveTo.

/**
   * Example of moving a blob to a different bucket with a different name.
   */
// [TARGET copyTo(String, String, BlobSourceOption...)]
// [VARIABLE "my_unique_bucket"]
// [VARIABLE "move_blob_name"]
public Blob moveTo(String destBucket, String destBlob) {
    // [START storageMoveFile]
    CopyWriter copyWriter = blob.copyTo(destBucket, destBlob);
    Blob copiedBlob = copyWriter.getResult();
    boolean deleted = blob.delete();
    // [END storageMoveFile]
    if (deleted) {
        return copiedBlob;
    } else {
        return null;
    }
}
Also used : Blob(com.google.cloud.storage.Blob) CopyWriter(com.google.cloud.storage.CopyWriter)

Example 9 with CopyWriter

use of com.google.cloud.storage.CopyWriter in project google-cloud-java by GoogleCloudPlatform.

the class BlobSnippets method copyToBucket.

/**
   * Example of copying the blob to a different bucket, keeping the original name.
   */
// [TARGET copyTo(String, BlobSourceOption...)]
// [VARIABLE "my_unique_bucket"]
public Blob copyToBucket(String bucketName) {
    // [START copyToBucket]
    CopyWriter copyWriter = blob.copyTo(bucketName);
    Blob copiedBlob = copyWriter.getResult();
    // [END copyToBucket]
    return copiedBlob;
}
Also used : Blob(com.google.cloud.storage.Blob) CopyWriter(com.google.cloud.storage.CopyWriter)

Example 10 with CopyWriter

use of com.google.cloud.storage.CopyWriter in project google-cloud-java by GoogleCloudPlatform.

the class BlobSnippets method copyToStrings.

/**
   * Example of copying the blob to a different bucket with a different name.
   */
// [TARGET copyTo(String, String, BlobSourceOption...)]
// [VARIABLE "my_unique_bucket"]
// [VARIABLE "copy_blob_name"]
public Blob copyToStrings(String bucketName, String blobName) {
    // [START copyToStrings]
    CopyWriter copyWriter = blob.copyTo(bucketName, blobName);
    Blob copiedBlob = copyWriter.getResult();
    // [END copyToStrings]
    return copiedBlob;
}
Also used : Blob(com.google.cloud.storage.Blob) CopyWriter(com.google.cloud.storage.CopyWriter)

Aggregations

CopyWriter (com.google.cloud.storage.CopyWriter)11 Blob (com.google.cloud.storage.Blob)10 BlobInfo (com.google.cloud.storage.BlobInfo)6 BlobId (com.google.cloud.storage.BlobId)5 Storage (com.google.cloud.storage.Storage)5 Test (org.junit.Test)5 CopyRequest (com.google.cloud.storage.Storage.CopyRequest)1 StorageException (com.google.cloud.storage.StorageException)1 CopyOption (java.nio.file.CopyOption)1 NoSuchFileException (java.nio.file.NoSuchFileException)1 StandardCopyOption (java.nio.file.StandardCopyOption)1