@@ -39,6 +39,7 @@ public final class CopyJobConfiguration extends JobConfiguration {
3939 private final List <TableId > sourceTables ;
4040 private final TableId destinationTable ;
4141 private final String operationType ;
42+ private final String destinationExpirationTime ;
4243 private final JobInfo .CreateDisposition createDisposition ;
4344 private final JobInfo .WriteDisposition writeDisposition ;
4445 private final EncryptionConfiguration destinationEncryptionConfiguration ;
@@ -51,6 +52,7 @@ public static final class Builder
5152 private List <TableId > sourceTables ;
5253 private TableId destinationTable ;
5354 private String operationType ;
55+ private String destinationExpirationTime ;
5456 private JobInfo .CreateDisposition createDisposition ;
5557 private JobInfo .WriteDisposition writeDisposition ;
5658 private EncryptionConfiguration destinationEncryptionConfiguration ;
@@ -66,6 +68,7 @@ private Builder(CopyJobConfiguration jobConfiguration) {
6668 this .sourceTables = jobConfiguration .sourceTables ;
6769 this .destinationTable = jobConfiguration .destinationTable ;
6870 this .operationType = jobConfiguration .operationType ;
71+ this .destinationExpirationTime = jobConfiguration .destinationExpirationTime ;
6972 this .createDisposition = jobConfiguration .createDisposition ;
7073 this .writeDisposition = jobConfiguration .writeDisposition ;
7174 this .destinationEncryptionConfiguration = jobConfiguration .destinationEncryptionConfiguration ;
@@ -80,6 +83,10 @@ private Builder(com.google.api.services.bigquery.model.JobConfiguration configur
8083 if (copyConfigurationPb .getOperationType () != null ) {
8184 this .operationType = copyConfigurationPb .getOperationType ();
8285 }
86+ if (copyConfigurationPb .getDestinationExpirationTime () != null ) {
87+ this .destinationExpirationTime =
88+ copyConfigurationPb .getDestinationExpirationTime ().toString ();
89+ }
8390 if (copyConfigurationPb .getSourceTables () != null ) {
8491 this .sourceTables =
8592 Lists .transform (copyConfigurationPb .getSourceTables (), TableId .FROM_PB_FUNCTION );
@@ -129,6 +136,16 @@ public Builder setOperationType(String operationType) {
129136 return this ;
130137 }
131138
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+
132149 public Builder setDestinationEncryptionConfiguration (
133150 EncryptionConfiguration encryptionConfiguration ) {
134151 this .destinationEncryptionConfiguration = encryptionConfiguration ;
@@ -194,6 +211,7 @@ private CopyJobConfiguration(Builder builder) {
194211 this .sourceTables = checkNotNull (builder .sourceTables );
195212 this .destinationTable = checkNotNull (builder .destinationTable );
196213 this .operationType = builder .operationType ;
214+ this .destinationExpirationTime = builder .destinationExpirationTime ;
197215 this .createDisposition = builder .createDisposition ;
198216 this .writeDisposition = builder .writeDisposition ;
199217 this .destinationEncryptionConfiguration = builder .destinationEncryptionConfiguration ;
@@ -216,6 +234,11 @@ public String getOperationType() {
216234 return operationType ;
217235 }
218236
237+ /** Returns the time when the destination table expires */
238+ public String getDestinationExpirationTime () {
239+ return destinationExpirationTime ;
240+ }
241+
219242 public EncryptionConfiguration getDestinationEncryptionConfiguration () {
220243 return destinationEncryptionConfiguration ;
221244 }
@@ -263,6 +286,7 @@ ToStringHelper toStringHelper() {
263286 .add ("sourceTables" , sourceTables )
264287 .add ("destinationTable" , destinationTable )
265288 .add ("operationType" , operationType )
289+ .add ("destinationExpirationTime" , destinationExpirationTime )
266290 .add ("destinationEncryptionConfiguration" , destinationEncryptionConfiguration )
267291 .add ("createDisposition" , createDisposition )
268292 .add ("writeDisposition" , writeDisposition )
@@ -283,6 +307,7 @@ public int hashCode() {
283307 sourceTables ,
284308 destinationTable ,
285309 operationType ,
310+ destinationExpirationTime ,
286311 createDisposition ,
287312 writeDisposition ,
288313 labels ,
@@ -322,6 +347,9 @@ com.google.api.services.bigquery.model.JobConfiguration toPb() {
322347 if (operationType != null ) {
323348 configurationPb .setOperationType (operationType );
324349 }
350+ if (destinationExpirationTime != null ) {
351+ configurationPb .setDestinationExpirationTime (destinationExpirationTime );
352+ }
325353 if (createDisposition != null ) {
326354 configurationPb .setCreateDisposition (createDisposition .toString ());
327355 }
0 commit comments