/*
 * This file is generated by jOOQ.
 */
package cn.vertxup.graphic.domain.tables.pojos;


import cn.vertxup.graphic.domain.tables.interfaces.IGNode;
import io.github.jklingsporn.vertx.jooq.shared.internal.VertxPojo;

import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * This class is generated by jOOQ.
 */
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class GNode implements VertxPojo, IGNode {

    private static final long serialVersionUID = 1L;

    private String key;
    private String name;
    private BigDecimal x;
    private BigDecimal y;
    private String ui;
    private String graphicId;
    private String recordData;
    private String recordKey;
    private String recordComponent;
    private String recordClass;
    private String sigma;
    private String language;
    private Boolean active;
    private String metadata;
    private LocalDateTime createdAt;
    private String createdBy;
    private LocalDateTime updatedAt;
    private String updatedBy;

    public GNode() {}

    public GNode(IGNode value) {
        this.key = value.getKey();
        this.name = value.getName();
        this.x = value.getX();
        this.y = value.getY();
        this.ui = value.getUi();
        this.graphicId = value.getGraphicId();
        this.recordData = value.getRecordData();
        this.recordKey = value.getRecordKey();
        this.recordComponent = value.getRecordComponent();
        this.recordClass = value.getRecordClass();
        this.sigma = value.getSigma();
        this.language = value.getLanguage();
        this.active = value.getActive();
        this.metadata = value.getMetadata();
        this.createdAt = value.getCreatedAt();
        this.createdBy = value.getCreatedBy();
        this.updatedAt = value.getUpdatedAt();
        this.updatedBy = value.getUpdatedBy();
    }

    public GNode(
        String key,
        String name,
        BigDecimal x,
        BigDecimal y,
        String ui,
        String graphicId,
        String recordData,
        String recordKey,
        String recordComponent,
        String recordClass,
        String sigma,
        String language,
        Boolean active,
        String metadata,
        LocalDateTime createdAt,
        String createdBy,
        LocalDateTime updatedAt,
        String updatedBy
    ) {
        this.key = key;
        this.name = name;
        this.x = x;
        this.y = y;
        this.ui = ui;
        this.graphicId = graphicId;
        this.recordData = recordData;
        this.recordKey = recordKey;
        this.recordComponent = recordComponent;
        this.recordClass = recordClass;
        this.sigma = sigma;
        this.language = language;
        this.active = active;
        this.metadata = metadata;
        this.createdAt = createdAt;
        this.createdBy = createdBy;
        this.updatedAt = updatedAt;
        this.updatedBy = updatedBy;
    }

        public GNode(io.vertx.core.json.JsonObject json) {
                this();
                fromJson(json);
        }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.KEY</code>. 「key」- 节点ID
     */
    @Override
    public String getKey() {
        return this.key;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.KEY</code>. 「key」- 节点ID
     */
    @Override
    public GNode setKey(String key) {
        this.key = key;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.NAME</code>. 「name」- 节点呈现名称
     */
    @Override
    public String getName() {
        return this.name;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.NAME</code>. 「name」- 节点呈现名称
     */
    @Override
    public GNode setName(String name) {
        this.name = name;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.X</code>. 「x」- 当前节点在图上的x坐标
     */
    @Override
    public BigDecimal getX() {
        return this.x;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.X</code>. 「x」- 当前节点在图上的x坐标
     */
    @Override
    public GNode setX(BigDecimal x) {
        this.x = x;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.Y</code>. 「y」- 当前节点在图上的y坐标
     */
    @Override
    public BigDecimal getY() {
        return this.y;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.Y</code>. 「y」- 当前节点在图上的y坐标
     */
    @Override
    public GNode setY(BigDecimal y) {
        this.y = y;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.UI</code>. 「ui」- ui配置专用
     */
    @Override
    public String getUi() {
        return this.ui;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.UI</code>. 「ui」- ui配置专用
     */
    @Override
    public GNode setUi(String ui) {
        this.ui = ui;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.GRAPHIC_ID</code>. 「graphicId」-
     * 它所关联的图实例ID
     */
    @Override
    public String getGraphicId() {
        return this.graphicId;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.GRAPHIC_ID</code>. 「graphicId」-
     * 它所关联的图实例ID
     */
    @Override
    public GNode setGraphicId(String graphicId) {
        this.graphicId = graphicId;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.RECORD_DATA</code>. 「recordData」-
     * 该节点存储的数据信息
     */
    @Override
    public String getRecordData() {
        return this.recordData;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.RECORD_DATA</code>. 「recordData」-
     * 该节点存储的数据信息
     */
    @Override
    public GNode setRecordData(String recordData) {
        this.recordData = recordData;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.RECORD_KEY</code>. 「recordKey」- 记录主键
     */
    @Override
    public String getRecordKey() {
        return this.recordKey;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.RECORD_KEY</code>. 「recordKey」- 记录主键
     */
    @Override
    public GNode setRecordKey(String recordKey) {
        this.recordKey = recordKey;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.RECORD_COMPONENT</code>.
     * 「recordComponent」- 记录处理组件
     */
    @Override
    public String getRecordComponent() {
        return this.recordComponent;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.RECORD_COMPONENT</code>.
     * 「recordComponent」- 记录处理组件
     */
    @Override
    public GNode setRecordComponent(String recordComponent) {
        this.recordComponent = recordComponent;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.RECORD_CLASS</code>. 「recordClass」-
     * 记录绑定Pojo类型
     */
    @Override
    public String getRecordClass() {
        return this.recordClass;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.RECORD_CLASS</code>. 「recordClass」-
     * 记录绑定Pojo类型
     */
    @Override
    public GNode setRecordClass(String recordClass) {
        this.recordClass = recordClass;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.SIGMA</code>. 「sigma」- 统一标识
     */
    @Override
    public String getSigma() {
        return this.sigma;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.SIGMA</code>. 「sigma」- 统一标识
     */
    @Override
    public GNode setSigma(String sigma) {
        this.sigma = sigma;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.LANGUAGE</code>. 「language」- 使用的语言
     */
    @Override
    public String getLanguage() {
        return this.language;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.LANGUAGE</code>. 「language」- 使用的语言
     */
    @Override
    public GNode setLanguage(String language) {
        this.language = language;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.ACTIVE</code>. 「active」- 是否启用
     */
    @Override
    public Boolean getActive() {
        return this.active;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.ACTIVE</code>. 「active」- 是否启用
     */
    @Override
    public GNode setActive(Boolean active) {
        this.active = active;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.METADATA</code>. 「metadata」- 附加配置数据
     */
    @Override
    public String getMetadata() {
        return this.metadata;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.METADATA</code>. 「metadata」- 附加配置数据
     */
    @Override
    public GNode setMetadata(String metadata) {
        this.metadata = metadata;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.CREATED_AT</code>. 「createdAt」- 创建时间
     */
    @Override
    public LocalDateTime getCreatedAt() {
        return this.createdAt;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.CREATED_AT</code>. 「createdAt」- 创建时间
     */
    @Override
    public GNode setCreatedAt(LocalDateTime createdAt) {
        this.createdAt = createdAt;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.CREATED_BY</code>. 「createdBy」- 创建人
     */
    @Override
    public String getCreatedBy() {
        return this.createdBy;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.CREATED_BY</code>. 「createdBy」- 创建人
     */
    @Override
    public GNode setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.UPDATED_AT</code>. 「updatedAt」- 更新时间
     */
    @Override
    public LocalDateTime getUpdatedAt() {
        return this.updatedAt;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.UPDATED_AT</code>. 「updatedAt」- 更新时间
     */
    @Override
    public GNode setUpdatedAt(LocalDateTime updatedAt) {
        this.updatedAt = updatedAt;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_NODE.UPDATED_BY</code>. 「updatedBy」- 更新人
     */
    @Override
    public String getUpdatedBy() {
        return this.updatedBy;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_NODE.UPDATED_BY</code>. 「updatedBy」- 更新人
     */
    @Override
    public GNode setUpdatedBy(String updatedBy) {
        this.updatedBy = updatedBy;
        return this;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        final GNode other = (GNode) obj;
        if (this.key == null) {
            if (other.key != null)
                return false;
        }
        else if (!this.key.equals(other.key))
            return false;
        if (this.name == null) {
            if (other.name != null)
                return false;
        }
        else if (!this.name.equals(other.name))
            return false;
        if (this.x == null) {
            if (other.x != null)
                return false;
        }
        else if (!this.x.equals(other.x))
            return false;
        if (this.y == null) {
            if (other.y != null)
                return false;
        }
        else if (!this.y.equals(other.y))
            return false;
        if (this.ui == null) {
            if (other.ui != null)
                return false;
        }
        else if (!this.ui.equals(other.ui))
            return false;
        if (this.graphicId == null) {
            if (other.graphicId != null)
                return false;
        }
        else if (!this.graphicId.equals(other.graphicId))
            return false;
        if (this.recordData == null) {
            if (other.recordData != null)
                return false;
        }
        else if (!this.recordData.equals(other.recordData))
            return false;
        if (this.recordKey == null) {
            if (other.recordKey != null)
                return false;
        }
        else if (!this.recordKey.equals(other.recordKey))
            return false;
        if (this.recordComponent == null) {
            if (other.recordComponent != null)
                return false;
        }
        else if (!this.recordComponent.equals(other.recordComponent))
            return false;
        if (this.recordClass == null) {
            if (other.recordClass != null)
                return false;
        }
        else if (!this.recordClass.equals(other.recordClass))
            return false;
        if (this.sigma == null) {
            if (other.sigma != null)
                return false;
        }
        else if (!this.sigma.equals(other.sigma))
            return false;
        if (this.language == null) {
            if (other.language != null)
                return false;
        }
        else if (!this.language.equals(other.language))
            return false;
        if (this.active == null) {
            if (other.active != null)
                return false;
        }
        else if (!this.active.equals(other.active))
            return false;
        if (this.metadata == null) {
            if (other.metadata != null)
                return false;
        }
        else if (!this.metadata.equals(other.metadata))
            return false;
        if (this.createdAt == null) {
            if (other.createdAt != null)
                return false;
        }
        else if (!this.createdAt.equals(other.createdAt))
            return false;
        if (this.createdBy == null) {
            if (other.createdBy != null)
                return false;
        }
        else if (!this.createdBy.equals(other.createdBy))
            return false;
        if (this.updatedAt == null) {
            if (other.updatedAt != null)
                return false;
        }
        else if (!this.updatedAt.equals(other.updatedAt))
            return false;
        if (this.updatedBy == null) {
            if (other.updatedBy != null)
                return false;
        }
        else if (!this.updatedBy.equals(other.updatedBy))
            return false;
        return true;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((this.key == null) ? 0 : this.key.hashCode());
        result = prime * result + ((this.name == null) ? 0 : this.name.hashCode());
        result = prime * result + ((this.x == null) ? 0 : this.x.hashCode());
        result = prime * result + ((this.y == null) ? 0 : this.y.hashCode());
        result = prime * result + ((this.ui == null) ? 0 : this.ui.hashCode());
        result = prime * result + ((this.graphicId == null) ? 0 : this.graphicId.hashCode());
        result = prime * result + ((this.recordData == null) ? 0 : this.recordData.hashCode());
        result = prime * result + ((this.recordKey == null) ? 0 : this.recordKey.hashCode());
        result = prime * result + ((this.recordComponent == null) ? 0 : this.recordComponent.hashCode());
        result = prime * result + ((this.recordClass == null) ? 0 : this.recordClass.hashCode());
        result = prime * result + ((this.sigma == null) ? 0 : this.sigma.hashCode());
        result = prime * result + ((this.language == null) ? 0 : this.language.hashCode());
        result = prime * result + ((this.active == null) ? 0 : this.active.hashCode());
        result = prime * result + ((this.metadata == null) ? 0 : this.metadata.hashCode());
        result = prime * result + ((this.createdAt == null) ? 0 : this.createdAt.hashCode());
        result = prime * result + ((this.createdBy == null) ? 0 : this.createdBy.hashCode());
        result = prime * result + ((this.updatedAt == null) ? 0 : this.updatedAt.hashCode());
        result = prime * result + ((this.updatedBy == null) ? 0 : this.updatedBy.hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder("GNode (");

        sb.append(key);
        sb.append(", ").append(name);
        sb.append(", ").append(x);
        sb.append(", ").append(y);
        sb.append(", ").append(ui);
        sb.append(", ").append(graphicId);
        sb.append(", ").append(recordData);
        sb.append(", ").append(recordKey);
        sb.append(", ").append(recordComponent);
        sb.append(", ").append(recordClass);
        sb.append(", ").append(sigma);
        sb.append(", ").append(language);
        sb.append(", ").append(active);
        sb.append(", ").append(metadata);
        sb.append(", ").append(createdAt);
        sb.append(", ").append(createdBy);
        sb.append(", ").append(updatedAt);
        sb.append(", ").append(updatedBy);

        sb.append(")");
        return sb.toString();
    }

    // -------------------------------------------------------------------------
    // FROM and INTO
    // -------------------------------------------------------------------------

    @Override
    public void from(IGNode from) {
        setKey(from.getKey());
        setName(from.getName());
        setX(from.getX());
        setY(from.getY());
        setUi(from.getUi());
        setGraphicId(from.getGraphicId());
        setRecordData(from.getRecordData());
        setRecordKey(from.getRecordKey());
        setRecordComponent(from.getRecordComponent());
        setRecordClass(from.getRecordClass());
        setSigma(from.getSigma());
        setLanguage(from.getLanguage());
        setActive(from.getActive());
        setMetadata(from.getMetadata());
        setCreatedAt(from.getCreatedAt());
        setCreatedBy(from.getCreatedBy());
        setUpdatedAt(from.getUpdatedAt());
        setUpdatedBy(from.getUpdatedBy());
    }

    @Override
    public <E extends IGNode> E into(E into) {
        into.from(this);
        return into;
    }
}
