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

com.criteo.api.retailmedia.v2023_01.model.Template Maven / Gradle / Ivy

There is a newer version: 2024.04.0.240515
Show newest version
/*
 * Criteo API
 * Criteo API - RetailMedia
 *
 * The version of the OpenAPI document: 2023-01
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package com.criteo.api.retailmedia.v2023_01.model;

import java.util.Objects;
import java.util.Arrays;
import com.criteo.api.retailmedia.v2023_01.model.Section;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.List;
import org.openapitools.jackson.nullable.JsonNullable;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import com.criteo.api.retailmedia.v2023_01.JSON;

/**
 * A template for creating creatives.
 */
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
public class Template {
  /**
   * The kind of creative this template can be used to build.
   */
  @JsonAdapter(CreativeFormatEnum.Adapter.class)
  public enum CreativeFormatEnum {
    UNKNOWN("Unknown"),
    
    FLAGSHIP("FlagShip"),
    
    SHOWCASE("Showcase"),
    
    SPONSOREDPRODUCTS("SponsoredProducts"),
    
    BUTTERFLY("Butterfly"),
    
    BUNDLEBOOST("BundleBoost"),
    
    IAB("IAB"),
    
    CUSTOM("CUSTOM"),
    
    DISPLAYPANEL("DisplayPanel"),
    
    DIGITALSHELFTALKER("DigitalShelfTalker");

    private String value;

    CreativeFormatEnum(String value) {
      this.value = value;
    }

    public String getValue() {
      return value;
    }

    @Override
    public String toString() {
      return String.valueOf(value);
    }

    public static CreativeFormatEnum fromValue(String value) {
      for (CreativeFormatEnum b : CreativeFormatEnum.values()) {
        if (b.value.equals(value)) {
          return b;
        }
      }
      throw new IllegalArgumentException("Unexpected value '" + value + "'");
    }

    public static class Adapter extends TypeAdapter {
      @Override
      public void write(final JsonWriter jsonWriter, final CreativeFormatEnum enumeration) throws IOException {
        jsonWriter.value(enumeration.getValue());
      }

      @Override
      public CreativeFormatEnum read(final JsonReader jsonReader) throws IOException {
        String value =  jsonReader.nextString();
        return CreativeFormatEnum.fromValue(value);
      }
    }
  }

  public static final String SERIALIZED_NAME_CREATIVE_FORMAT = "creativeFormat";
  @SerializedName(SERIALIZED_NAME_CREATIVE_FORMAT)
  private CreativeFormatEnum creativeFormat;

  public static final String SERIALIZED_NAME_NAME = "name";
  @SerializedName(SERIALIZED_NAME_NAME)
  private String name;

  public static final String SERIALIZED_NAME_RETAILER_ID = "retailerId";
  @SerializedName(SERIALIZED_NAME_RETAILER_ID)
  private Integer retailerId;

  public static final String SERIALIZED_NAME_SKU_COLLECTION_MIN = "skuCollectionMin";
  @SerializedName(SERIALIZED_NAME_SKU_COLLECTION_MIN)
  private Integer skuCollectionMin;

  public static final String SERIALIZED_NAME_SKU_COLLECTION_MAX = "skuCollectionMax";
  @SerializedName(SERIALIZED_NAME_SKU_COLLECTION_MAX)
  private Integer skuCollectionMax;

  public static final String SERIALIZED_NAME_SKU_PER_COLLECTION_MIN = "skuPerCollectionMin";
  @SerializedName(SERIALIZED_NAME_SKU_PER_COLLECTION_MIN)
  private Integer skuPerCollectionMin;

  public static final String SERIALIZED_NAME_SKU_PER_COLLECTION_MAX = "skuPerCollectionMax";
  @SerializedName(SERIALIZED_NAME_SKU_PER_COLLECTION_MAX)
  private Integer skuPerCollectionMax;

  public static final String SERIALIZED_NAME_DISPLAYABLE_SKUS_MAX = "displayableSkusMax";
  @SerializedName(SERIALIZED_NAME_DISPLAYABLE_SKUS_MAX)
  private Integer displayableSkusMax;

