content: /*
   * Copyright (c) 2020-2025 Airbyte, Inc., all rights reserved.
   */
  
  package io.airbyte.config;
  
  import com.fasterxml.jackson.annotation.JsonAnyGetter;
  import com.fasterxml.jackson.annotation.JsonAnySetter;
  import com.fasterxml.jackson.annotation.JsonIgnore;
  import com.fasterxml.jackson.annotation.JsonInclude;
  import com.fasterxml.jackson.annotation.JsonProperty;
  import com.fasterxml.jackson.annotation.JsonPropertyDescription;
  import com.fasterxml.jackson.annotation.JsonPropertyOrder;
  import com.fasterxml.jackson.databind.JsonNode;
  import jakarta.annotation.Generated;
  import java.io.Serializable;
  import java.util.HashMap;
  import java.util.Map;
  import java.util.Objects;
  import java.util.UUID;
  
  /**
   * ConnectorBuilderProject
   * <p>
   * low-code cd project editable in the connector builder UI
   *
   */
  @JsonInclude(JsonInclude.Include.NON_NULL)
  @JsonPropertyOrder({
    "name",
    "builderProjectId",
    "hasDraft",
    "sourceDefinitionId",
    "activeDeclarativeManifestVersion",
    "manifest",
    "manifestVersion",
    "manifestDescription",
    "testingValues",
    "componentsFileContent"
  })
  @Generated(value = "Generated by jsonSchema2Pojo")
  public class ConnectorBuilderProjectVersionedManifest implements Serializable {
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("name")
    private String name;
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("builderProjectId")
    private UUID builderProjectId;
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("hasDraft")
    private Boolean hasDraft;
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("sourceDefinitionId")
    private UUID sourceDefinitionId;
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("activeDeclarativeManifestVersion")
    private Long activeDeclarativeManifestVersion;
    /**
     * Integration specific blob. Must be a valid JSON string. (Required)
     *
     */
    @JsonProperty("manifest")
    @JsonPropertyDescription("Integration specific blob. Must be a valid JSON string.")
    private JsonNode manifest;
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("manifestVersion")
    private Long manifestVersion;
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("manifestDescription")
    private String manifestDescription;
    /**
     * Integration specific blob. Must be a valid JSON string.
     *
     */
    @JsonProperty("testingValues")
    @JsonPropertyDescription("Integration specific blob. Must be a valid JSON string.")
    private JsonNode testingValues;
    /**
     * Source code of components.py
     *
     */
    @JsonProperty("componentsFileContent")
    @JsonPropertyDescription("Source code of components.py")
    private String componentsFileContent;
    @JsonIgnore
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
    private final static long serialVersionUID = -2862795574083254109L;
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("name")
    public String getName() {
      return name;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("name")
    public void setName(String name) {
      this.name = name;
    }
  
    public ConnectorBuilderProjectVersionedManifest withName(String name) {
      this.name = name;
      return this;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("builderProjectId")
    public UUID getBuilderProjectId() {
      return builderProjectId;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("builderProjectId")
    public void setBuilderProjectId(UUID builderProjectId) {
      this.builderProjectId = builderProjectId;
    }
  
    public ConnectorBuilderProjectVersionedManifest withBuilderProjectId(UUID builderProjectId) {
      this.builderProjectId = builderProjectId;
      return this;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("hasDraft")
    public Boolean getHasDraft() {
      return hasDraft;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("hasDraft")
    public void setHasDraft(Boolean hasDraft) {
      this.hasDraft = hasDraft;
    }
  
    public ConnectorBuilderProjectVersionedManifest withHasDraft(Boolean hasDraft) {
      this.hasDraft = hasDraft;
      return this;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("sourceDefinitionId")
    public UUID getSourceDefinitionId() {
      return sourceDefinitionId;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("sourceDefinitionId")
    public void setSourceDefinitionId(UUID sourceDefinitionId) {
      this.sourceDefinitionId = sourceDefinitionId;
    }
  
    public ConnectorBuilderProjectVersionedManifest withSourceDefinitionId(UUID sourceDefinitionId) {
      this.sourceDefinitionId = sourceDefinitionId;
      return this;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("activeDeclarativeManifestVersion")
    public Long getActiveDeclarativeManifestVersion() {
      return activeDeclarativeManifestVersion;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("activeDeclarativeManifestVersion")
    public void setActiveDeclarativeManifestVersion(Long activeDeclarativeManifestVersion) {
      this.activeDeclarativeManifestVersion = activeDeclarativeManifestVersion;
    }
  
    public ConnectorBuilderProjectVersionedManifest withActiveDeclarativeManifestVersion(Long activeDeclarativeManifestVersion) {
      this.activeDeclarativeManifestVersion = activeDeclarativeManifestVersion;
      return this;
    }
  
    /**
     * Integration specific blob. Must be a valid JSON string. (Required)
     *
     */
    @JsonProperty("manifest")
    public JsonNode getManifest() {
      return manifest;
    }
  
    /**
     * Integration specific blob. Must be a valid JSON string. (Required)
     *
     */
    @JsonProperty("manifest")
    public void setManifest(JsonNode manifest) {
      this.manifest = manifest;
    }
  
    public ConnectorBuilderProjectVersionedManifest withManifest(JsonNode manifest) {
      this.manifest = manifest;
      return this;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("manifestVersion")
    public Long getManifestVersion() {
      return manifestVersion;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("manifestVersion")
    public void setManifestVersion(Long manifestVersion) {
      this.manifestVersion = manifestVersion;
    }
  
    public ConnectorBuilderProjectVersionedManifest withManifestVersion(Long manifestVersion) {
      this.manifestVersion = manifestVersion;
      return this;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("manifestDescription")
    public String getManifestDescription() {
      return manifestDescription;
    }
  
    /**
     *
     * (Required)
     *
     */
    @JsonProperty("manifestDescription")
    public void setManifestDescription(String manifestDescription) {
      this.manifestDescription = manifestDescription;
    }
  
    public ConnectorBuilderProjectVersionedManifest withManifestDescription(String manifestDescription) {
      this.manifestDescription = manifestDescription;
      return this;
    }
  
    /**
     * Integration specific blob. Must be a valid JSON string.
     *
     */
    @JsonProperty("testingValues")
    public JsonNode getTestingValues() {
      return testingValues;
    }
  
    /**
     * Integration specific blob. Must be a valid JSON string.
     *
     */
    @JsonProperty("testingValues")
    public void setTestingValues(JsonNode testingValues) {
      this.testingValues = testingValues;
    }
  
    public ConnectorBuilderProjectVersionedManifest withTestingValues(JsonNode testingValues) {
      this.testingValues = testingValues;
      return this;
    }
  
    /**
     * Source code of components.py
     *
     */
    @JsonProperty("componentsFileContent")
    public String getComponentsFileContent() {
      return componentsFileContent;
    }
  
    /**
     * Source code of components.py
     *
     */
    @JsonProperty("componentsFileContent")
    public void setComponentsFileContent(String componentsFileContent) {
      this.componentsFileContent = componentsFileContent;
    }
  
    public ConnectorBuilderProjectVersionedManifest withComponentsFileContent(String componentsFileContent) {
      this.componentsFileContent = componentsFileContent;
      return this;
    }
  
    @JsonAnyGetter
    public Map<String, Object> getAdditionalProperties() {
      return this.additionalProperties;
    }
  
    @JsonAnySetter
    public void setAdditionalProperty(String name, Object value) {
      this.additionalProperties.put(name, value);
    }
  
    public ConnectorBuilderProjectVersionedManifest withAdditionalProperty(String name, Object value) {
      this.additionalProperties.put(name, value);
      return this;
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append(ConnectorBuilderProjectVersionedManifest.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this)))
          .append('[');
      sb.append("name");
      sb.append('=');
      sb.append(((this.name == null) ? "<null>" : this.name));
      sb.append(',');
      sb.append("builderProjectId");
      sb.append('=');
      sb.append(((this.builderProjectId == null) ? "<null>" : this.builderProjectId));
      sb.append(',');
      sb.append("hasDraft");
      sb.append('=');
      sb.append(((this.hasDraft == null) ? "<null>" : this.hasDraft));
      sb.append(',');
      sb.append("sourceDefinitionId");
      sb.append('=');
      sb.append(((this.sourceDefinitionId == null) ? "<null>" : this.sourceDefinitionId));
      sb.append(',');
      sb.append("activeDeclarativeManifestVersion");
      sb.append('=');
      sb.append(((this.activeDeclarativeManifestVersion == null) ? "<null>" : this.activeDeclarativeManifestVersion));
      sb.append(',');
      sb.append("manifest");
      sb.append('=');
      sb.append(((this.manifest == null) ? "<null>" : this.manifest));
      sb.append(',');
      sb.append("manifestVersion");
      sb.append('=');
      sb.append(((this.manifestVersion == null) ? "<null>" : this.manifestVersion));
      sb.append(',');
      sb.append("manifestDescription");
      sb.append('=');
      sb.append(((this.manifestDescription == null) ? "<null>" : this.manifestDescription));
      sb.append(',');
      sb.append("testingValues");
      sb.append('=');
      sb.append(((this.testingValues == null) ? "<null>" : this.testingValues));
      sb.append(',');
      sb.append("componentsFileContent");
      sb.append('=');
      sb.append(((this.componentsFileContent == null) ? "<null>" : this.componentsFileContent));
      sb.append(',');
      sb.append("additionalProperties");
      sb.append('=');
      sb.append(((this.additionalProperties == null) ? "<null>" : this.additionalProperties));
      sb.append(',');
      if (sb.charAt((sb.length() - 1)) == ',') {
        sb.setCharAt((sb.length() - 1), ']');
      } else {
        sb.append(']');
      }
      return sb.toString();
    }
  
    @Override
    public int hashCode() {
      int result = 1;
      result = ((result * 31) + ((this.hasDraft == null) ? 0 : this.hasDraft.hashCode()));
      result = ((result * 31) + ((this.activeDeclarativeManifestVersion == null) ? 0 : this.activeDeclarativeManifestVersion.hashCode()));
      result = ((result * 31) + ((this.builderProjectId == null) ? 0 : this.builderProjectId.hashCode()));
      result = ((result * 31) + ((this.manifestVersion == null) ? 0 : this.manifestVersion.hashCode()));
      result = ((result * 31) + ((this.testingValues == null) ? 0 : this.testingValues.hashCode()));
      result = ((result * 31) + ((this.manifest == null) ? 0 : this.manifest.hashCode()));
      result = ((result * 31) + ((this.manifestDescription == null) ? 0 : this.manifestDescription.hashCode()));
      result = ((result * 31) + ((this.name == null) ? 0 : this.name.hashCode()));
      result = ((result * 31) + ((this.componentsFileContent == null) ? 0 : this.componentsFileContent.hashCode()));
      result = ((result * 31) + ((this.sourceDefinitionId == null) ? 0 : this.sourceDefinitionId.hashCode()));
      result = ((result * 31) + ((this.additionalProperties == null) ? 0 : this.additionalProperties.hashCode()));
      return result;
    }
  
    @Override
    public boolean equals(Object other) {
      if (other == this) {
        return true;
      }
      if ((other instanceof ConnectorBuilderProjectVersionedManifest) == false) {
        return false;
      }
      ConnectorBuilderProjectVersionedManifest rhs = ((ConnectorBuilderProjectVersionedManifest) other);
      return (((((((((((Objects.equals(this.hasDraft, rhs.hasDraft))
          && ((Objects.equals(this.activeDeclarativeManifestVersion, rhs.activeDeclarativeManifestVersion))
              || ((this.activeDeclarativeManifestVersion != null)
                  && this.activeDeclarativeManifestVersion.equals(rhs.activeDeclarativeManifestVersion))))
          && (Objects.equals(this.builderProjectId, rhs.builderProjectId)))
          && ((Objects.equals(this.manifestVersion, rhs.manifestVersion))
              || ((this.manifestVersion != null) && this.manifestVersion.equals(rhs.manifestVersion))))
          && (Objects.equals(this.testingValues, rhs.testingValues)))
          && (Objects.equals(this.manifest, rhs.manifest)))
          && ((Objects.equals(this.manifestDescription, rhs.manifestDescription))
              || ((this.manifestDescription != null) && this.manifestDescription.equals(rhs.manifestDescription))))
          && ((Objects.equals(this.name, rhs.name)) || ((this.name != null) && this.name.equals(rhs.name))))
          && ((Objects.equals(this.componentsFileContent, rhs.componentsFileContent))
              || ((this.componentsFileContent != null) && this.componentsFileContent.equals(rhs.componentsFileContent))))
          && (Objects.equals(this.sourceDefinitionId, rhs.sourceDefinitionId)))
          && (Objects.equals(this.additionalProperties, rhs.additionalProperties)));
    }
  
  }
  