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


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

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

    private static final long serialVersionUID = 1L;

    private String key;
    private String name;
    private String type;
    private String sourceKey;
    private String targetKey;
    private String graphicId;
    private String ui;
    private String recordKey;
    private String recordData;
    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 GEdge() {}

    public GEdge(IGEdge value) {
        this.key = value.getKey();
        this.name = value.getName();
        this.type = value.getType();
        this.sourceKey = value.getSourceKey();
        this.targetKey = value.getTargetKey();
        this.graphicId = value.getGraphicId();
        this.ui = value.getUi();
        this.recordKey = value.getRecordKey();
        this.recordData = value.getRecordData();
        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 GEdge(
        String key,
        String name,
        String type,
        String sourceKey,
        String targetKey,
        String graphicId,
        String ui,
        String recordKey,
        String recordData,
        String sigma,
        String language,
        Boolean active,
        String metadata,
        LocalDateTime createdAt,
        String createdBy,
        LocalDateTime updatedAt,
        String updatedBy
    ) {
        this.key = key;
        this.name = name;
        this.type = type;
        this.sourceKey = sourceKey;
        this.targetKey = targetKey;
        this.graphicId = graphicId;
        this.ui = ui;
        this.recordKey = recordKey;
        this.recordData = recordData;
        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 GEdge(io.vertx.core.json.JsonObject json) {
                this();
                fromJson(json);
        }

    /**
     * Getter for <code>DB_ETERNAL.G_EDGE.KEY</code>. 「key」- 拓扑图边的ID
     */
    @Override
    public String getKey() {
        return this.key;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_EDGE.KEY</code>. 「key」- 拓扑图边的ID
     */
    @Override
    public GEdge setKey(String key) {
        this.key = key;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_EDGE.NAME</code>. 「name」- 边的名称
     */
    @Override
    public String getName() {
        return this.name;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_EDGE.NAME</code>. 「name」- 边的名称
     */
    @Override
    public GEdge setName(String name) {
        this.name = name;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_EDGE.TYPE</code>. 「type」- 拓扑图边的类型，描述关系本质
     */
    @Override
    public String getType() {
        return this.type;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_EDGE.TYPE</code>. 「type」- 拓扑图边的类型，描述关系本质
     */
    @Override
    public GEdge setType(String type) {
        this.type = type;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_EDGE.SOURCE_KEY</code>. 「sourceKey」-
     * 拓扑图开始节点
     */
    @Override
    public String getSourceKey() {
        return this.sourceKey;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_EDGE.SOURCE_KEY</code>. 「sourceKey」-
     * 拓扑图开始节点
     */
    @Override
    public GEdge setSourceKey(String sourceKey) {
        this.sourceKey = sourceKey;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_EDGE.TARGET_KEY</code>. 「targetKey」-
     * 拓扑图结束节点
     */
    @Override
    public String getTargetKey() {
        return this.targetKey;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_EDGE.TARGET_KEY</code>. 「targetKey」-
     * 拓扑图结束节点
     */
    @Override
    public GEdge setTargetKey(String targetKey) {
        this.targetKey = targetKey;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.G_EDGE.GRAPHIC_ID</code>. 「graphicId」-
     * 当前关联拓扑图ID
     */
    @Override
    public String getGraphicId() {
        return this.graphicId;
    }

    /**
     * Setter for <code>DB_ETERNAL.G_EDGE.GRAPHIC_ID</code>. 「graphicId」-
     * 当前关联拓扑图ID
     */
    @Override
    public GEdge setGraphicId(String graphicId) {
        this.graphicId = graphicId;
        return this;
    }

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

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

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

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

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

    /**
     * Setter for <code>DB_ETERNAL.G_EDGE.RECORD_DATA</code>. 「recordData」-
     * 组中存储的数据信息
     */
    @Override
    public GEdge setRecordData(String recordData) {
        this.recordData = recordData;
        return this;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /**
     * Setter for <code>DB_ETERNAL.G_EDGE.UPDATED_BY</code>. 「updatedBy」- 更新人
     */
    @Override
    public GEdge 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 GEdge other = (GEdge) 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.type == null) {
            if (other.type != null)
                return false;
        }
        else if (!this.type.equals(other.type))
            return false;
        if (this.sourceKey == null) {
            if (other.sourceKey != null)
                return false;
        }
        else if (!this.sourceKey.equals(other.sourceKey))
            return false;
        if (this.targetKey == null) {
            if (other.targetKey != null)
                return false;
        }
        else if (!this.targetKey.equals(other.targetKey))
            return false;
        if (this.graphicId == null) {
            if (other.graphicId != null)
                return false;
        }
        else if (!this.graphicId.equals(other.graphicId))
            return false;
        if (this.ui == null) {
            if (other.ui != null)
                return false;
        }
        else if (!this.ui.equals(other.ui))
            return false;
        if (this.recordKey == null) {
            if (other.recordKey != null)
                return false;
        }
        else if (!this.recordKey.equals(other.recordKey))
            return false;
        if (this.recordData == null) {
            if (other.recordData != null)
                return false;
        }
        else if (!this.recordData.equals(other.recordData))
            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.type == null) ? 0 : this.type.hashCode());
        result = prime * result + ((this.sourceKey == null) ? 0 : this.sourceKey.hashCode());
        result = prime * result + ((this.targetKey == null) ? 0 : this.targetKey.hashCode());
        result = prime * result + ((this.graphicId == null) ? 0 : this.graphicId.hashCode());
        result = prime * result + ((this.ui == null) ? 0 : this.ui.hashCode());
        result = prime * result + ((this.recordKey == null) ? 0 : this.recordKey.hashCode());
        result = prime * result + ((this.recordData == null) ? 0 : this.recordData.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("GEdge (");

        sb.append(key);
        sb.append(", ").append(name);
        sb.append(", ").append(type);
        sb.append(", ").append(sourceKey);
        sb.append(", ").append(targetKey);
        sb.append(", ").append(graphicId);
        sb.append(", ").append(ui);
        sb.append(", ").append(recordKey);
        sb.append(", ").append(recordData);
        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(IGEdge from) {
        setKey(from.getKey());
        setName(from.getName());
        setType(from.getType());
        setSourceKey(from.getSourceKey());
        setTargetKey(from.getTargetKey());
        setGraphicId(from.getGraphicId());
        setUi(from.getUi());
        setRecordKey(from.getRecordKey());
        setRecordData(from.getRecordData());
        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 IGEdge> E into(E into) {
        into.from(this);
        return into;
    }
}
