/**
 * Autogenerated by Avro
 *
 * DO NOT EDIT DIRECTLY
 */
package com.amazonaws.services.kinesisanalytics.payloads;

import org.apache.avro.specific.SpecificData;

@SuppressWarnings("all")
@org.apache.avro.specific.AvroGenerated
public class EmployeeInfo extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord {
  private static final long serialVersionUID = -5183303439220154323L;
  public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse("{\"type\":\"record\",\"name\":\"EmployeeInfo\",\"namespace\":\"com.amazonaws.services.kinesisanalytics.payloads\",\"fields\":[{\"name\":\"companyid\",\"type\":\"long\"},{\"name\":\"employeeid\",\"type\":\"long\"},{\"name\":\"mname\",\"type\":\"string\"},{\"name\":\"dob\",\"type\":\"string\"},{\"name\":\"eventtimestamp\",\"type\":\"long\"}]}");
  public static org.apache.avro.Schema getClassSchema() { return SCHEMA$; }
  @Deprecated public long companyid;
  @Deprecated public long employeeid;
  @Deprecated public java.lang.CharSequence mname;
  @Deprecated public java.lang.CharSequence dob;
  @Deprecated public long eventtimestamp;

  /**
   * Default constructor.  Note that this does not initialize fields
   * to their default values from the schema.  If that is desired then
   * one should use <code>newBuilder()</code>.
   */
  public EmployeeInfo() {}

  /**
   * All-args constructor.
   * @param companyid The new value for companyid
   * @param employeeid The new value for employeeid
   * @param mname The new value for mname
   * @param dob The new value for dob
   * @param eventtimestamp The new value for eventtimestamp
   */
  public EmployeeInfo(java.lang.Long companyid, java.lang.Long employeeid, java.lang.CharSequence mname, java.lang.CharSequence dob, java.lang.Long eventtimestamp) {
    this.companyid = companyid;
    this.employeeid = employeeid;
    this.mname = mname;
    this.dob = dob;
    this.eventtimestamp = eventtimestamp;
  }

  public org.apache.avro.Schema getSchema() { return SCHEMA$; }
  // Used by DatumWriter.  Applications should not call.
  public java.lang.Object get(int field$) {
    switch (field$) {
    case 0: return companyid;
    case 1: return employeeid;
    case 2: return mname;
    case 3: return dob;
    case 4: return eventtimestamp;
    default: throw new org.apache.avro.AvroRuntimeException("Bad index");
    }
  }

  // Used by DatumReader.  Applications should not call.
  @SuppressWarnings(value="unchecked")
  public void put(int field$, java.lang.Object value$) {
    switch (field$) {
    case 0: companyid = (java.lang.Long)value$; break;
    case 1: employeeid = (java.lang.Long)value$; break;
    case 2: mname = (java.lang.CharSequence)value$; break;
    case 3: dob = (java.lang.CharSequence)value$; break;
    case 4: eventtimestamp = (java.lang.Long)value$; break;
    default: throw new org.apache.avro.AvroRuntimeException("Bad index");
    }
  }

  /**
   * Gets the value of the 'companyid' field.
   * @return The value of the 'companyid' field.
   */
  public java.lang.Long getCompanyid() {
    return companyid;
  }

  /**
   * Sets the value of the 'companyid' field.
   * @param value the value to set.
   */
  public void setCompanyid(java.lang.Long value) {
    this.companyid = value;
  }

  /**
   * Gets the value of the 'employeeid' field.
   * @return The value of the 'employeeid' field.
   */
  public java.lang.Long getEmployeeid() {
    return employeeid;
  }

  /**
   * Sets the value of the 'employeeid' field.
   * @param value the value to set.
   */
  public void setEmployeeid(java.lang.Long value) {
    this.employeeid = value;
  }

  /**
   * Gets the value of the 'mname' field.
   * @return The value of the 'mname' field.
   */
  public java.lang.CharSequence getMname() {
    return mname;
  }

  /**
   * Sets the value of the 'mname' field.
   * @param value the value to set.
   */
  public void setMname(java.lang.CharSequence value) {
    this.mname = value;
  }

  /**
   * Gets the value of the 'dob' field.
   * @return The value of the 'dob' field.
   */
  public java.lang.CharSequence getDob() {
    return dob;
  }

  /**
   * Sets the value of the 'dob' field.
   * @param value the value to set.
   */
  public void setDob(java.lang.CharSequence value) {
    this.dob = value;
  }

  /**
   * Gets the value of the 'eventtimestamp' field.
   * @return The value of the 'eventtimestamp' field.
   */
  public java.lang.Long getEventtimestamp() {
    return eventtimestamp;
  }

  /**
   * Sets the value of the 'eventtimestamp' field.
   * @param value the value to set.
   */
  public void setEventtimestamp(java.lang.Long value) {
    this.eventtimestamp = value;
  }

