@@ -39,6 +39,7 @@ public final class CopyJobConfiguration extends JobConfiguration {
39
39
private final List <TableId > sourceTables ;
40
40
private final TableId destinationTable ;
41
41
private final String operationType ;
42
+ private final String destinationExpirationTime ;
42
43
private final JobInfo .CreateDisposition createDisposition ;
43
44
private final JobInfo .WriteDisposition writeDisposition ;
44
45
private final EncryptionConfiguration destinationEncryptionConfiguration ;
@@ -51,6 +52,7 @@ public static final class Builder
51
52
private List <TableId > sourceTables ;
52
53
private TableId destinationTable ;
53
54
private String operationType ;
55
+ private String destinationExpirationTime ;
54
56
private JobInfo .CreateDisposition createDisposition ;
55
57
private JobInfo .WriteDisposition writeDisposition ;
56
58
private EncryptionConfiguration destinationEncryptionConfiguration ;
@@ -66,6 +68,7 @@ private Builder(CopyJobConfiguration jobConfiguration) {
66
68
this .sourceTables = jobConfiguration .sourceTables ;
67
69
this .destinationTable = jobConfiguration .destinationTable ;
68
70
this .operationType = jobConfiguration .operationType ;
71
+ this .destinationExpirationTime = jobConfiguration .destinationExpirationTime ;
69
72
this .createDisposition = jobConfiguration .createDisposition ;
70
73
this .writeDisposition = jobConfiguration .writeDisposition ;
71
74
this .destinationEncryptionConfiguration = jobConfiguration .destinationEncryptionConfiguration ;
@@ -80,6 +83,10 @@ private Builder(com.google.api.services.bigquery.model.JobConfiguration configur
80
83
if (copyConfigurationPb .getOperationType () != null ) {
81
84
this .operationType = copyConfigurationPb .getOperationType ();
82
85
}
86
+ if (copyConfigurationPb .getDestinationExpirationTime () != null ) {
87
+ this .destinationExpirationTime =
88
+ copyConfigurationPb .getDestinationExpirationTime ().toString ();
89
+ }
83
90
if (copyConfigurationPb .getSourceTables () != null ) {
84
91
this .sourceTables =
85
92
Lists .transform (copyConfigurationPb .getSourceTables (), TableId .FROM_PB_FUNCTION );
@@ -129,6 +136,16 @@ public Builder setOperationType(String operationType) {
129
136
return this ;
130
137
}
131
138
139
+ /**
140
+ * Sets the time when the destination table expires. Expired tables will be deleted and their
141
+ * storage reclaimed. More info:
142
+ * https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfigurationtablecopy
143
+ */
144
+ public Builder setDestinationExpirationTime (String destinationExpirationTime ) {
145
+ this .destinationExpirationTime = destinationExpirationTime ;
146
+ return this ;
147
+ }
148
+
132
149
public Builder setDestinationEncryptionConfiguration (
133
150
EncryptionConfiguration encryptionConfiguration ) {
134
151
this .destinationEncryptionConfiguration = encryptionConfiguration ;
@@ -194,6 +211,7 @@ private CopyJobConfiguration(Builder builder) {
194
211
this .sourceTables = checkNotNull (builder .sourceTables );
195
212
this .destinationTable = checkNotNull (builder .destinationTable );
196
213
this .operationType = builder .operationType ;
214
+ this .destinationExpirationTime = builder .destinationExpirationTime ;
197
215
this .createDisposition = builder .createDisposition ;
198
216
this .writeDisposition = builder .writeDisposition ;
199
217
this .destinationEncryptionConfiguration = builder .destinationEncryptionConfiguration ;
@@ -216,6 +234,11 @@ public String getOperationType() {
216
234
return operationType ;
217
235
}
218
236
237
+ /** Returns the time when the destination table expires */
238
+ public String getDestinationExpirationTime () {
239
+ return destinationExpirationTime ;
240
+ }
241
+
219
242
public EncryptionConfiguration getDestinationEncryptionConfiguration () {
220
243
return destinationEncryptionConfiguration ;
221
244
}
@@ -263,6 +286,7 @@ ToStringHelper toStringHelper() {
263
286
.add ("sourceTables" , sourceTables )
264
287
.add ("destinationTable" , destinationTable )
265
288
.add ("operationType" , operationType )
289
+ .add ("destinationExpirationTime" , destinationExpirationTime )
266
290
.add ("destinationEncryptionConfiguration" , destinationEncryptionConfiguration )
267
291
.add ("createDisposition" , createDisposition )
268
292
.add ("writeDisposition" , writeDisposition )
@@ -283,6 +307,7 @@ public int hashCode() {
283
307
sourceTables ,
284
308
destinationTable ,
285
309
operationType ,
310
+ destinationExpirationTime ,
286
311
createDisposition ,
287
312
writeDisposition ,
288
313
labels ,
@@ -322,6 +347,9 @@ com.google.api.services.bigquery.model.JobConfiguration toPb() {
322
347
if (operationType != null ) {
323
348
configurationPb .setOperationType (operationType );
324
349
}
350
+ if (destinationExpirationTime != null ) {
351
+ configurationPb .setDestinationExpirationTime (destinationExpirationTime );
352
+ }
325
353
if (createDisposition != null ) {
326
354
configurationPb .setCreateDisposition (createDisposition .toString ());
327
355
}
0 commit comments