<gh_stars>1-10
/*
 * IRN API v1
 * Allows users to extract, create, update and configure IRN data.
 *
 * The version of the OpenAPI document: 1
 * 
 *
 * 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.factset.sdk.IRNMeetings.models;

import java.util.Objects;
import java.util.Arrays;
import java.util.Map;
import java.util.HashMap;
import com.factset.sdk.IRNMeetings.models.AttendeeDto;
import com.factset.sdk.IRNMeetings.models.CustomFieldValueDto;
import com.factset.sdk.IRNMeetings.models.LocationDto;
import com.factset.sdk.IRNMeetings.models.RelatedRecordsDto;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonValue;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.openapitools.jackson.nullable.JsonNullable;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.openapitools.jackson.nullable.JsonNullable;
import java.util.NoSuchElementException;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.factset.sdk.IRNMeetings.JSON;


/**
 * MeetingDto
 */
@JsonPropertyOrder({
  MeetingDto.JSON_PROPERTY_ID,
  MeetingDto.JSON_PROPERTY_START,
  MeetingDto.JSON_PROPERTY_END,
  MeetingDto.JSON_PROPERTY_CREATED_AT,
  MeetingDto.JSON_PROPERTY_AUTHOR_ID,
  MeetingDto.JSON_PROPERTY_TITLE,
  MeetingDto.JSON_PROPERTY_IDENTIFIER,
  MeetingDto.JSON_PROPERTY_ORGANIZER,
  MeetingDto.JSON_PROPERTY_ORGANIZER_ID,
  MeetingDto.JSON_PROPERTY_BODY,
  MeetingDto.JSON_PROPERTY_AVERAGE_RATING,
  MeetingDto.JSON_PROPERTY_ALERT_ATTENDEES,
  MeetingDto.JSON_PROPERTY_ALERT_AUTHOR,
  MeetingDto.JSON_PROPERTY_LOCATIONS,
  MeetingDto.JSON_PROPERTY_ATTENDEES,
  MeetingDto.JSON_PROPERTY_CUSTOM_FIELDS,
  MeetingDto.JSON_PROPERTY_RELATED_SYMBOLS,
  MeetingDto.JSON_PROPERTY_RELATED_RECORDS,
  MeetingDto.JSON_PROPERTY_RELATED_CONTACTS
})
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
public class MeetingDto implements Serializable {
  private static final long serialVersionUID = 1L;

  public static final String JSON_PROPERTY_ID = "id";
  private java.util.UUID id;

  public static final String JSON_PROPERTY_START = "start";
  private JsonNullable<String> start = JsonNullable.<String>undefined();

  public static final String JSON_PROPERTY_END = "end";
  private JsonNullable<String> end = JsonNullable.<String>undefined();

  public static final String JSON_PROPERTY_CREATED_AT = "createdAt";
  private JsonNullable<String> createdAt = JsonNullable.<String>undefined();

  public static final String JSON_PROPERTY_AUTHOR_ID = "authorId";
  private java.util.UUID authorId;

  public static final String JSON_PROPERTY_TITLE = "title";
  private JsonNullable<String> title = JsonNullable.<String>undefined();

  public static final String JSON_PROPERTY_IDENTIFIER = "identifier";
  private JsonNullable<String> identifier = JsonNullable.<String>undefined();

  public static final String JSON_PROPERTY_ORGANIZER = "organizer";
  private JsonNullable<String> organizer = JsonNullable.<String>undefined();

  public static final String JSON_PROPERTY_ORGANIZER_ID = "organizerId";
  private java.util.UUID organizerId;

  public static final String JSON_PROPERTY_BODY = "body";
  private JsonNullable<String> body = JsonNullable.<String>undefined();

  public static final String JSON_PROPERTY_AVERAGE_RATING = "averageRating";
  private JsonNullable<Integer> averageRating = JsonNullable.<Integer>undefined();

  public static final String JSON_PROPERTY_ALERT_ATTENDEES = "alertAttendees";
  private Boolean alertAttendees;

  public static final String JSON_PROPERTY_ALERT_AUTHOR = "alertAuthor";
  private Boolean alertAuthor;

  public static final String JSON_PROPERTY_LOCATIONS = "locations";
  private JsonNullable<java.util.List<LocationDto>> locations = JsonNullable.<java.util.List<LocationDto>>undefined();

  public static final String JSON_PROPERTY_ATTENDEES = "attendees";
  private JsonNullable<java.util.List<AttendeeDto>> attendees = JsonNullable.<java.util.List<AttendeeDto>>undefined();

