/*
 * Swagger of Opencellsoft Api
 * @#Introduction
 *
 * The version of the OpenAPI document: 7.3.1-SNAPSHOT
 * Contact: contact@opencellsoft.fr
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package org.openapitools.client.model;

import java.util.Objects;
import java.util.Arrays;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.IOException;
import org.openapitools.client.model.BusinessEntity;
import org.openapitools.client.model.DatePeriod;
import org.openapitools.client.model.MeveoModule;

/**
 * MeveoModuleItem
 */
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2019-09-13T10:03:17.753Z[GMT]")
public class MeveoModuleItem {
  public static final String SERIALIZED_NAME_ID = "id";
  @SerializedName(SERIALIZED_NAME_ID)
  private Long id;

  public static final String SERIALIZED_NAME_VERSION = "version";
  @SerializedName(SERIALIZED_NAME_VERSION)
  private Integer version;

  public static final String SERIALIZED_NAME_MEVEO_MODULE = "meveoModule";
  @SerializedName(SERIALIZED_NAME_MEVEO_MODULE)
  private MeveoModule meveoModule;

  public static final String SERIALIZED_NAME_APPLIES_TO = "appliesTo";
  @SerializedName(SERIALIZED_NAME_APPLIES_TO)
  private String appliesTo;

  public static final String SERIALIZED_NAME_ITEM_CLASS = "itemClass";
  @SerializedName(SERIALIZED_NAME_ITEM_CLASS)
  private String itemClass;

  public static final String SERIALIZED_NAME_ITEM_CODE = "itemCode";
  @SerializedName(SERIALIZED_NAME_ITEM_CODE)
  private String itemCode;

  public static final String SERIALIZED_NAME_VALIDITY = "validity";
  @SerializedName(SERIALIZED_NAME_VALIDITY)
  private DatePeriod validity;

  public static final String SERIALIZED_NAME_ITEM_ENTITY = "itemEntity";
  @SerializedName(SERIALIZED_NAME_ITEM_ENTITY)
  private BusinessEntity itemEntity;

  public static final String SERIALIZED_NAME_ITEM_CLASS_SIMPLE_NAME = "itemClassSimpleName";
  @SerializedName(SERIALIZED_NAME_ITEM_CLASS_SIMPLE_NAME)
  private String itemClassSimpleName;

  public static final String SERIALIZED_NAME_TRANSIENT = "transient";
  @SerializedName(SERIALIZED_NAME_TRANSIENT)
  private Boolean _transient;


  public MeveoModuleItem id(Long id) {
    
    this.id = id;
    return this;
  }

   /**
   * Get id
   * @return id
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public Long getId() {
    return id;
  }



  public void setId(Long id) {
    this.id = id;
  }


  public MeveoModuleItem version(Integer version) {
    
    this.version = version;
    return this;
  }

   /**
   * Get version
   * @return version
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public Integer getVersion() {
    return version;
  }



  public void setVersion(Integer version) {
    this.version = version;
  }


  public MeveoModuleItem meveoModule(MeveoModule meveoModule) {
    
    this.meveoModule = meveoModule;
    return this;
  }

   /**
   * Get meveoModule
   * @return meveoModule
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public MeveoModule getMeveoModule() {
    return meveoModule;
  }



  public void setMeveoModule(MeveoModule meveoModule) {
    this.meveoModule = meveoModule;
  }


  public MeveoModuleItem appliesTo(String appliesTo) {
    
    this.appliesTo = appliesTo;
    return this;
  }

   /**
   * Get appliesTo
   * @return appliesTo
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getAppliesTo() {
    return appliesTo;
  }



  public void setAppliesTo(String appliesTo) {
    this.appliesTo = appliesTo;
  }


  public MeveoModuleItem itemClass(String itemClass) {
    
    this.itemClass = itemClass;
    return this;
  }

   /**
   * Get itemClass
   * @return itemClass
  **/
  @ApiModelProperty(required = true, value = "")

