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


import cn.vertxup.rbac.domain.tables.interfaces.ISVisitant;
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 SVisitant implements VertxPojo, ISVisitant {

    private static final long serialVersionUID = 1L;

    private String key;
    private String viewId;
    private String mode;
    private String phase;
    private String type;
    private String identifier;
    private String seekKey;
    private String dmRow;
    private String dmQr;
    private String dmColumn;
    private String aclVisible;
    private String aclView;
    private String aclVariety;
    private String aclVow;
    private String aclVerge;
    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 SVisitant() {}

    public SVisitant(ISVisitant value) {
        this.key = value.getKey();
        this.viewId = value.getViewId();
        this.mode = value.getMode();
        this.phase = value.getPhase();
        this.type = value.getType();
        this.identifier = value.getIdentifier();
        this.seekKey = value.getSeekKey();
        this.dmRow = value.getDmRow();
        this.dmQr = value.getDmQr();
        this.dmColumn = value.getDmColumn();
        this.aclVisible = value.getAclVisible();
        this.aclView = value.getAclView();
        this.aclVariety = value.getAclVariety();
        this.aclVow = value.getAclVow();
        this.aclVerge = value.getAclVerge();
        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 SVisitant(
        String key,
        String viewId,
        String mode,
        String phase,
        String type,
        String identifier,
        String seekKey,
        String dmRow,
        String dmQr,
        String dmColumn,
        String aclVisible,
        String aclView,
        String aclVariety,
        String aclVow,
        String aclVerge,
        String sigma,
        String language,
        Boolean active,
        String metadata,
        LocalDateTime createdAt,
        String createdBy,
        LocalDateTime updatedAt,
        String updatedBy
    ) {
        this.key = key;
        this.viewId = viewId;
        this.mode = mode;
        this.phase = phase;
        this.type = type;
        this.identifier = identifier;
        this.seekKey = seekKey;
        this.dmRow = dmRow;
        this.dmQr = dmQr;
        this.dmColumn = dmColumn;
        this.aclVisible = aclVisible;
        this.aclView = aclView;
        this.aclVariety = aclVariety;
        this.aclVow = aclVow;
        this.aclVerge = aclVerge;
        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 SVisitant(io.vertx.core.json.JsonObject json) {
                this();
                fromJson(json);
        }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.KEY</code>. 「key」- 限定记录ID
     */
    @Override
    public String getKey() {
        return this.key;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.KEY</code>. 「key」- 限定记录ID
     */
    @Override
    public SVisitant setKey(String key) {
        this.key = key;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.VIEW_ID</code>. 「viewId」-
     * 视图访问者的读ID
     */
    @Override
    public String getViewId() {
        return this.viewId;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.VIEW_ID</code>. 「viewId」-
     * 视图访问者的读ID
     */
    @Override
    public SVisitant setViewId(String viewId) {
        this.viewId = viewId;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.MODE</code>. 「mode」-
     * 模式，资源访问者继承于资源，可`替换/扩展`两种模式
     */
    @Override
    public String getMode() {
        return this.mode;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.MODE</code>. 「mode」-
     * 模式，资源访问者继承于资源，可`替换/扩展`两种模式
     */
    @Override
    public SVisitant setMode(String mode) {
        this.mode = mode;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.PHASE</code>. 「phase」- 作用周期
     */
    @Override
    public String getPhase() {
        return this.phase;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.PHASE</code>. 「phase」- 作用周期
     */
    @Override
    public SVisitant setPhase(String phase) {
        this.phase = phase;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.TYPE</code>. 「type」- 访问者类型
     */
    @Override
    public String getType() {
        return this.type;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.TYPE</code>. 「type」- 访问者类型
     */
    @Override
    public SVisitant setType(String type) {
        this.type = type;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.IDENTIFIER</code>. 「identifier」-
     * 动态类型中的模型ID
     */
    @Override
    public String getIdentifier() {
        return this.identifier;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.IDENTIFIER</code>. 「identifier」-
     * 动态类型中的模型ID
     */
    @Override
    public SVisitant setIdentifier(String identifier) {
        this.identifier = identifier;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.SEEK_KEY</code>. 「seekKey」-
     * 资源检索的唯一键
     */
    @Override
    public String getSeekKey() {
        return this.seekKey;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.SEEK_KEY</code>. 「seekKey」-
     * 资源检索的唯一键
     */
    @Override
    public SVisitant setSeekKey(String seekKey) {
        this.seekKey = seekKey;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.DM_ROW</code>. 「dmRow」对应视图中 Rows
     */
    @Override
    public String getDmRow() {
        return this.dmRow;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.DM_ROW</code>. 「dmRow」对应视图中 Rows
     */
    @Override
    public SVisitant setDmRow(String dmRow) {
        this.dmRow = dmRow;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.DM_QR</code>. 「dmQr」对应视图中的
     * Criteria
     */
    @Override
    public String getDmQr() {
        return this.dmQr;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.DM_QR</code>. 「dmQr」对应视图中的
     * Criteria
     */
    @Override
    public SVisitant setDmQr(String dmQr) {
        this.dmQr = dmQr;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.DM_COLUMN</code>. 「dmColumn」对应视图中的
     * Projection
     */
    @Override
    public String getDmColumn() {
        return this.dmColumn;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.DM_COLUMN</code>. 「dmColumn」对应视图中的
     * Projection
     */
    @Override
    public SVisitant setDmColumn(String dmColumn) {
        this.dmColumn = dmColumn;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.ACL_VISIBLE</code>. 「aclVisible」-
     * 可见的属性集
     */
    @Override
    public String getAclVisible() {
        return this.aclVisible;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.ACL_VISIBLE</code>. 「aclVisible」-
     * 可见的属性集
     */
    @Override
    public SVisitant setAclVisible(String aclVisible) {
        this.aclVisible = aclVisible;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.ACL_VIEW</code>. 「aclView」- 只读的属性集
     */
    @Override
    public String getAclView() {
        return this.aclView;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.ACL_VIEW</code>. 「aclView」- 只读的属性集
     */
    @Override
    public SVisitant setAclView(String aclView) {
        this.aclView = aclView;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.ACL_VARIETY</code>. 「aclVariety」-
     * 多样性的属性集，用于控制集合类型的属性
     */
    @Override
    public String getAclVariety() {
        return this.aclVariety;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.ACL_VARIETY</code>. 「aclVariety」-
     * 多样性的属性集，用于控制集合类型的属性
     */
    @Override
    public SVisitant setAclVariety(String aclVariety) {
        this.aclVariety = aclVariety;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.ACL_VOW</code>. 「aclVow」- 引用类属性集
     */
    @Override
    public String getAclVow() {
        return this.aclVow;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.ACL_VOW</code>. 「aclVow」- 引用类属性集
     */
    @Override
    public SVisitant setAclVow(String aclVow) {
        this.aclVow = aclVow;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.ACL_VERGE</code>. 「aclVerge」-
     * 依赖属性集
     */
    @Override
    public String getAclVerge() {
        return this.aclVerge;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.ACL_VERGE</code>. 「aclVerge」-
     * 依赖属性集
     */
    @Override
    public SVisitant setAclVerge(String aclVerge) {
        this.aclVerge = aclVerge;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.S_VISITANT.SIGMA</code>. 「sigma」- 用户组绑定的统一标识
     */
    @Override
    public String getSigma() {
        return this.sigma;
    }

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.SIGMA</code>. 「sigma」- 用户组绑定的统一标识
     */
    @Override
    public SVisitant setSigma(String sigma) {
        this.sigma = sigma;
        return this;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

    /**
     * Setter for <code>DB_ETERNAL.S_VISITANT.UPDATED_BY</code>. 「updatedBy」-
     * 更新人
     */
    @Override
    public SVisitant 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 SVisitant other = (SVisitant) obj;
        if (this.key == null) {
            if (other.key != null)
                return false;
        }
        else if (!this.key.equals(other.key))
            return false;
        if (this.viewId == null) {
            if (other.viewId != null)
                return false;
        }
        else if (!this.viewId.equals(other.viewId))
            return false;
        if (this.mode == null) {
            if (other.mode != null)
                return false;
        }
        else if (!this.mode.equals(other.mode))
            return false;
        if (this.phase == null) {
            if (other.phase != null)
                return false;
        }
        else if (!this.phase.equals(other.phase))
            return false;
        if (this.type == null) {
            if (other.type != null)
                return false;
        }
        else if (!this.type.equals(other.type))
            return false;
        if (this.identifier == null) {
            if (other.identifier != null)
                return false;
        }
        else if (!this.identifier.equals(other.identifier))
            return false;
        if (this.seekKey == null) {
            if (other.seekKey != null)
                return false;
        }
        else if (!this.seekKey.equals(other.seekKey))
            return false;
        if (this.dmRow == null) {
            if (other.dmRow != null)
                return false;
        }
        else if (!this.dmRow.equals(other.dmRow))
            return false;
        if (this.dmQr == null) {
            if (other.dmQr != null)
                return false;
        }
        else if (!this.dmQr.equals(other.dmQr))
            return false;
        if (this.dmColumn == null) {
            if (other.dmColumn != null)
                return false;
        }
        else if (!this.dmColumn.equals(other.dmColumn))
            return false;
        if (this.aclVisible == null) {
            if (other.aclVisible != null)
                return false;
        }
        else if (!this.aclVisible.equals(other.aclVisible))
            return false;
        if (this.aclView == null) {
            if (other.aclView != null)
                return false;
        }
        else if (!this.aclView.equals(other.aclView))
            return false;
        if (this.aclVariety == null) {
            if (other.aclVariety != null)
                return false;
        }
        else if (!this.aclVariety.equals(other.aclVariety))
            return false;
        if (this.aclVow == null) {
            if (other.aclVow != null)
                return false;
        }
        else if (!this.aclVow.equals(other.aclVow))
            return false;
        if (this.aclVerge == null) {
            if (other.aclVerge != null)
                return false;
        }
        else if (!this.aclVerge.equals(other.aclVerge))
            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.viewId == null) ? 0 : this.viewId.hashCode());
        result = prime * result + ((this.mode == null) ? 0 : this.mode.hashCode());
        result = prime * result + ((this.phase == null) ? 0 : this.phase.hashCode());
        result = prime * result + ((this.type == null) ? 0 : this.type.hashCode());
        result = prime * result + ((this.identifier == null) ? 0 : this.identifier.hashCode());
        result = prime * result + ((this.seekKey == null) ? 0 : this.seekKey.hashCode());
        result = prime * result + ((this.dmRow == null) ? 0 : this.dmRow.hashCode());
        result = prime * result + ((this.dmQr == null) ? 0 : this.dmQr.hashCode());
        result = prime * result + ((this.dmColumn == null) ? 0 : this.dmColumn.hashCode());
        result = prime * result + ((this.aclVisible == null) ? 0 : this.aclVisible.hashCode());
        result = prime * result + ((this.aclView == null) ? 0 : this.aclView.hashCode());
        result = prime * result + ((this.aclVariety == null) ? 0 : this.aclVariety.hashCode());
        result = prime * result + ((this.aclVow == null) ? 0 : this.aclVow.hashCode());
        result = prime * result + ((this.aclVerge == null) ? 0 : this.aclVerge.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("SVisitant (");

        sb.append(key);
        sb.append(", ").append(viewId);
        sb.append(", ").append(mode);
        sb.append(", ").append(phase);
        sb.append(", ").append(type);
        sb.append(", ").append(identifier);
        sb.append(", ").append(seekKey);
        sb.append(", ").append(dmRow);
        sb.append(", ").append(dmQr);
        sb.append(", ").append(dmColumn);
        sb.append(", ").append(aclVisible);
        sb.append(", ").append(aclView);
        sb.append(", ").append(aclVariety);
        sb.append(", ").append(aclVow);
        sb.append(", ").append(aclVerge);
        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(ISVisitant from) {
        setKey(from.getKey());
        setViewId(from.getViewId());
        setMode(from.getMode());
        setPhase(from.getPhase());
        setType(from.getType());
        setIdentifier(from.getIdentifier());
        setSeekKey(from.getSeekKey());
        setDmRow(from.getDmRow());
        setDmQr(from.getDmQr());
        setDmColumn(from.getDmColumn());
        setAclVisible(from.getAclVisible());
        setAclView(from.getAclView());
        setAclVariety(from.getAclVariety());
        setAclVow(from.getAclVow());
        setAclVerge(from.getAclVerge());
        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 ISVisitant> E into(E into) {
        into.from(this);
        return into;
    }
}