  public static final String JSON_PROPERTY_CUSTOM_FIELDS = "customFields";
  private JsonNullable<java.util.List<CustomFieldValueDto>> customFields = JsonNullable.<java.util.List<CustomFieldValueDto>>undefined();

  public static final String JSON_PROPERTY_RELATED_SYMBOLS = "relatedSymbols";
  private JsonNullable<java.util.List<String>> relatedSymbols = JsonNullable.<java.util.List<String>>undefined();

  public static final String JSON_PROPERTY_RELATED_RECORDS = "relatedRecords";
  private RelatedRecordsDto relatedRecords;

  public static final String JSON_PROPERTY_RELATED_CONTACTS = "relatedContacts";
  private JsonNullable<java.util.List<java.util.UUID>> relatedContacts = JsonNullable.<java.util.List<java.util.UUID>>undefined();

  public MeetingDto() { 
  }

  public MeetingDto id(java.util.UUID id) {
    this.id = id;
    return this;
  }

   /**
   * Get id
   * @return id
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")
  @JsonProperty(JSON_PROPERTY_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public java.util.UUID getId() {
    return id;
  }


  @JsonProperty(JSON_PROPERTY_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setId(java.util.UUID id) {
    this.id = id;
  }


  public MeetingDto start(String start) {
    this.start = JsonNullable.<String>of(start);
    return this;
  }

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

  public String getStart() {
        return start.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_START)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable<String> getStart_JsonNullable() {
    return start;
  }
  
  @JsonProperty(JSON_PROPERTY_START)
  public void setStart_JsonNullable(JsonNullable<String> start) {
    this.start = start;
  }

  public void setStart(String start) {
    this.start = JsonNullable.<String>of(start);
  }


  public MeetingDto end(String end) {
    this.end = JsonNullable.<String>of(end);
    return this;
  }

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

  public String getEnd() {
        return end.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_END)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable<String> getEnd_JsonNullable() {
    return end;
  }
  
  @JsonProperty(JSON_PROPERTY_END)
  public void setEnd_JsonNullable(JsonNullable<String> end) {
    this.end = end;
  }

  public void setEnd(String end) {
    this.end = JsonNullable.<String>of(end);
  }


  public MeetingDto createdAt(String createdAt) {
    this.createdAt = JsonNullable.<String>of(createdAt);
    return this;
  }

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

  public String getCreatedAt() {
        return createdAt.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CREATED_AT)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable<String> getCreatedAt_JsonNullable() {
    return createdAt;
  }
  
  @JsonProperty(JSON_PROPERTY_CREATED_AT)
  public void setCreatedAt_JsonNullable(JsonNullable<String> createdAt) {
    this.createdAt = createdAt;
  }

  public void setCreatedAt(String createdAt) {
    this.createdAt = JsonNullable.<String>of(createdAt);
  }


  public MeetingDto authorId(java.util.UUID authorId) {
    this.authorId = authorId;
    return this;
  }

   /**
   * Get authorId
   * @return authorId
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")
  @JsonProperty(JSON_PROPERTY_AUTHOR_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public java.util.UUID getAuthorId() {
    return authorId;
  }


  @JsonProperty(JSON_PROPERTY_AUTHOR_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setAuthorId(java.util.UUID authorId) {
    this.authorId = authorId;
  }


  public MeetingDto title(String title) {
    this.title = JsonNullable.<String>of(title);
    return this;
  }

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

  public String getTitle() {
        return title.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_TITLE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable<String> getTitle_JsonNullable() {
    return title;
  }
  
  @JsonProperty(JSON_PROPERTY_TITLE)
  public void setTitle_JsonNullable(JsonNullable<String> title) {
    this.title = title;
  }

  public void setTitle(String title) {
    this.title = JsonNullable.<String>of(title);
  }


  public MeetingDto identifier(String identifier) {
    this.identifier = JsonNullable.<String>of(identifier);
    return this;
  }

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

  public String getIdentifier() {
        return identifier.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_IDENTIFIER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable<String> getIdentifier_JsonNullable() {
    return identifier;
  }
  
  @JsonProperty(JSON_PROPERTY_IDENTIFIER)
  public void setIdentifier_JsonNullable(JsonNullable<String> identifier) {
    this.identifier = identifier;
  }

  public void setIdentifier(String identifier) {
    this.identifier = JsonNullable.<String>of(identifier);
  }


  public MeetingDto organizer(String organizer) {
    this.organizer = JsonNullable.<String>of(organizer);
    return this;
  }

   /**
   * Get organizer
   * @return organizer
   * @deprecated
  **/
  @Deprecated
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")
  @JsonIgnore

  public String getOrganizer() {
        return organizer.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_ORGANIZER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable<String> getOrganizer_JsonNullable() {
    return organizer;
  }
  
  @JsonProperty(JSON_PROPERTY_ORGANIZER)
  public void setOrganizer_JsonNullable(JsonNullable<String> organizer) {
    this.organizer = organizer;
  }

  public void setOrganizer(String organizer) {
    this.organizer = JsonNullable.<String>of(organizer);
  }


  public MeetingDto organizerId(java.util.UUID organizerId) {
    this.organizerId = organizerId;
    return this;
  }

   /**
   * Get organizerId
   * @return organizerId
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")
  @JsonProperty(JSON_PROPERTY_ORGANIZER_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public java.util.UUID getOrganizerId() {
    return organizerId;
  }


  @JsonProperty(JSON_PROPERTY_ORGANIZER_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOrganizerId(java.util.UUID organizerId) {
    this.organizerId = organizerId;
  }


  public MeetingDto body(String body) {
    this.body = JsonNullable.<String>of(body);
    return this;
  }

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

  public String getBody() {
        return body.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_BODY)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable<String> getBody_JsonNullable() {
    return body;
  }
  
  @JsonProperty(JSON_PROPERTY_BODY)
  public void setBody_JsonNullable(JsonNullable<String> body) {
    this.body = body;
  }

  public void setBody(String body) {
    this.body = JsonNullable.<String>of(body);
  }


  public MeetingDto averageRating(Integer averageRating) {
    this.averageRating = JsonNullable.<Integer>of(averageRating);
    return this;
  }

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

  public Integer getAverageRating() {
        return averageRating.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_AVERAGE_RATING)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable<Integer> getAverageRating_JsonNullable() {
    return averageRating;
  }
  
  @JsonProperty(JSON_PROPERTY_AVERAGE_RATING)
  public void setAverageRating_JsonNullable(JsonNullable<Integer> averageRating) {
    this.averageRating = averageRating;
  }

  public void setAverageRating(Integer averageRating) {
    this.averageRating = JsonNullable.<Integer>of(averageRating);
  }


  public MeetingDto alertAttendees(Boolean alertAttendees) {
    this.alertAttendees = alertAttendees;
    return this;
  }

   /**
   * Get alertAttendees
   * @return alertAttendees
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")
  @JsonProperty(JSON_PROPERTY_ALERT_ATTENDEES)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Boolean getAlertAttendees() {
    return alertAttendees;
  }


  @JsonProperty(JSON_PROPERTY_ALERT_ATTENDEES)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setAlertAttendees(Boolean alertAttendees) {
    this.alertAttendees = alertAttendees;
  }


  public MeetingDto alertAuthor(Boolean alertAuthor) {
    this.alertAuthor = alertAuthor;
    return this;
  }

   /**
   * Get alertAuthor
   * @return alertAuthor
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")
  @JsonProperty(JSON_PROPERTY_ALERT_AUTHOR)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Boolean getAlertAuthor() {
    return alertAuthor;
  }


  @JsonProperty(JSON_PROPERTY_ALERT_AUTHOR)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setAlertAuthor(Boolean alertAuthor) {
    this.alertAuthor = alertAuthor;
  }


  public MeetingDto locations(java.util.List<LocationDto> locations) {
    this.locations = JsonNullable.<java.util.List<LocationDto>>of(locations);
    return this;
  }

  public MeetingDto addLocationsItem(LocationDto locationsItem) {
    if (this.locations == null || !this.locations.isPresent()) {
      this.locations = JsonNullable.<java.util.List<LocationDto>>of(new java.util.ArrayList<>());
    }
    try {
      this.locations.get().add(locationsItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

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

  public java.util.List<LocationDto> getLocations() {
        return locations.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_LOCATIONS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable<java.util.List<LocationDto>> getLocations_JsonNullable() {
    return locations;
  }
  
  @JsonProperty(JSON_PROPERTY_LOCATIONS)
  public void setLocations_JsonNullable(JsonNullable<java.util.List<LocationDto>> locations) {
    this.locations = locations;
  }

  public void setLocations(java.util.List<LocationDto> locations) {
    this.locations = JsonNullable.<java.util.List<LocationDto>>of(locations);
  }


  public MeetingDto attendees(java.util.List<AttendeeDto> attendees) {
    this.attendees = JsonNullable.<java.util.List<AttendeeDto>>of(attendees);
    return this;
  }

  public MeetingDto addAttendeesItem(AttendeeDto attendeesItem) {
    if (this.attendees == null || !this.attendees.isPresent()) {
      this.attendees = JsonNullable.<java.util.List<AttendeeDto>>of(new java.util.ArrayList<>());
    }
    try {
      this.attendees.get().add(attendeesItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

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

  public java.util.List<AttendeeDto> getAttendees() {
        return attendees.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_ATTENDEES)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable<java.util.List<AttendeeDto>> getAttendees_JsonNullable() {
    return attendees;
  }
  
  @JsonProperty(JSON_PROPERTY_ATTENDEES)
  public void setAttendees_JsonNullable(JsonNullable<java.util.List<AttendeeDto>> attendees) {
    this.attendees = attendees;
  }

  public void setAttendees(java.util.List<AttendeeDto> attendees) {
    this.attendees = JsonNullable.<java.util.List<AttendeeDto>>of(attendees);
  }


  public MeetingDto customFields(java.util.List<CustomFieldValueDto> customFields) {
    this.customFields = JsonNullable.<java.util.List<CustomFieldValueDto>>of(customFields);
    return this;
  }

  public MeetingDto addCustomFieldsItem(CustomFieldValueDto customFieldsItem) {
    if (this.customFields == null || !this.customFields.isPresent()) {
      this.customFields = JsonNullable.<java.util.List<CustomFieldValueDto>>of(new java.util.ArrayList<>());
    }
    try {
      this.customFields.get().add(customFieldsItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

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

  public java.util.List<CustomFieldValueDto> getCustomFields() {
        return customFields.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CUSTOM_FIELDS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable<java.util.List<CustomFieldValueDto>> getCustomFields_JsonNullable() {
    return customFields;
  }
  
  @JsonProperty(JSON_PROPERTY_CUSTOM_FIELDS)
  public void setCustomFields_JsonNullable(JsonNullable<java.util.List<CustomFieldValueDto>> customFields) {
    this.customFields = customFields;
  }

  public void setCustomFields(java.util.List<CustomFieldValueDto> customFields) {
    this.customFields = JsonNullable.<java.util.List<CustomFieldValueDto>>of(customFields);
  }


  public MeetingDto relatedSymbols(java.util.List<String> relatedSymbols) {
    this.relatedSymbols = JsonNullable.<java.util.List<String>>of(relatedSymbols);
    return this;
  }

  public MeetingDto addRelatedSymbolsItem(String relatedSymbolsItem) {
    if (this.relatedSymbols == null || !this.relatedSymbols.isPresent()) {
      this.relatedSymbols = JsonNullable.<java.util.List<String>>of(new java.util.ArrayList<>());
    }
    try {
      this.relatedSymbols.get().add(relatedSymbolsItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

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

  public java.util.List<String> getRelatedSymbols() {
        return relatedSymbols.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_RELATED_SYMBOLS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable<java.util.List<String>> getRelatedSymbols_JsonNullable() {
    return relatedSymbols;
  }
  
  @JsonProperty(JSON_PROPERTY_RELATED_SYMBOLS)
  public void setRelatedSymbols_JsonNullable(JsonNullable<java.util.List<String>> relatedSymbols) {
    this.relatedSymbols = relatedSymbols;
  }

  public void setRelatedSymbols(java.util.List<String> relatedSymbols) {
    this.relatedSymbols = JsonNullable.<java.util.List<String>>of(relatedSymbols);
  }


  public MeetingDto relatedRecords(RelatedRecordsDto relatedRecords) {
    this.relatedRecords = relatedRecords;
    return this;
  }

   /**
   * Get relatedRecords
   * @return relatedRecords
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")
  @JsonProperty(JSON_PROPERTY_RELATED_RECORDS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public RelatedRecordsDto getRelatedRecords() {
    return relatedRecords;
  }


  @JsonProperty(JSON_PROPERTY_RELATED_RECORDS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setRelatedRecords(RelatedRecordsDto relatedRecords) {
    this.relatedRecords = relatedRecords;
  }


  public MeetingDto relatedContacts(java.util.List<java.util.UUID> relatedContacts) {
    this.relatedContacts = JsonNullable.<java.util.List<java.util.UUID>>of(relatedContacts);
    return this;
  }

  public MeetingDto addRelatedContactsItem(java.util.UUID relatedContactsItem) {
    if (this.relatedContacts == null || !this.relatedContacts.isPresent()) {
      this.relatedContacts = JsonNullable.<java.util.List<java.util.UUID>>of(new java.util.ArrayList<>());
    }
    try {
      this.relatedContacts.get().add(relatedContactsItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

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

  public java.util.List<java.util.UUID> getRelatedContacts() {
        return relatedContacts.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_RELATED_CONTACTS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable<java.util.List<java.util.UUID>> getRelatedContacts_JsonNullable() {
    return relatedContacts;
  }
  
  @JsonProperty(JSON_PROPERTY_RELATED_CONTACTS)
  public void setRelatedContacts_JsonNullable(JsonNullable<java.util.List<java.util.UUID>> relatedContacts) {
    this.relatedContacts = relatedContacts;
  }

  public void setRelatedContacts(java.util.List<java.util.UUID> relatedContacts) {
    this.relatedContacts = JsonNullable.<java.util.List<java.util.UUID>>of(relatedContacts);
  }


  /**
   * Return true if this MeetingDto object is equal to o.
   */
  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    MeetingDto meetingDto = (MeetingDto) o;
    return Objects.equals(this.id, meetingDto.id) &&
        equalsNullable(this.start, meetingDto.start) &&
        equalsNullable(this.end, meetingDto.end) &&
        equalsNullable(this.createdAt, meetingDto.createdAt) &&
        Objects.equals(this.authorId, meetingDto.authorId) &&
        equalsNullable(this.title, meetingDto.title) &&
        equalsNullable(this.identifier, meetingDto.identifier) &&
        equalsNullable(this.organizer, meetingDto.organizer) &&
        Objects.equals(this.organizerId, meetingDto.organizerId) &&
        equalsNullable(this.body, meetingDto.body) &&
        equalsNullable(this.averageRating, meetingDto.averageRating) &&
        Objects.equals(this.alertAttendees, meetingDto.alertAttendees) &&
        Objects.equals(this.alertAuthor, meetingDto.alertAuthor) &&
        equalsNullable(this.locations, meetingDto.locations) &&
        equalsNullable(this.attendees, meetingDto.attendees) &&
        equalsNullable(this.customFields, meetingDto.customFields) &&
        equalsNullable(this.relatedSymbols, meetingDto.relatedSymbols) &&
        Objects.equals(this.relatedRecords, meetingDto.relatedRecords) &&
        equalsNullable(this.relatedContacts, meetingDto.relatedContacts);
  }

