All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.services.rekognition.model.Label Maven / Gradle / Ivy

/*
 * Copyright 2014-2019 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.rekognition.model;

import java.io.Serializable;
import java.util.Arrays;
import java.util.Collection;
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 java.util.stream.Collectors;
import java.util.stream.Stream;
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.ListTrait;
import software.amazon.awssdk.core.traits.LocationTrait;
import software.amazon.awssdk.core.util.DefaultSdkAutoConstructList;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;

/**
 * 

* Structure containing details about the detected label, including the name, detected instances, parent labels, and * level of confidence. *

*

*

*/ @Generated("software.amazon.awssdk:codegen") public final class Label implements SdkPojo, Serializable, ToCopyableBuilder { private static final SdkField NAME_FIELD = SdkField. builder(MarshallingType.STRING) .getter(getter(Label::name)).setter(setter(Builder::name)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Name").build()).build(); private static final SdkField CONFIDENCE_FIELD = SdkField. builder(MarshallingType.FLOAT) .getter(getter(Label::confidence)).setter(setter(Builder::confidence)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Confidence").build()).build(); private static final SdkField> INSTANCES_FIELD = SdkField .> builder(MarshallingType.LIST) .getter(getter(Label::instances)) .setter(setter(Builder::instances)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Instances").build(), ListTrait .builder() .memberLocationName(null) .memberFieldInfo( SdkField. builder(MarshallingType.SDK_POJO) .constructor(Instance::builder) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD) .locationName("member").build()).build()).build()).build(); private static final SdkField> PARENTS_FIELD = SdkField .> builder(MarshallingType.LIST) .getter(getter(Label::parents)) .setter(setter(Builder::parents)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Parents").build(), ListTrait .builder() .memberLocationName(null) .memberFieldInfo( SdkField. builder(MarshallingType.SDK_POJO) .constructor(Parent::builder) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD) .locationName("member").build()).build()).build()).build(); private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(NAME_FIELD, CONFIDENCE_FIELD, INSTANCES_FIELD, PARENTS_FIELD)); private static final long serialVersionUID = 1L; private final String name; private final Float confidence; private final List instances; private final List parents; private Label(BuilderImpl builder) { this.name = builder.name; this.confidence = builder.confidence; this.instances = builder.instances; this.parents = builder.parents; } /** *

* The name (label) of the object or scene. *

* * @return The name (label) of the object or scene. */ public String name() { return name; } /** *

* Level of confidence. *

* * @return Level of confidence. */ public Float confidence() { return confidence; } /** *

* If Label represents an object, Instances contains the bounding boxes for each instance * of the detected object. Bounding boxes are returned for common object labels such as people, cars, furniture, * apparel or pets. *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

* * @return If Label represents an object, Instances contains the bounding boxes for each * instance of the detected object. Bounding boxes are returned for common object labels such as people, * cars, furniture, apparel or pets. */ public List instances() { return instances; } /** *

* The parent labels for a label. The response includes all ancestor labels. *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

* * @return The parent labels for a label. The response includes all ancestor labels. */ public List parents() { return parents; } @Override public Builder toBuilder() { return new BuilderImpl(this); } public static Builder builder() { return new BuilderImpl(); } public static Class serializableBuilderClass() { return BuilderImpl.class; } @Override public int hashCode() { int hashCode = 1; hashCode = 31 * hashCode + Objects.hashCode(name()); hashCode = 31 * hashCode + Objects.hashCode(confidence()); hashCode = 31 * hashCode + Objects.hashCode(instances()); hashCode = 31 * hashCode + Objects.hashCode(parents()); return hashCode; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof Label)) { return false; } Label other = (Label) obj; return Objects.equals(name(), other.name()) && Objects.equals(confidence(), other.confidence()) && Objects.equals(instances(), other.instances()) && Objects.equals(parents(), other.parents()); } /** * 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 String toString() { return ToString.builder("Label").add("Name", name()).add("Confidence", confidence()).add("Instances", instances()) .add("Parents", parents()).build(); } public Optional getValueForField(String fieldName, Class clazz) { switch (fieldName) { case "Name": return Optional.ofNullable(clazz.cast(name())); case "Confidence": return Optional.ofNullable(clazz.cast(confidence())); case "Instances": return Optional.ofNullable(clazz.cast(instances())); case "Parents": return Optional.ofNullable(clazz.cast(parents())); default: return Optional.empty(); } } @Override public List> sdkFields() { return SDK_FIELDS; } private static Function getter(Function g) { return obj -> g.apply((Label) obj); } private static BiConsumer setter(BiConsumer s) { return (obj, val) -> s.accept((Builder) obj, val); } public interface Builder extends SdkPojo, CopyableBuilder { /** *

* The name (label) of the object or scene. *

* * @param name * The name (label) of the object or scene. * @return Returns a reference to this object so that method calls can be chained together. */ Builder name(String name); /** *

* Level of confidence. *

* * @param confidence * Level of confidence. * @return Returns a reference to this object so that method calls can be chained together. */ Builder confidence(Float confidence); /** *

* If Label represents an object, Instances contains the bounding boxes for each * instance of the detected object. Bounding boxes are returned for common object labels such as people, cars, * furniture, apparel or pets. *

* * @param instances * If Label represents an object, Instances contains the bounding boxes for * each instance of the detected object. Bounding boxes are returned for common object labels such as * people, cars, furniture, apparel or pets. * @return Returns a reference to this object so that method calls can be chained together. */ Builder instances(Collection instances); /** *

* If Label represents an object, Instances contains the bounding boxes for each * instance of the detected object. Bounding boxes are returned for common object labels such as people, cars, * furniture, apparel or pets. *

* * @param instances * If Label represents an object, Instances contains the bounding boxes for * each instance of the detected object. Bounding boxes are returned for common object labels such as * people, cars, furniture, apparel or pets. * @return Returns a reference to this object so that method calls can be chained together. */ Builder instances(Instance... instances); /** *

* If Label represents an object, Instances contains the bounding boxes for each * instance of the detected object. Bounding boxes are returned for common object labels such as people, cars, * furniture, apparel or pets. *

* This is a convenience that creates an instance of the {@link List.Builder} avoiding the need to * create one manually via {@link List#builder()}. * * When the {@link Consumer} completes, {@link List.Builder#build()} is called immediately and its * result is passed to {@link #instances(List)}. * * @param instances * a consumer that will call methods on {@link List.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #instances(List) */ Builder instances(Consumer... instances); /** *

* The parent labels for a label. The response includes all ancestor labels. *

* * @param parents * The parent labels for a label. The response includes all ancestor labels. * @return Returns a reference to this object so that method calls can be chained together. */ Builder parents(Collection parents); /** *

* The parent labels for a label. The response includes all ancestor labels. *

* * @param parents * The parent labels for a label. The response includes all ancestor labels. * @return Returns a reference to this object so that method calls can be chained together. */ Builder parents(Parent... parents); /** *

* The parent labels for a label. The response includes all ancestor labels. *

* This is a convenience that creates an instance of the {@link List.Builder} avoiding the need to * create one manually via {@link List#builder()}. * * When the {@link Consumer} completes, {@link List.Builder#build()} is called immediately and its * result is passed to {@link #parents(List)}. * * @param parents * a consumer that will call methods on {@link List.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #parents(List) */ Builder parents(Consumer... parents); } static final class BuilderImpl implements Builder { private String name; private Float confidence; private List instances = DefaultSdkAutoConstructList.getInstance(); private List parents = DefaultSdkAutoConstructList.getInstance(); private BuilderImpl() { } private BuilderImpl(Label model) { name(model.name); confidence(model.confidence); instances(model.instances); parents(model.parents); } public final String getName() { return name; } @Override public final Builder name(String name) { this.name = name; return this; } public final void setName(String name) { this.name = name; } public final Float getConfidence() { return confidence; } @Override public final Builder confidence(Float confidence) { this.confidence = confidence; return this; } public final void setConfidence(Float confidence) { this.confidence = confidence; } public final Collection getInstances() { return instances != null ? instances.stream().map(Instance::toBuilder).collect(Collectors.toList()) : null; } @Override public final Builder instances(Collection instances) { this.instances = InstancesCopier.copy(instances); return this; } @Override @SafeVarargs public final Builder instances(Instance... instances) { instances(Arrays.asList(instances)); return this; } @Override @SafeVarargs public final Builder instances(Consumer... instances) { instances(Stream.of(instances).map(c -> Instance.builder().applyMutation(c).build()).collect(Collectors.toList())); return this; } public final void setInstances(Collection instances) { this.instances = InstancesCopier.copyFromBuilder(instances); } public final Collection getParents() { return parents != null ? parents.stream().map(Parent::toBuilder).collect(Collectors.toList()) : null; } @Override public final Builder parents(Collection parents) { this.parents = ParentsCopier.copy(parents); return this; } @Override @SafeVarargs public final Builder parents(Parent... parents) { parents(Arrays.asList(parents)); return this; } @Override @SafeVarargs public final Builder parents(Consumer... parents) { parents(Stream.of(parents).map(c -> Parent.builder().applyMutation(c).build()).collect(Collectors.toList())); return this; } public final void setParents(Collection parents) { this.parents = ParentsCopier.copyFromBuilder(parents); } @Override public Label build() { return new Label(this); } @Override public List> sdkFields() { return SDK_FIELDS; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy