xref: /aosp_15_r20/external/aws-crt-java/src/main/java/software/amazon/awssdk/crt/s3/ResumeToken.java (revision 3c7ae9de214676c52d19f01067dc1a404272dc11)
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