  /**
   * Creates a new EmployeeInfo RecordBuilder.
   * @return A new EmployeeInfo RecordBuilder
   */
  public static com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder newBuilder() {
    return new com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder();
  }

  /**
   * Creates a new EmployeeInfo RecordBuilder by copying an existing Builder.
   * @param other The existing builder to copy.
   * @return A new EmployeeInfo RecordBuilder
   */
  public static com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder newBuilder(com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder other) {
    return new com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder(other);
  }

  /**
   * Creates a new EmployeeInfo RecordBuilder by copying an existing EmployeeInfo instance.
   * @param other The existing instance to copy.
   * @return A new EmployeeInfo RecordBuilder
   */
  public static com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder newBuilder(com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo other) {
    return new com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder(other);
  }

  /**
   * RecordBuilder for EmployeeInfo instances.
   */
  public static class Builder extends org.apache.avro.specific.SpecificRecordBuilderBase<EmployeeInfo>
    implements org.apache.avro.data.RecordBuilder<EmployeeInfo> {

    private long companyid;
    private long employeeid;
    private java.lang.CharSequence mname;
    private java.lang.CharSequence dob;
    private long eventtimestamp;

    /** Creates a new Builder */
    private Builder() {
      super(SCHEMA$);
    }

    /**
     * Creates a Builder by copying an existing Builder.
     * @param other The existing Builder to copy.
     */
    private Builder(com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder other) {
      super(other);
      if (isValidValue(fields()[0], other.companyid)) {
        this.companyid = data().deepCopy(fields()[0].schema(), other.companyid);
        fieldSetFlags()[0] = true;
      }
      if (isValidValue(fields()[1], other.employeeid)) {
        this.employeeid = data().deepCopy(fields()[1].schema(), other.employeeid);
        fieldSetFlags()[1] = true;
      }
      if (isValidValue(fields()[2], other.mname)) {
        this.mname = data().deepCopy(fields()[2].schema(), other.mname);
        fieldSetFlags()[2] = true;
      }
      if (isValidValue(fields()[3], other.dob)) {
        this.dob = data().deepCopy(fields()[3].schema(), other.dob);
        fieldSetFlags()[3] = true;
      }
      if (isValidValue(fields()[4], other.eventtimestamp)) {
        this.eventtimestamp = data().deepCopy(fields()[4].schema(), other.eventtimestamp);
        fieldSetFlags()[4] = true;
      }
    }

    /**
     * Creates a Builder by copying an existing EmployeeInfo instance
     * @param other The existing instance to copy.
     */
    private Builder(com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo other) {
            super(SCHEMA$);
      if (isValidValue(fields()[0], other.companyid)) {
        this.companyid = data().deepCopy(fields()[0].schema(), other.companyid);
        fieldSetFlags()[0] = true;
      }
      if (isValidValue(fields()[1], other.employeeid)) {
        this.employeeid = data().deepCopy(fields()[1].schema(), other.employeeid);
        fieldSetFlags()[1] = true;
      }
      if (isValidValue(fields()[2], other.mname)) {
        this.mname = data().deepCopy(fields()[2].schema(), other.mname);
        fieldSetFlags()[2] = true;
      }
      if (isValidValue(fields()[3], other.dob)) {
        this.dob = data().deepCopy(fields()[3].schema(), other.dob);
        fieldSetFlags()[3] = true;
      }
      if (isValidValue(fields()[4], other.eventtimestamp)) {
        this.eventtimestamp = data().deepCopy(fields()[4].schema(), other.eventtimestamp);
        fieldSetFlags()[4] = true;
      }
    }

    /**
      * Gets the value of the 'companyid' field.
      * @return The value.
      */
    public java.lang.Long getCompanyid() {
      return companyid;
    }

    /**
      * Sets the value of the 'companyid' field.
      * @param value The value of 'companyid'.
      * @return This builder.
      */
    public com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder setCompanyid(long value) {
      validate(fields()[0], value);
      this.companyid = value;
      fieldSetFlags()[0] = true;
      return this;
    }

    /**
      * Checks whether the 'companyid' field has been set.
      * @return True if the 'companyid' field has been set, false otherwise.
      */
    public boolean hasCompanyid() {
      return fieldSetFlags()[0];
    }


    /**
      * Clears the value of the 'companyid' field.
      * @return This builder.
      */
    public com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder clearCompanyid() {
      fieldSetFlags()[0] = false;
      return this;
    }

    /**
      * Gets the value of the 'employeeid' field.
      * @return The value.
      */
    public java.lang.Long getEmployeeid() {
      return employeeid;
    }

    /**
      * Sets the value of the 'employeeid' field.
      * @param value The value of 'employeeid'.
      * @return This builder.
      */
    public com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder setEmployeeid(long value) {
      validate(fields()[1], value);
      this.employeeid = value;
      fieldSetFlags()[1] = true;
      return this;
    }

    /**
      * Checks whether the 'employeeid' field has been set.
      * @return True if the 'employeeid' field has been set, false otherwise.
      */
    public boolean hasEmployeeid() {
      return fieldSetFlags()[1];
    }


    /**
      * Clears the value of the 'employeeid' field.
      * @return This builder.
      */
    public com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder clearEmployeeid() {
      fieldSetFlags()[1] = false;
      return this;
    }

    /**
      * Gets the value of the 'mname' field.
      * @return The value.
      */
    public java.lang.CharSequence getMname() {
      return mname;
    }

    /**
      * Sets the value of the 'mname' field.
      * @param value The value of 'mname'.
      * @return This builder.
      */
    public com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder setMname(java.lang.CharSequence value) {
      validate(fields()[2], value);
      this.mname = value;
      fieldSetFlags()[2] = true;
      return this;
    }

    /**
      * Checks whether the 'mname' field has been set.
      * @return True if the 'mname' field has been set, false otherwise.
      */
    public boolean hasMname() {
      return fieldSetFlags()[2];
    }


    /**
      * Clears the value of the 'mname' field.
      * @return This builder.
      */
    public com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder clearMname() {
      mname = null;
      fieldSetFlags()[2] = false;
      return this;
    }

    /**
      * Gets the value of the 'dob' field.
      * @return The value.
      */
    public java.lang.CharSequence getDob() {
      return dob;
    }

    /**
      * Sets the value of the 'dob' field.
      * @param value The value of 'dob'.
      * @return This builder.
      */
    public com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder setDob(java.lang.CharSequence value) {
      validate(fields()[3], value);
      this.dob = value;
      fieldSetFlags()[3] = true;
      return this;
    }

    /**
      * Checks whether the 'dob' field has been set.
      * @return True if the 'dob' field has been set, false otherwise.
      */
    public boolean hasDob() {
      return fieldSetFlags()[3];
    }


    /**
      * Clears the value of the 'dob' field.
      * @return This builder.
      */
    public com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder clearDob() {
      dob = null;
      fieldSetFlags()[3] = false;
      return this;
    }

    /**
      * Gets the value of the 'eventtimestamp' field.
      * @return The value.
      */
    public java.lang.Long getEventtimestamp() {
      return eventtimestamp;
    }

    /**
      * Sets the value of the 'eventtimestamp' field.
      * @param value The value of 'eventtimestamp'.
      * @return This builder.
      */
    public com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder setEventtimestamp(long value) {
      validate(fields()[4], value);
      this.eventtimestamp = value;
      fieldSetFlags()[4] = true;
      return this;
    }

    /**
      * Checks whether the 'eventtimestamp' field has been set.
      * @return True if the 'eventtimestamp' field has been set, false otherwise.
      */
    public boolean hasEventtimestamp() {
      return fieldSetFlags()[4];
    }


    /**
      * Clears the value of the 'eventtimestamp' field.
      * @return This builder.
      */
    public com.amazonaws.services.kinesisanalytics.payloads.EmployeeInfo.Builder clearEventtimestamp() {
      fieldSetFlags()[4] = false;
      return this;
    }

    @Override
    public EmployeeInfo build() {
      try {
        EmployeeInfo record = new EmployeeInfo();
        record.companyid = fieldSetFlags()[0] ? this.companyid : (java.lang.Long) defaultValue(fields()[0]);
        record.employeeid = fieldSetFlags()[1] ? this.employeeid : (java.lang.Long) defaultValue(fields()[1]);
        record.mname = fieldSetFlags()[2] ? this.mname : (java.lang.CharSequence) defaultValue(fields()[2]);
        record.dob = fieldSetFlags()[3] ? this.dob : (java.lang.CharSequence) defaultValue(fields()[3]);
        record.eventtimestamp = fieldSetFlags()[4] ? this.eventtimestamp : (java.lang.Long) defaultValue(fields()[4]);
        return record;
      } catch (Exception e) {
        throw new org.apache.avro.AvroRuntimeException(e);
      }
    }
  }

  private static final org.apache.avro.io.DatumWriter
    WRITER$ = new org.apache.avro.specific.SpecificDatumWriter(SCHEMA$);

  @Override public void writeExternal(java.io.ObjectOutput out)
    throws java.io.IOException {
    WRITER$.write(this, SpecificData.getEncoder(out));
  }

  private static final org.apache.avro.io.DatumReader
    READER$ = new org.apache.avro.specific.SpecificDatumReader(SCHEMA$);

  @Override public void readExternal(java.io.ObjectInput in)
    throws java.io.IOException {
    READER$.read(this, SpecificData.getDecoder(in));
  }

}