  public static final String SERIALIZED_NAME_ALL_COLLECTIONS_MANDATORY = "allCollectionsMandatory";
  @SerializedName(SERIALIZED_NAME_ALL_COLLECTIONS_MANDATORY)
  private Boolean allCollectionsMandatory;

  public static final String SERIALIZED_NAME_CREATED_AT = "createdAt";
  @SerializedName(SERIALIZED_NAME_CREATED_AT)
  private OffsetDateTime createdAt;

  public static final String SERIALIZED_NAME_UPDATED_AT = "updatedAt";
  @SerializedName(SERIALIZED_NAME_UPDATED_AT)
  private OffsetDateTime updatedAt;

  public static final String SERIALIZED_NAME_SECTIONS = "sections";
  @SerializedName(SERIALIZED_NAME_SECTIONS)
  private List
sections = new ArrayList<>(); public Template() { } public Template creativeFormat(CreativeFormatEnum creativeFormat) { this.creativeFormat = creativeFormat; return this; } /** * The kind of creative this template can be used to build. * @return creativeFormat **/ @javax.annotation.Nonnull public CreativeFormatEnum getCreativeFormat() { return creativeFormat; } public void setCreativeFormat(CreativeFormatEnum creativeFormat) { this.creativeFormat = creativeFormat; } public Template name(String name) { this.name = name; return this; } /** * The name of the template * @return name **/ @javax.annotation.Nonnull public String getName() { return name; } public void setName(String name) { this.name = name; } public Template retailerId(Integer retailerId) { this.retailerId = retailerId; return this; } /** * The retailer associated to the template * @return retailerId **/ @javax.annotation.Nullable public Integer getRetailerId() { return retailerId; } public void setRetailerId(Integer retailerId) { this.retailerId = retailerId; } public Template skuCollectionMin(Integer skuCollectionMin) { this.skuCollectionMin = skuCollectionMin; return this; } /** * TODO: what is it ? * @return skuCollectionMin **/ @javax.annotation.Nonnull public Integer getSkuCollectionMin() { return skuCollectionMin; } public void setSkuCollectionMin(Integer skuCollectionMin) { this.skuCollectionMin = skuCollectionMin; } public Template skuCollectionMax(Integer skuCollectionMax) { this.skuCollectionMax = skuCollectionMax; return this; } /** * TODO: what is it ? * @return skuCollectionMax **/ @javax.annotation.Nullable public Integer getSkuCollectionMax() { return skuCollectionMax; } public void setSkuCollectionMax(Integer skuCollectionMax) { this.skuCollectionMax = skuCollectionMax; } public Template skuPerCollectionMin(Integer skuPerCollectionMin) { this.skuPerCollectionMin = skuPerCollectionMin; return this; } /** * TODO: what is it ? * @return skuPerCollectionMin **/ @javax.annotation.Nonnull public Integer getSkuPerCollectionMin() { return skuPerCollectionMin; } public void setSkuPerCollectionMin(Integer skuPerCollectionMin) { this.skuPerCollectionMin = skuPerCollectionMin; } public Template skuPerCollectionMax(Integer skuPerCollectionMax) { this.skuPerCollectionMax = skuPerCollectionMax; return this; } /** * TODO: what is it ? * @return skuPerCollectionMax **/ @javax.annotation.Nullable public Integer getSkuPerCollectionMax() { return skuPerCollectionMax; } public void setSkuPerCollectionMax(Integer skuPerCollectionMax) { this.skuPerCollectionMax = skuPerCollectionMax; } public Template displayableSkusMax(Integer displayableSkusMax) { this.displayableSkusMax = displayableSkusMax; return this; } /** * TODO: what is it ? * @return displayableSkusMax **/ @javax.annotation.Nullable public Integer getDisplayableSkusMax() { return displayableSkusMax; } public void setDisplayableSkusMax(Integer displayableSkusMax) { this.displayableSkusMax = displayableSkusMax; } public Template allCollectionsMandatory(Boolean allCollectionsMandatory) { this.allCollectionsMandatory = allCollectionsMandatory; return this; } /** * TODO: what is it ? * @return allCollectionsMandatory **/ @javax.annotation.Nonnull public Boolean getAllCollectionsMandatory() { return allCollectionsMandatory; } public void setAllCollectionsMandatory(Boolean allCollectionsMandatory) { this.allCollectionsMandatory = allCollectionsMandatory; } public Template createdAt(OffsetDateTime createdAt) { this.createdAt = createdAt; return this; } /** * The time at which the template was created * @return createdAt **/ @javax.annotation.Nonnull public OffsetDateTime getCreatedAt() { return createdAt; } public void setCreatedAt(OffsetDateTime createdAt) { this.createdAt = createdAt; } public Template updatedAt(OffsetDateTime updatedAt) { this.updatedAt = updatedAt; return this; } /** * The time at which the template was updated * @return updatedAt **/ @javax.annotation.Nonnull public OffsetDateTime getUpdatedAt() { return updatedAt; } public void setUpdatedAt(OffsetDateTime updatedAt) { this.updatedAt = updatedAt; } public Template sections(List
sections) { this.sections = sections; return this; } public Template addSectionsItem(Section sectionsItem) { this.sections.add(sectionsItem); return this; } /** * The sections holding various template variables * @return sections **/ @javax.annotation.Nonnull public List
getSections() { return sections; } public void setSections(List
sections) { this.sections = sections; } /** * A container for additional, undeclared properties. * This is a holder for any undeclared properties as specified with * the 'additionalProperties' keyword in the OAS document. */ private Map additionalProperties; /** * Set the additional (undeclared) property with the specified name and value. * If the property does not already exist, create it otherwise replace it. * * @param key name of the property * @param value value of the property * @return the Template instance itself */ public Template putAdditionalProperty(String key, Object value) { if (this.additionalProperties == null) { this.additionalProperties = new HashMap(); } this.additionalProperties.put(key, value); return this; } /** * Return the additional (undeclared) property. * * @return a map of objects */ public Map getAdditionalProperties() { return additionalProperties; } /** * Return the additional (undeclared) property with the specified name. * * @param key name of the property * @return an object */ public Object getAdditionalProperty(String key) { if (this.additionalProperties == null) { return null; } return this.additionalProperties.get(key); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Template template = (Template) o; return Objects.equals(this.creativeFormat, template.creativeFormat) && Objects.equals(this.name, template.name) && Objects.equals(this.retailerId, template.retailerId) && Objects.equals(this.skuCollectionMin, template.skuCollectionMin) && Objects.equals(this.skuCollectionMax, template.skuCollectionMax) && Objects.equals(this.skuPerCollectionMin, template.skuPerCollectionMin) && Objects.equals(this.skuPerCollectionMax, template.skuPerCollectionMax) && Objects.equals(this.displayableSkusMax, template.displayableSkusMax) && Objects.equals(this.allCollectionsMandatory, template.allCollectionsMandatory) && Objects.equals(this.createdAt, template.createdAt) && Objects.equals(this.updatedAt, template.updatedAt) && Objects.equals(this.sections, template.sections)&& Objects.equals(this.additionalProperties, template.additionalProperties); } private static boolean equalsNullable(JsonNullable a, JsonNullable b) { return a == b || (a != null && b != null && a.isPresent() && b.isPresent() && Objects.deepEquals(a.get(), b.get())); } @Override public int hashCode() { return Objects.hash(creativeFormat, name, retailerId, skuCollectionMin, skuCollectionMax, skuPerCollectionMin, skuPerCollectionMax, displayableSkusMax, allCollectionsMandatory, createdAt, updatedAt, sections, additionalProperties); } private static int hashCodeNullable(JsonNullable a) { if (a == null) { return 1; } return a.isPresent() ? Arrays.deepHashCode(new Object[]{a.get()}) : 31; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class Template {\n"); sb.append(" creativeFormat: ").append(toIndentedString(creativeFormat)).append("\n"); sb.append(" name: ").append(toIndentedString(name)).append("\n"); sb.append(" retailerId: ").append(toIndentedString(retailerId)).append("\n"); sb.append(" skuCollectionMin: ").append(toIndentedString(skuCollectionMin)).append("\n"); sb.append(" skuCollectionMax: ").append(toIndentedString(skuCollectionMax)).append("\n"); sb.append(" skuPerCollectionMin: ").append(toIndentedString(skuPerCollectionMin)).append("\n"); sb.append(" skuPerCollectionMax: ").append(toIndentedString(skuPerCollectionMax)).append("\n"); sb.append(" displayableSkusMax: ").append(toIndentedString(displayableSkusMax)).append("\n"); sb.append(" allCollectionsMandatory: ").append(toIndentedString(allCollectionsMandatory)).append("\n"); sb.append(" createdAt: ").append(toIndentedString(createdAt)).append("\n"); sb.append(" updatedAt: ").append(toIndentedString(updatedAt)).append("\n"); sb.append(" sections: ").append(toIndentedString(sections)).append("\n"); sb.append(" additionalProperties: ").append(toIndentedString(additionalProperties)).append("\n"); sb.append("}"); return sb.toString(); } /** * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ private String toIndentedString(Object o) { if (o == null) { return "null"; } return o.toString().replace("\n", "\n "); } public static HashSet openapiFields; public static HashSet openapiRequiredFields; static { // a set of all properties/fields (JSON key names) openapiFields = new HashSet(); openapiFields.add("creativeFormat"); openapiFields.add("name"); openapiFields.add("retailerId"); openapiFields.add("skuCollectionMin"); openapiFields.add("skuCollectionMax"); openapiFields.add("skuPerCollectionMin"); openapiFields.add("skuPerCollectionMax"); openapiFields.add("displayableSkusMax"); openapiFields.add("allCollectionsMandatory"); openapiFields.add("createdAt"); openapiFields.add("updatedAt"); openapiFields.add("sections"); // a set of required properties/fields (JSON key names) openapiRequiredFields = new HashSet(); openapiRequiredFields.add("creativeFormat"); openapiRequiredFields.add("name"); openapiRequiredFields.add("skuCollectionMin"); openapiRequiredFields.add("skuPerCollectionMin"); openapiRequiredFields.add("allCollectionsMandatory"); openapiRequiredFields.add("createdAt"); openapiRequiredFields.add("updatedAt"); openapiRequiredFields.add("sections"); } /** * Validates the JSON Object and throws an exception if issues found * * @param jsonObj JSON Object * @throws IOException if the JSON Object is invalid with respect to Template */ public static void validateJsonObject(JsonObject jsonObj) throws IOException { if (jsonObj == null) { if (!Template.openapiRequiredFields.isEmpty()) { // has required fields but JSON object is null throw new IllegalArgumentException(String.format("The required field(s) %s in Template is not found in the empty JSON string", Template.openapiRequiredFields.toString())); } } // check to make sure all required properties/fields are present in the JSON string for (String requiredField : Template.openapiRequiredFields) { if (jsonObj.get(requiredField) == null) { throw new IllegalArgumentException(String.format("The required field `%s` is not found in the JSON string: %s", requiredField, jsonObj.toString())); } } if (!jsonObj.get("creativeFormat").isJsonPrimitive()) { throw new IllegalArgumentException(String.format("Expected the field `creativeFormat` to be a primitive type in the JSON string but got `%s`", jsonObj.get("creativeFormat").toString())); } if (!jsonObj.get("name").isJsonPrimitive()) { throw new IllegalArgumentException(String.format("Expected the field `name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("name").toString())); } // ensure the json data is an array if (!jsonObj.get("sections").isJsonArray()) { throw new IllegalArgumentException(String.format("Expected the field `sections` to be an array in the JSON string but got `%s`", jsonObj.get("sections").toString())); } JsonArray jsonArraysections = jsonObj.getAsJsonArray("sections"); // validate the required field `sections` (array) for (int i = 0; i < jsonArraysections.size(); i++) { Section.validateJsonObject(jsonArraysections.get(i).getAsJsonObject()); }; } public static class CustomTypeAdapterFactory implements TypeAdapterFactory { @SuppressWarnings("unchecked") @Override public TypeAdapter create(Gson gson, TypeToken type) { if (!Template.class.isAssignableFrom(type.getRawType())) { return null; // this class only serializes 'Template' and its subtypes } final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); final TypeAdapter