  public String getItemClass() {
    return itemClass;
  }



  public void setItemClass(String itemClass) {
    this.itemClass = itemClass;
  }


  public MeveoModuleItem itemCode(String itemCode) {
    
    this.itemCode = itemCode;
    return this;
  }

   /**
   * Get itemCode
   * @return itemCode
  **/
  @ApiModelProperty(required = true, value = "")

  public String getItemCode() {
    return itemCode;
  }



  public void setItemCode(String itemCode) {
    this.itemCode = itemCode;
  }


  public MeveoModuleItem validity(DatePeriod validity) {
    
    this.validity = validity;
    return this;
  }

   /**
   * Get validity
   * @return validity
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public DatePeriod getValidity() {
    return validity;
  }



  public void setValidity(DatePeriod validity) {
    this.validity = validity;
  }


  public MeveoModuleItem itemEntity(BusinessEntity itemEntity) {
    
    this.itemEntity = itemEntity;
    return this;
  }

   /**
   * Get itemEntity
   * @return itemEntity
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public BusinessEntity getItemEntity() {
    return itemEntity;
  }



  public void setItemEntity(BusinessEntity itemEntity) {
    this.itemEntity = itemEntity;
  }


  public MeveoModuleItem itemClassSimpleName(String itemClassSimpleName) {
    
    this.itemClassSimpleName = itemClassSimpleName;
    return this;
  }

   /**
   * Get itemClassSimpleName
   * @return itemClassSimpleName
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public String getItemClassSimpleName() {
    return itemClassSimpleName;
  }



  public void setItemClassSimpleName(String itemClassSimpleName) {
    this.itemClassSimpleName = itemClassSimpleName;
  }


  public MeveoModuleItem _transient(Boolean _transient) {
    
    this._transient = _transient;
    return this;
  }

   /**
   * Get _transient
   * @return _transient
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public Boolean getTransient() {
    return _transient;
  }



  public void setTransient(Boolean _transient) {
    this._transient = _transient;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    MeveoModuleItem meveoModuleItem = (MeveoModuleItem) o;
    return Objects.equals(this.id, meveoModuleItem.id) &&
        Objects.equals(this.version, meveoModuleItem.version) &&
        Objects.equals(this.meveoModule, meveoModuleItem.meveoModule) &&
        Objects.equals(this.appliesTo, meveoModuleItem.appliesTo) &&
        Objects.equals(this.itemClass, meveoModuleItem.itemClass) &&
        Objects.equals(this.itemCode, meveoModuleItem.itemCode) &&
        Objects.equals(this.validity, meveoModuleItem.validity) &&
        Objects.equals(this.itemEntity, meveoModuleItem.itemEntity) &&
        Objects.equals(this.itemClassSimpleName, meveoModuleItem.itemClassSimpleName) &&
        Objects.equals(this._transient, meveoModuleItem._transient);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, version, meveoModule, appliesTo, itemClass, itemCode, validity, itemEntity, itemClassSimpleName, _transient);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class MeveoModuleItem {\n");
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    version: ").append(toIndentedString(version)).append("\n");
    sb.append("    meveoModule: ").append(toIndentedString(meveoModule)).append("\n");
    sb.append("    appliesTo: ").append(toIndentedString(appliesTo)).append("\n");
    sb.append("    itemClass: ").append(toIndentedString(itemClass)).append("\n");
    sb.append("    itemCode: ").append(toIndentedString(itemCode)).append("\n");
    sb.append("    validity: ").append(toIndentedString(validity)).append("\n");
    sb.append("    itemEntity: ").append(toIndentedString(itemEntity)).append("\n");
    sb.append("    itemClassSimpleName: ").append(toIndentedString(itemClassSimpleName)).append("\n");
    sb.append("    _transient: ").append(toIndentedString(_transient)).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(java.lang.Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

}

