
software.amazon.awssdk.services.dynamodb.model.BackupDescription Maven / Gradle / Ivy
/*
* Copyright 2013-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
* the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package software.amazon.awssdk.services.dynamodb.model;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Consumer;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.core.protocol.ProtocolMarshaller;
import software.amazon.awssdk.core.protocol.StructuredPojo;
import software.amazon.awssdk.services.dynamodb.transform.BackupDescriptionMarshaller;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;
/**
*
* Contains the description of the backup created for the table.
*
*/
@Generated("software.amazon.awssdk:codegen")
public final class BackupDescription implements StructuredPojo, ToCopyableBuilder {
private final BackupDetails backupDetails;
private final SourceTableDetails sourceTableDetails;
private final SourceTableFeatureDetails sourceTableFeatureDetails;
private BackupDescription(BuilderImpl builder) {
this.backupDetails = builder.backupDetails;
this.sourceTableDetails = builder.sourceTableDetails;
this.sourceTableFeatureDetails = builder.sourceTableFeatureDetails;
}
/**
*
* Contains the details of the backup created for the table.
*
*
* @return Contains the details of the backup created for the table.
*/
public BackupDetails backupDetails() {
return backupDetails;
}
/**
*
* Contains the details of the table when the backup was created.
*
*
* @return Contains the details of the table when the backup was created.
*/
public SourceTableDetails sourceTableDetails() {
return sourceTableDetails;
}
/**
*
* Contains the details of the features enabled on the table when the backup was created. For example, LSIs, GSIs,
* streams, TTL.
*
*
* @return Contains the details of the features enabled on the table when the backup was created. For example, LSIs,
* GSIs, streams, TTL.
*/
public SourceTableFeatureDetails sourceTableFeatureDetails() {
return sourceTableFeatureDetails;
}
@Override
public Builder toBuilder() {
return new BuilderImpl(this);
}
public static Builder builder() {
return new BuilderImpl();
}
public static Class extends Builder> serializableBuilderClass() {
return BuilderImpl.class;
}
@Override
public int hashCode() {
int hashCode = 1;
hashCode = 31 * hashCode + Objects.hashCode(backupDetails());
hashCode = 31 * hashCode + Objects.hashCode(sourceTableDetails());
hashCode = 31 * hashCode + Objects.hashCode(sourceTableFeatureDetails());
return hashCode;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof BackupDescription)) {
return false;
}
BackupDescription other = (BackupDescription) obj;
return Objects.equals(backupDetails(), other.backupDetails())
&& Objects.equals(sourceTableDetails(), other.sourceTableDetails())
&& Objects.equals(sourceTableFeatureDetails(), other.sourceTableFeatureDetails());
}
@Override
public String toString() {
return ToString.builder("BackupDescription").add("BackupDetails", backupDetails())
.add("SourceTableDetails", sourceTableDetails()).add("SourceTableFeatureDetails", sourceTableFeatureDetails())
.build();
}
public Optional getValueForField(String fieldName, Class clazz) {
switch (fieldName) {
case "BackupDetails":
return Optional.ofNullable(clazz.cast(backupDetails()));
case "SourceTableDetails":
return Optional.ofNullable(clazz.cast(sourceTableDetails()));
case "SourceTableFeatureDetails":
return Optional.ofNullable(clazz.cast(sourceTableFeatureDetails()));
default:
return Optional.empty();
}
}
@SdkInternalApi
@Override
public void marshall(ProtocolMarshaller protocolMarshaller) {
BackupDescriptionMarshaller.getInstance().marshall(this, protocolMarshaller);
}
public interface Builder extends CopyableBuilder {
/**
*
* Contains the details of the backup created for the table.
*
*
* @param backupDetails
* Contains the details of the backup created for the table.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder backupDetails(BackupDetails backupDetails);
/**
*
* Contains the details of the backup created for the table.
*
* This is a convenience that creates an instance of the {@link BackupDetails.Builder} avoiding the need to
* create one manually via {@link BackupDetails#builder()}.
*
* When the {@link Consumer} completes, {@link BackupDetails.Builder#build()} is called immediately and its
* result is passed to {@link #backupDetails(BackupDetails)}.
*
* @param backupDetails
* a consumer that will call methods on {@link BackupDetails.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #backupDetails(BackupDetails)
*/
default Builder backupDetails(Consumer backupDetails) {
return backupDetails(BackupDetails.builder().applyMutation(backupDetails).build());
}
/**
*
* Contains the details of the table when the backup was created.
*
*
* @param sourceTableDetails
* Contains the details of the table when the backup was created.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder sourceTableDetails(SourceTableDetails sourceTableDetails);
/**
*
* Contains the details of the table when the backup was created.
*
* This is a convenience that creates an instance of the {@link SourceTableDetails.Builder} avoiding the need to
* create one manually via {@link SourceTableDetails#builder()}.
*
* When the {@link Consumer} completes, {@link SourceTableDetails.Builder#build()} is called immediately and its
* result is passed to {@link #sourceTableDetails(SourceTableDetails)}.
*
* @param sourceTableDetails
* a consumer that will call methods on {@link SourceTableDetails.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #sourceTableDetails(SourceTableDetails)
*/
default Builder sourceTableDetails(Consumer sourceTableDetails) {
return sourceTableDetails(SourceTableDetails.builder().applyMutation(sourceTableDetails).build());
}
/**
*
* Contains the details of the features enabled on the table when the backup was created. For example, LSIs,
* GSIs, streams, TTL.
*
*
* @param sourceTableFeatureDetails
* Contains the details of the features enabled on the table when the backup was created. For example,
* LSIs, GSIs, streams, TTL.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder sourceTableFeatureDetails(SourceTableFeatureDetails sourceTableFeatureDetails);
/**
*
* Contains the details of the features enabled on the table when the backup was created. For example, LSIs,
* GSIs, streams, TTL.
*
* This is a convenience that creates an instance of the {@link SourceTableFeatureDetails.Builder} avoiding the
* need to create one manually via {@link SourceTableFeatureDetails#builder()}.
*
* When the {@link Consumer} completes, {@link SourceTableFeatureDetails.Builder#build()} is called immediately
* and its result is passed to {@link #sourceTableFeatureDetails(SourceTableFeatureDetails)}.
*
* @param sourceTableFeatureDetails
* a consumer that will call methods on {@link SourceTableFeatureDetails.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #sourceTableFeatureDetails(SourceTableFeatureDetails)
*/
default Builder sourceTableFeatureDetails(Consumer sourceTableFeatureDetails) {
return sourceTableFeatureDetails(SourceTableFeatureDetails.builder().applyMutation(sourceTableFeatureDetails).build());
}
}
static final class BuilderImpl implements Builder {
private BackupDetails backupDetails;
private SourceTableDetails sourceTableDetails;
private SourceTableFeatureDetails sourceTableFeatureDetails;
private BuilderImpl() {
}
private BuilderImpl(BackupDescription model) {
backupDetails(model.backupDetails);
sourceTableDetails(model.sourceTableDetails);
sourceTableFeatureDetails(model.sourceTableFeatureDetails);
}
public final BackupDetails.Builder getBackupDetails() {
return backupDetails != null ? backupDetails.toBuilder() : null;
}
@Override
public final Builder backupDetails(BackupDetails backupDetails) {
this.backupDetails = backupDetails;
return this;
}
public final void setBackupDetails(BackupDetails.BuilderImpl backupDetails) {
this.backupDetails = backupDetails != null ? backupDetails.build() : null;
}
public final SourceTableDetails.Builder getSourceTableDetails() {
return sourceTableDetails != null ? sourceTableDetails.toBuilder() : null;
}
@Override
public final Builder sourceTableDetails(SourceTableDetails sourceTableDetails) {
this.sourceTableDetails = sourceTableDetails;
return this;
}
public final void setSourceTableDetails(SourceTableDetails.BuilderImpl sourceTableDetails) {
this.sourceTableDetails = sourceTableDetails != null ? sourceTableDetails.build() : null;
}
public final SourceTableFeatureDetails.Builder getSourceTableFeatureDetails() {
return sourceTableFeatureDetails != null ? sourceTableFeatureDetails.toBuilder() : null;
}
@Override
public final Builder sourceTableFeatureDetails(SourceTableFeatureDetails sourceTableFeatureDetails) {
this.sourceTableFeatureDetails = sourceTableFeatureDetails;
return this;
}
public final void setSourceTableFeatureDetails(SourceTableFeatureDetails.BuilderImpl sourceTableFeatureDetails) {
this.sourceTableFeatureDetails = sourceTableFeatureDetails != null ? sourceTableFeatureDetails.build() : null;
}
@Override
public BackupDescription build() {
return new BackupDescription(this);
}
}
}