1 /** 2 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 * SPDX-License-Identifier: Apache-2.0. 4 */ 5 package software.amazon.awssdk.crt.s3; 6 7 public class ResumeToken { 8 9 static public class PutResumeTokenBuilder { 10 private long partSize; 11 private long totalNumParts; 12 private long numPartsCompleted; 13 private String uploadId; 14 15 /** 16 * Default constructor 17 */ PutResumeTokenBuilder()18 public PutResumeTokenBuilder() {} 19 20 /** 21 * @param partSize part size used for operation 22 * @return this resume token object 23 */ withPartSize(long partSize)24 public PutResumeTokenBuilder withPartSize(long partSize) { 25 this.partSize = partSize; 26 return this; 27 } 28 29 /** 30 * @param totalNumParts total num parts in operation 31 * @return this resume token object 32 */ withTotalNumParts(long totalNumParts)33 public PutResumeTokenBuilder withTotalNumParts(long totalNumParts) { 34 this.totalNumParts = totalNumParts; 35 return this; 36 } 37 38 /** 39 * @param numPartsCompleted number of parts completed 40 * @return this resume token object 41 */ withNumPartsCompleted(long numPartsCompleted)42 public PutResumeTokenBuilder withNumPartsCompleted(long numPartsCompleted) { 43 this.numPartsCompleted = numPartsCompleted; 44 return this; 45 } 46 47 /** 48 * @param uploadId upload Id 49 * @return this resume token object 50 */ withUploadId(String uploadId)51 public PutResumeTokenBuilder withUploadId(String uploadId) { 52 this.uploadId = uploadId; 53 return this; 54 } 55 build()56 public ResumeToken build() { 57 return new ResumeToken(this); 58 } 59 }; 60 61 private int nativeType; 62 private long partSize; 63 private long totalNumParts; 64 private long numPartsCompleted; 65 private String uploadId; 66 ResumeToken(PutResumeTokenBuilder builder)67 public ResumeToken(PutResumeTokenBuilder builder) { 68 this.nativeType = S3MetaRequestOptions.MetaRequestType.PUT_OBJECT.getNativeValue(); 69 this.partSize = builder.partSize; 70 this.totalNumParts = builder.totalNumParts; 71 this.numPartsCompleted = builder.numPartsCompleted; 72 this.uploadId = builder.uploadId; 73 } 74 75 /****** 76 * Common Fields. 77 ******/ 78 79 /** 80 * @return type of resume token 81 */ getType()82 public S3MetaRequestOptions.MetaRequestType getType() { 83 return S3MetaRequestOptions.MetaRequestType.getEnumValueFromInteger(nativeType); 84 } 85 86 87 /** 88 * @return part size 89 */ getPartSize()90 public long getPartSize() { 91 return partSize; 92 } 93 94 /** 95 * @return total number of parts 96 */ getTotalNumParts()97 public long getTotalNumParts() { 98 return totalNumParts; 99 } 100 101 /** 102 * @return number of parts completed 103 */ getNumPartsCompleted()104 public long getNumPartsCompleted() { 105 return numPartsCompleted; 106 } 107 108 /****** 109 * Upload Specific fields. 110 ******/ 111 /** 112 * @return upload Id 113 */ getUploadId()114 public String getUploadId() { 115 if (getType() != S3MetaRequestOptions.MetaRequestType.PUT_OBJECT) { 116 throw new IllegalArgumentException("ResumeToken - upload id is only defined for Put Object Resume tokens"); 117 } 118 119 return uploadId; 120 } 121 } 122