@@ -344,11 +344,26 @@ public String toString() {
344
344
}
345
345
}
346
346
347
+ /**
348
+ * Configuration for the Autoclass settings of a bucket.
349
+ *
350
+ * @see <a
351
+ * href="https://cloud.google.com/storage/docs/autoclass">https://cloud.google.com/storage/docs/autoclass</a>
352
+ */
347
353
public static final class Autoclass implements Serializable {
348
354
349
355
private static final long serialVersionUID = -2378172222188072439L ;
350
- private Boolean enabled ;
351
- private OffsetDateTime toggleTime ;
356
+ private final Boolean enabled ;
357
+ private final OffsetDateTime toggleTime ;
358
+ private final StorageClass terminalStorageClass ;
359
+ private final OffsetDateTime terminalStorageClassUpdateTime ;
360
+
361
+ private Autoclass (Builder builder ) {
362
+ this .enabled = builder .enabled ;
363
+ this .toggleTime = builder .toggleTime ;
364
+ this .terminalStorageClass = builder .terminalStorageClass ;
365
+ this .terminalStorageClassUpdateTime = builder .terminalStorageClassUpdateTime ;
366
+ }
352
367
353
368
public Boolean getEnabled () {
354
369
return enabled ;
@@ -358,6 +373,14 @@ public OffsetDateTime getToggleTime() {
358
373
return toggleTime ;
359
374
}
360
375
376
+ public StorageClass getTerminalStorageClass () {
377
+ return terminalStorageClass ;
378
+ }
379
+
380
+ public OffsetDateTime getTerminalStorageClassUpdateTime () {
381
+ return terminalStorageClassUpdateTime ;
382
+ }
383
+
361
384
@ Override
362
385
public boolean equals (Object o ) {
363
386
if (this == o ) {
@@ -366,41 +389,47 @@ public boolean equals(Object o) {
366
389
if (!(o instanceof Autoclass )) {
367
390
return false ;
368
391
}
369
- Autoclass that = (Autoclass ) o ;
370
- return Objects .equals (enabled , that .enabled ) && Objects .equals (toggleTime , that .toggleTime );
392
+ Autoclass autoclass = (Autoclass ) o ;
393
+ return Objects .equals (enabled , autoclass .enabled )
394
+ && Objects .equals (toggleTime , autoclass .toggleTime )
395
+ && Objects .equals (terminalStorageClass , autoclass .terminalStorageClass )
396
+ && Objects .equals (
397
+ terminalStorageClassUpdateTime , autoclass .terminalStorageClassUpdateTime );
371
398
}
372
399
373
400
@ Override
374
401
public int hashCode () {
375
- return Objects .hash (enabled , toggleTime );
402
+ return Objects .hash (
403
+ enabled , toggleTime , terminalStorageClass , terminalStorageClassUpdateTime );
376
404
}
377
405
378
406
@ Override
379
407
public String toString () {
380
408
return MoreObjects .toStringHelper (this )
381
409
.add ("enabled" , enabled )
382
410
.add ("toggleTime" , toggleTime )
411
+ .add ("terminalStorageClass" , terminalStorageClass )
412
+ .add ("terminalStorageClassUpdateTime" , terminalStorageClassUpdateTime )
383
413
.toString ();
384
414
}
385
415
386
- private Autoclass () {}
387
-
388
- private Autoclass (Builder builder ) {
389
- this .enabled = builder .enabled ;
390
- this .toggleTime = builder .toggleTime ;
391
- }
392
-
393
416
public static Builder newBuilder () {
394
417
return new Builder ();
395
418
}
396
419
397
420
public Builder toBuilder () {
398
- return newBuilder ().setEnabled (enabled ).setToggleTime (toggleTime );
421
+ return newBuilder ()
422
+ .setEnabled (enabled )
423
+ .setToggleTime (toggleTime )
424
+ .setTerminalStorageClass (terminalStorageClass )
425
+ .setTerminalStorageClassUpdateTime (terminalStorageClassUpdateTime );
399
426
}
400
427
401
428
public static final class Builder {
402
429
private Boolean enabled ;
403
430
private OffsetDateTime toggleTime ;
431
+ private StorageClass terminalStorageClass ;
432
+ private OffsetDateTime terminalStorageClassUpdateTime ;
404
433
405
434
/**
406
435
* Sets whether Autoclass is enabled for this bucket. Currently, autoclass can only be enabled
@@ -421,6 +450,30 @@ Builder setToggleTime(OffsetDateTime toggleTime) {
421
450
return this ;
422
451
}
423
452
453
+ /**
454
+ * When set to {@link StorageClass#NEARLINE}, Autoclass restricts transitions between Standard
455
+ * and Nearline storage classes only.
456
+ *
457
+ * <p>When set to {@link StorageClass#ARCHIVE}, Autoclass allows transitions to Coldline and
458
+ * Archive as well.
459
+ *
460
+ * <p>Only valid values are {@code NEARLINE} and {@code ARCHIVE}.
461
+ */
462
+ public Builder setTerminalStorageClass (StorageClass terminalStorageClass ) {
463
+ this .terminalStorageClass = terminalStorageClass ;
464
+ return this ;
465
+ }
466
+
467
+ /**
468
+ * The time at which Autoclass terminal storage class was last updated for this bucket.
469
+ *
470
+ * <p>This is auto populated when the feature is enabled.
471
+ */
472
+ Builder setTerminalStorageClassUpdateTime (OffsetDateTime terminalStorageClassUpdateTime ) {
473
+ this .terminalStorageClassUpdateTime = terminalStorageClassUpdateTime ;
474
+ return this ;
475
+ }
476
+
424
477
public Autoclass build () {
425
478
return new Autoclass (this );
426
479
}
0 commit comments