/*
 * traQ v3
 * traQ v3 API
 *
 * The version of the OpenAPI document: 3.0
 *
 *
 * 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.github.motoki317.traq4j.model;

import java.util.Objects;
import java.util.Arrays;

import com.github.motoki317.traq4j.model.ChannelViewState;
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 java.util.UUID;

/**
 * 自身のチャンネル閲覧状態
 */
@ApiModel(description = "自身のチャンネル閲覧状態")
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2021-05-18T11:58:46.174904Z[Etc/UTC]")
public class MyChannelViewState {
    public static final String SERIALIZED_NAME_KEY = "key";
    @SerializedName(SERIALIZED_NAME_KEY)
    private String key;

    public static final String SERIALIZED_NAME_CHANNEL_ID = "channelId";
    @SerializedName(SERIALIZED_NAME_CHANNEL_ID)
    private UUID channelId;

    public static final String SERIALIZED_NAME_STATE = "state";
    @SerializedName(SERIALIZED_NAME_STATE)
    private ChannelViewState state;


    public MyChannelViewState key(String key) {

        this.key = key;
        return this;
    }

    /**
     * WSセッションの識別子
     *
     * @return key
     **/
    @ApiModelProperty(required = true, value = "WSセッションの識別子")

    public String getKey() {
        return key;
    }


    public void setKey(String key) {
        this.key = key;
    }


    public MyChannelViewState channelId(UUID channelId) {

        this.channelId = channelId;
        return this;
    }

    /**
     * チャンネルUUID
     *
     * @return channelId
     **/
    @ApiModelProperty(required = true, value = "チャンネルUUID")

    public UUID getChannelId() {
        return channelId;
    }


    public void setChannelId(UUID channelId) {
        this.channelId = channelId;
    }


    public MyChannelViewState state(ChannelViewState state) {

        this.state = state;
        return this;
    }

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

    public ChannelViewState getState() {
        return state;
    }


    public void setState(ChannelViewState state) {
        this.state = state;
    }


    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        MyChannelViewState myChannelViewState = (MyChannelViewState) o;
        return Objects.equals(this.key, myChannelViewState.key) &&
                Objects.equals(this.channelId, myChannelViewState.channelId) &&
                Objects.equals(this.state, myChannelViewState.state);
    }

    @Override
    public int hashCode() {
        return Objects.hash(key, channelId, state);
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("class MyChannelViewState {\n");
        sb.append("    key: ").append(toIndentedString(key)).append("\n");
        sb.append("    channelId: ").append(toIndentedString(channelId)).append("\n");
        sb.append("    state: ").append(toIndentedString(state)).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    ");
    }

}

