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


import cn.vertxup.fm.domain.tables.interfaces.IFBank;
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 FBank implements VertxPojo, IFBank {

    private static final long serialVersionUID = 1L;

    private String key;
    private String name;
    private String code;
    private String alias;
    private String logo;
    private String website;
    private String comment;
    private String branchName;
    private String branchCode;
    private Boolean branch;
    private String bankId;
    private String locationId;
    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 FBank() {}

    public FBank(IFBank value) {
        this.key = value.getKey();
        this.name = value.getName();
        this.code = value.getCode();
        this.alias = value.getAlias();
        this.logo = value.getLogo();
        this.website = value.getWebsite();
        this.comment = value.getComment();
        this.branchName = value.getBranchName();
        this.branchCode = value.getBranchCode();
        this.branch = value.getBranch();
        this.bankId = value.getBankId();
        this.locationId = value.getLocationId();
        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 FBank(
        String key,
        String name,
        String code,
        String alias,
        String logo,
        String website,
        String comment,
        String branchName,
        String branchCode,
        Boolean branch,
        String bankId,
        String locationId,
        String sigma,
        String language,
        Boolean active,
        String metadata,
        LocalDateTime createdAt,
        String createdBy,
        LocalDateTime updatedAt,
        String updatedBy
    ) {
        this.key = key;
        this.name = name;
        this.code = code;
        this.alias = alias;
        this.logo = logo;
        this.website = website;
        this.comment = comment;
        this.branchName = branchName;
        this.branchCode = branchCode;
        this.branch = branch;
        this.bankId = bankId;
        this.locationId = locationId;
        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 FBank(io.vertx.core.json.JsonObject json) {
                this();
                fromJson(json);
        }

    /**
     * Getter for <code>DB_ETERNAL.F_BANK.KEY</code>. 「key」- 银行主键
     */
    @Override
    public String getKey() {
        return this.key;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_BANK.KEY</code>. 「key」- 银行主键
     */
    @Override
    public FBank setKey(String key) {
        this.key = key;
        return this;
    }

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

    /**
     * Setter for <code>DB_ETERNAL.F_BANK.NAME</code>. 「name」- 银行名称
     */
    @Override
    public FBank setName(String name) {
        this.name = name;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_BANK.CODE</code>. 「code」- 银行系统编号
     */
    @Override
    public String getCode() {
        return this.code;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_BANK.CODE</code>. 「code」- 银行系统编号
     */
    @Override
    public FBank setCode(String code) {
        this.code = code;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_BANK.ALIAS</code>. 「alias」- 银行别称
     */
    @Override
    public String getAlias() {
        return this.alias;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_BANK.ALIAS</code>. 「alias」- 银行别称
     */
    @Override
    public FBank setAlias(String alias) {
        this.alias = alias;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_BANK.LOGO</code>. 「logo」- 银行图标
     */
    @Override
    public String getLogo() {
        return this.logo;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_BANK.LOGO</code>. 「logo」- 银行图标
     */
    @Override
    public FBank setLogo(String logo) {
        this.logo = logo;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_BANK.WEBSITE</code>. 「website」- 银行主页
     */
    @Override
    public String getWebsite() {
        return this.website;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_BANK.WEBSITE</code>. 「website」- 银行主页
     */
    @Override
    public FBank setWebsite(String website) {
        this.website = website;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_BANK.COMMENT</code>. 「comment」 - 银行备注
     */
    @Override
    public String getComment() {
        return this.comment;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_BANK.COMMENT</code>. 「comment」 - 银行备注
     */
    @Override
    public FBank setComment(String comment) {
        this.comment = comment;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_BANK.BRANCH_NAME</code>. 「branchName」- 支行名称
     */
    @Override
    public String getBranchName() {
        return this.branchName;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_BANK.BRANCH_NAME</code>. 「branchName」- 支行名称
     */
    @Override
    public FBank setBranchName(String branchName) {
        this.branchName = branchName;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_BANK.BRANCH_CODE</code>. 「branchCode」- 支行编号
     */
    @Override
    public String getBranchCode() {
        return this.branchCode;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_BANK.BRANCH_CODE</code>. 「branchCode」- 支行编号
     */
    @Override
    public FBank setBranchCode(String branchCode) {
        this.branchCode = branchCode;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_BANK.BRANCH</code>. 「branch」- 是否支行
     */
    @Override
    public Boolean getBranch() {
        return this.branch;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_BANK.BRANCH</code>. 「branch」- 是否支行
     */
    @Override
    public FBank setBranch(Boolean branch) {
        this.branch = branch;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_BANK.BANK_ID</code>. 「bankId」- 所属银行ID
     */
    @Override
    public String getBankId() {
        return this.bankId;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_BANK.BANK_ID</code>. 「bankId」- 所属银行ID
     */
    @Override
    public FBank setBankId(String bankId) {
        this.bankId = bankId;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_BANK.LOCATION_ID</code>. 「locationId」-
     * 银行地址对应信息
     */
    @Override
    public String getLocationId() {
        return this.locationId;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_BANK.LOCATION_ID</code>. 「locationId」-
     * 银行地址对应信息
     */
    @Override
    public FBank setLocationId(String locationId) {
        this.locationId = locationId;
        return this;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /**
     * Setter for <code>DB_ETERNAL.F_BANK.UPDATED_BY</code>. 「updatedBy」- 更新人
     */
    @Override
    public FBank 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 FBank other = (FBank) 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.code == null) {
            if (other.code != null)
                return false;
        }
        else if (!this.code.equals(other.code))
            return false;
        if (this.alias == null) {
            if (other.alias != null)
                return false;
        }
        else if (!this.alias.equals(other.alias))
            return false;
        if (this.logo == null) {
            if (other.logo != null)
                return false;
        }
        else if (!this.logo.equals(other.logo))
            return false;
        if (this.website == null) {
            if (other.website != null)
                return false;
        }
        else if (!this.website.equals(other.website))
            return false;
        if (this.comment == null) {
            if (other.comment != null)
                return false;
        }
        else if (!this.comment.equals(other.comment))
            return false;
        if (this.branchName == null) {
            if (other.branchName != null)
                return false;
        }
        else if (!this.branchName.equals(other.branchName))
            return false;
        if (this.branchCode == null) {
            if (other.branchCode != null)
                return false;
        }
        else if (!this.branchCode.equals(other.branchCode))
            return false;
        if (this.branch == null) {
            if (other.branch != null)
                return false;
        }
        else if (!this.branch.equals(other.branch))
            return false;
        if (this.bankId == null) {
            if (other.bankId != null)
                return false;
        }
        else if (!this.bankId.equals(other.bankId))
            return false;
        if (this.locationId == null) {
            if (other.locationId != null)
                return false;
        }
        else if (!this.locationId.equals(other.locationId))
            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.code == null) ? 0 : this.code.hashCode());
        result = prime * result + ((this.alias == null) ? 0 : this.alias.hashCode());
        result = prime * result + ((this.logo == null) ? 0 : this.logo.hashCode());
        result = prime * result + ((this.website == null) ? 0 : this.website.hashCode());
        result = prime * result + ((this.comment == null) ? 0 : this.comment.hashCode());
        result = prime * result + ((this.branchName == null) ? 0 : this.branchName.hashCode());
        result = prime * result + ((this.branchCode == null) ? 0 : this.branchCode.hashCode());
        result = prime * result + ((this.branch == null) ? 0 : this.branch.hashCode());
        result = prime * result + ((this.bankId == null) ? 0 : this.bankId.hashCode());
        result = prime * result + ((this.locationId == null) ? 0 : this.locationId.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("FBank (");

        sb.append(key);
        sb.append(", ").append(name);
        sb.append(", ").append(code);
        sb.append(", ").append(alias);
        sb.append(", ").append(logo);
        sb.append(", ").append(website);
        sb.append(", ").append(comment);
        sb.append(", ").append(branchName);
        sb.append(", ").append(branchCode);
        sb.append(", ").append(branch);
        sb.append(", ").append(bankId);
        sb.append(", ").append(locationId);
        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(IFBank from) {
        setKey(from.getKey());
        setName(from.getName());
        setCode(from.getCode());
        setAlias(from.getAlias());
        setLogo(from.getLogo());
        setWebsite(from.getWebsite());
        setComment(from.getComment());
        setBranchName(from.getBranchName());
        setBranchCode(from.getBranchCode());
        setBranch(from.getBranch());
        setBankId(from.getBankId());
        setLocationId(from.getLocationId());
        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 IFBank> E into(E into) {
        into.from(this);
        return into;
    }
}
