
software.amazon.awssdk.services.glue.model.ColumnStatisticsData Maven / Gradle / Ivy
/*
* Copyright 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.glue.model;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.core.SdkField;
import software.amazon.awssdk.core.SdkPojo;
import software.amazon.awssdk.core.protocol.MarshallLocation;
import software.amazon.awssdk.core.protocol.MarshallingType;
import software.amazon.awssdk.core.traits.LocationTrait;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;
/**
*
* Contains the individual types of column statistics data. Only one data object should be set and indicated by the
* Type
attribute.
*
*/
@Generated("software.amazon.awssdk:codegen")
public final class ColumnStatisticsData implements SdkPojo, Serializable,
ToCopyableBuilder {
private static final SdkField TYPE_FIELD = SdkField. builder(MarshallingType.STRING).memberName("Type")
.getter(getter(ColumnStatisticsData::typeAsString)).setter(setter(Builder::type))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Type").build()).build();
private static final SdkField BOOLEAN_COLUMN_STATISTICS_DATA_FIELD = SdkField
. builder(MarshallingType.SDK_POJO)
.memberName("BooleanColumnStatisticsData")
.getter(getter(ColumnStatisticsData::booleanColumnStatisticsData))
.setter(setter(Builder::booleanColumnStatisticsData))
.constructor(BooleanColumnStatisticsData::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("BooleanColumnStatisticsData")
.build()).build();
private static final SdkField DATE_COLUMN_STATISTICS_DATA_FIELD = SdkField
. builder(MarshallingType.SDK_POJO).memberName("DateColumnStatisticsData")
.getter(getter(ColumnStatisticsData::dateColumnStatisticsData)).setter(setter(Builder::dateColumnStatisticsData))
.constructor(DateColumnStatisticsData::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("DateColumnStatisticsData").build())
.build();
private static final SdkField DECIMAL_COLUMN_STATISTICS_DATA_FIELD = SdkField
. builder(MarshallingType.SDK_POJO)
.memberName("DecimalColumnStatisticsData")
.getter(getter(ColumnStatisticsData::decimalColumnStatisticsData))
.setter(setter(Builder::decimalColumnStatisticsData))
.constructor(DecimalColumnStatisticsData::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("DecimalColumnStatisticsData")
.build()).build();
private static final SdkField DOUBLE_COLUMN_STATISTICS_DATA_FIELD = SdkField
. builder(MarshallingType.SDK_POJO)
.memberName("DoubleColumnStatisticsData")
.getter(getter(ColumnStatisticsData::doubleColumnStatisticsData))
.setter(setter(Builder::doubleColumnStatisticsData))
.constructor(DoubleColumnStatisticsData::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("DoubleColumnStatisticsData").build())
.build();
private static final SdkField LONG_COLUMN_STATISTICS_DATA_FIELD = SdkField
. builder(MarshallingType.SDK_POJO).memberName("LongColumnStatisticsData")
.getter(getter(ColumnStatisticsData::longColumnStatisticsData)).setter(setter(Builder::longColumnStatisticsData))
.constructor(LongColumnStatisticsData::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("LongColumnStatisticsData").build())
.build();
private static final SdkField STRING_COLUMN_STATISTICS_DATA_FIELD = SdkField
. builder(MarshallingType.SDK_POJO)
.memberName("StringColumnStatisticsData")
.getter(getter(ColumnStatisticsData::stringColumnStatisticsData))
.setter(setter(Builder::stringColumnStatisticsData))
.constructor(StringColumnStatisticsData::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("StringColumnStatisticsData").build())
.build();
private static final SdkField BINARY_COLUMN_STATISTICS_DATA_FIELD = SdkField
. builder(MarshallingType.SDK_POJO)
.memberName("BinaryColumnStatisticsData")
.getter(getter(ColumnStatisticsData::binaryColumnStatisticsData))
.setter(setter(Builder::binaryColumnStatisticsData))
.constructor(BinaryColumnStatisticsData::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("BinaryColumnStatisticsData").build())
.build();
private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(TYPE_FIELD,
BOOLEAN_COLUMN_STATISTICS_DATA_FIELD, DATE_COLUMN_STATISTICS_DATA_FIELD, DECIMAL_COLUMN_STATISTICS_DATA_FIELD,
DOUBLE_COLUMN_STATISTICS_DATA_FIELD, LONG_COLUMN_STATISTICS_DATA_FIELD, STRING_COLUMN_STATISTICS_DATA_FIELD,
BINARY_COLUMN_STATISTICS_DATA_FIELD));
private static final long serialVersionUID = 1L;
private final String type;
private final BooleanColumnStatisticsData booleanColumnStatisticsData;
private final DateColumnStatisticsData dateColumnStatisticsData;
private final DecimalColumnStatisticsData decimalColumnStatisticsData;
private final DoubleColumnStatisticsData doubleColumnStatisticsData;
private final LongColumnStatisticsData longColumnStatisticsData;
private final StringColumnStatisticsData stringColumnStatisticsData;
private final BinaryColumnStatisticsData binaryColumnStatisticsData;
private ColumnStatisticsData(BuilderImpl builder) {
this.type = builder.type;
this.booleanColumnStatisticsData = builder.booleanColumnStatisticsData;
this.dateColumnStatisticsData = builder.dateColumnStatisticsData;
this.decimalColumnStatisticsData = builder.decimalColumnStatisticsData;
this.doubleColumnStatisticsData = builder.doubleColumnStatisticsData;
this.longColumnStatisticsData = builder.longColumnStatisticsData;
this.stringColumnStatisticsData = builder.stringColumnStatisticsData;
this.binaryColumnStatisticsData = builder.binaryColumnStatisticsData;
}
/**
*
* The type of column statistics data.
*
*
* If the service returns an enum value that is not available in the current SDK version, {@link #type} will return
* {@link ColumnStatisticsType#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from
* {@link #typeAsString}.
*
*
* @return The type of column statistics data.
* @see ColumnStatisticsType
*/
public final ColumnStatisticsType type() {
return ColumnStatisticsType.fromValue(type);
}
/**
*
* The type of column statistics data.
*
*
* If the service returns an enum value that is not available in the current SDK version, {@link #type} will return
* {@link ColumnStatisticsType#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from
* {@link #typeAsString}.
*
*
* @return The type of column statistics data.
* @see ColumnStatisticsType
*/
public final String typeAsString() {
return type;
}
/**
*
* Boolean column statistics data.
*
*
* @return Boolean column statistics data.
*/
public final BooleanColumnStatisticsData booleanColumnStatisticsData() {
return booleanColumnStatisticsData;
}
/**
*
* Date column statistics data.
*
*
* @return Date column statistics data.
*/
public final DateColumnStatisticsData dateColumnStatisticsData() {
return dateColumnStatisticsData;
}
/**
*
* Decimal column statistics data.
*
*
* @return Decimal column statistics data.
*/
public final DecimalColumnStatisticsData decimalColumnStatisticsData() {
return decimalColumnStatisticsData;
}
/**
*
* Double column statistics data.
*
*
* @return Double column statistics data.
*/
public final DoubleColumnStatisticsData doubleColumnStatisticsData() {
return doubleColumnStatisticsData;
}
/**
*
* Long column statistics data.
*
*
* @return Long column statistics data.
*/
public final LongColumnStatisticsData longColumnStatisticsData() {
return longColumnStatisticsData;
}
/**
*
* String column statistics data.
*
*
* @return String column statistics data.
*/
public final StringColumnStatisticsData stringColumnStatisticsData() {
return stringColumnStatisticsData;
}
/**
*
* Binary column statistics data.
*
*
* @return Binary column statistics data.
*/
public final BinaryColumnStatisticsData binaryColumnStatisticsData() {
return binaryColumnStatisticsData;
}
@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 final int hashCode() {
int hashCode = 1;
hashCode = 31 * hashCode + Objects.hashCode(typeAsString());
hashCode = 31 * hashCode + Objects.hashCode(booleanColumnStatisticsData());
hashCode = 31 * hashCode + Objects.hashCode(dateColumnStatisticsData());
hashCode = 31 * hashCode + Objects.hashCode(decimalColumnStatisticsData());
hashCode = 31 * hashCode + Objects.hashCode(doubleColumnStatisticsData());
hashCode = 31 * hashCode + Objects.hashCode(longColumnStatisticsData());
hashCode = 31 * hashCode + Objects.hashCode(stringColumnStatisticsData());
hashCode = 31 * hashCode + Objects.hashCode(binaryColumnStatisticsData());
return hashCode;
}
@Override
public final boolean equals(Object obj) {
return equalsBySdkFields(obj);
}
@Override
public final boolean equalsBySdkFields(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof ColumnStatisticsData)) {
return false;
}
ColumnStatisticsData other = (ColumnStatisticsData) obj;
return Objects.equals(typeAsString(), other.typeAsString())
&& Objects.equals(booleanColumnStatisticsData(), other.booleanColumnStatisticsData())
&& Objects.equals(dateColumnStatisticsData(), other.dateColumnStatisticsData())
&& Objects.equals(decimalColumnStatisticsData(), other.decimalColumnStatisticsData())
&& Objects.equals(doubleColumnStatisticsData(), other.doubleColumnStatisticsData())
&& Objects.equals(longColumnStatisticsData(), other.longColumnStatisticsData())
&& Objects.equals(stringColumnStatisticsData(), other.stringColumnStatisticsData())
&& Objects.equals(binaryColumnStatisticsData(), other.binaryColumnStatisticsData());
}
/**
* Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be
* redacted from this string using a placeholder value.
*/
@Override
public final String toString() {
return ToString.builder("ColumnStatisticsData").add("Type", typeAsString())
.add("BooleanColumnStatisticsData", booleanColumnStatisticsData())
.add("DateColumnStatisticsData", dateColumnStatisticsData())
.add("DecimalColumnStatisticsData", decimalColumnStatisticsData())
.add("DoubleColumnStatisticsData", doubleColumnStatisticsData())
.add("LongColumnStatisticsData", longColumnStatisticsData())
.add("StringColumnStatisticsData", stringColumnStatisticsData())
.add("BinaryColumnStatisticsData", binaryColumnStatisticsData()).build();
}
public final Optional getValueForField(String fieldName, Class clazz) {
switch (fieldName) {
case "Type":
return Optional.ofNullable(clazz.cast(typeAsString()));
case "BooleanColumnStatisticsData":
return Optional.ofNullable(clazz.cast(booleanColumnStatisticsData()));
case "DateColumnStatisticsData":
return Optional.ofNullable(clazz.cast(dateColumnStatisticsData()));
case "DecimalColumnStatisticsData":
return Optional.ofNullable(clazz.cast(decimalColumnStatisticsData()));
case "DoubleColumnStatisticsData":
return Optional.ofNullable(clazz.cast(doubleColumnStatisticsData()));
case "LongColumnStatisticsData":
return Optional.ofNullable(clazz.cast(longColumnStatisticsData()));
case "StringColumnStatisticsData":
return Optional.ofNullable(clazz.cast(stringColumnStatisticsData()));
case "BinaryColumnStatisticsData":
return Optional.ofNullable(clazz.cast(binaryColumnStatisticsData()));
default:
return Optional.empty();
}
}
@Override
public final List> sdkFields() {
return SDK_FIELDS;
}
private static Function