  private static <T> boolean equalsNullable(JsonNullable<T> a, JsonNullable<T> 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(id, hashCodeNullable(start), hashCodeNullable(end), hashCodeNullable(createdAt), authorId, hashCodeNullable(title), hashCodeNullable(identifier), hashCodeNullable(organizer), organizerId, hashCodeNullable(body), hashCodeNullable(averageRating), alertAttendees, alertAuthor, hashCodeNullable(locations), hashCodeNullable(attendees), hashCodeNullable(customFields), hashCodeNullable(relatedSymbols), relatedRecords, hashCodeNullable(relatedContacts));
  }

  private static <T> int hashCodeNullable(JsonNullable<T> 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 MeetingDto {\n");
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    start: ").append(toIndentedString(start)).append("\n");
    sb.append("    end: ").append(toIndentedString(end)).append("\n");
    sb.append("    createdAt: ").append(toIndentedString(createdAt)).append("\n");
    sb.append("    authorId: ").append(toIndentedString(authorId)).append("\n");
    sb.append("    title: ").append(toIndentedString(title)).append("\n");
    sb.append("    identifier: ").append(toIndentedString(identifier)).append("\n");
    sb.append("    organizer: ").append(toIndentedString(organizer)).append("\n");
    sb.append("    organizerId: ").append(toIndentedString(organizerId)).append("\n");
    sb.append("    body: ").append(toIndentedString(body)).append("\n");
    sb.append("    averageRating: ").append(toIndentedString(averageRating)).append("\n");
    sb.append("    alertAttendees: ").append(toIndentedString(alertAttendees)).append("\n");
    sb.append("    alertAuthor: ").append(toIndentedString(alertAuthor)).append("\n");
    sb.append("    locations: ").append(toIndentedString(locations)).append("\n");
    sb.append("    attendees: ").append(toIndentedString(attendees)).append("\n");
    sb.append("    customFields: ").append(toIndentedString(customFields)).append("\n");
    sb.append("    relatedSymbols: ").append(toIndentedString(relatedSymbols)).append("\n");
    sb.append("    relatedRecords: ").append(toIndentedString(relatedRecords)).append("\n");
    sb.append("    relatedContacts: ").append(toIndentedString(relatedContacts)).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    ");
  }

}

