/*
 * This file is generated by jOOQ.
 */
package cn.vertxup.workflow.domain.tables.records;


import cn.vertxup.workflow.domain.tables.WFlow;
import cn.vertxup.workflow.domain.tables.interfaces.IWFlow;
import io.github.jklingsporn.vertx.jooq.shared.internal.VertxPojo;
import org.jooq.Record1;
import org.jooq.impl.UpdatableRecordImpl;

import java.time.LocalDateTime;
/**
 * This class is generated by jOOQ.
 */
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class WFlowRecord extends UpdatableRecordImpl<WFlowRecord> implements VertxPojo, IWFlow {

    private static final long serialVersionUID = 1L;

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.KEY</code>. 「key」- 流程定义主键
     */
    @Override
    public WFlowRecord setKey(String value) {
        set(0, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.KEY</code>. 「key」- 流程定义主键
     */
    @Override
    public String getKey() {
        return (String) get(0);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.NAME</code>. 「name」- 流程定义名称
     */
    @Override
    public WFlowRecord setName(String value) {
        set(1, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.NAME</code>. 「name」- 流程定义名称
     */
    @Override
    public String getName() {
        return (String) get(1);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.CODE</code>. 「code」- 流程定义编号（系统可用）
     */
    @Override
    public WFlowRecord setCode(String value) {
        set(2, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.CODE</code>. 「code」- 流程定义编号（系统可用）
     */
    @Override
    public String getCode() {
        return (String) get(2);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.TYPE</code>. 「type」- 流程类型，对接
     * zero.workflow.cat的X_TABULAR
     */
    @Override
    public WFlowRecord setType(String value) {
        set(3, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.TYPE</code>. 「type」- 流程类型，对接
     * zero.workflow.cat的X_TABULAR
     */
    @Override
    public String getType() {
        return (String) get(3);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.DEFINITION_KEY</code>.
     * 「definitionKey」- 定义ID（读取流程图所需）, getProcessDefinitionId
     */
    @Override
    public WFlowRecord setDefinitionKey(String value) {
        set(4, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.DEFINITION_KEY</code>.
     * 「definitionKey」- 定义ID（读取流程图所需）, getProcessDefinitionId
     */
    @Override
    public String getDefinitionKey() {
        return (String) get(4);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.AUTHORIZED_COMPONENT</code>.
     * 「authorizedComponent」- 流程授权组件
     */
    @Override
    public WFlowRecord setAuthorizedComponent(String value) {
        set(5, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.AUTHORIZED_COMPONENT</code>.
     * 「authorizedComponent」- 流程授权组件
     */
    @Override
    public String getAuthorizedComponent() {
        return (String) get(5);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.AUTHORIZED_CONFIG</code>.
     * 「authorizedConfig」- 流程授权配置
     */
    @Override
    public WFlowRecord setAuthorizedConfig(String value) {
        set(6, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.AUTHORIZED_CONFIG</code>.
     * 「authorizedConfig」- 流程授权配置
     */
    @Override
    public String getAuthorizedConfig() {
        return (String) get(6);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.GENERATE_COMPONENT</code>.
     * 「generateComponent」- Todo生成组件
     */
    @Override
    public WFlowRecord setGenerateComponent(String value) {
        set(7, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.GENERATE_COMPONENT</code>.
     * 「generateComponent」- Todo生成组件
     */
    @Override
    public String getGenerateComponent() {
        return (String) get(7);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.GENERATE_CONFIG</code>.
     * 「generateConfig」- Todo生成配置
     */
    @Override
    public WFlowRecord setGenerateConfig(String value) {
        set(8, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.GENERATE_CONFIG</code>.
     * 「generateConfig」- Todo生成配置
     */
    @Override
    public String getGenerateConfig() {
        return (String) get(8);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.RUN_COMPONENT</code>. 「runComponent」-
     * 执行组件
     */
    @Override
    public WFlowRecord setRunComponent(String value) {
        set(9, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.RUN_COMPONENT</code>. 「runComponent」-
     * 执行组件
     */
    @Override
    public String getRunComponent() {
        return (String) get(9);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.RUN_CONFIG</code>. 「runConfig」- 执行配置
     */
    @Override
    public WFlowRecord setRunConfig(String value) {
        set(10, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.RUN_CONFIG</code>. 「runConfig」- 执行配置
     */
    @Override
    public String getRunConfig() {
        return (String) get(10);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.START_COMPONENT</code>.
     * 「startComponent」- 启动组件
     */
    @Override
    public WFlowRecord setStartComponent(String value) {
        set(11, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.START_COMPONENT</code>.
     * 「startComponent」- 启动组件
     */
    @Override
    public String getStartComponent() {
        return (String) get(11);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.START_CONFIG</code>. 「startConfig」-
     * 启动配置
     */
    @Override
    public WFlowRecord setStartConfig(String value) {
        set(12, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.START_CONFIG</code>. 「startConfig」-
     * 启动配置
     */
    @Override
    public String getStartConfig() {
        return (String) get(12);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.END_COMPONENT</code>. 「endComponent」-
     * 完成组件
     */
    @Override
    public WFlowRecord setEndComponent(String value) {
        set(13, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.END_COMPONENT</code>. 「endComponent」-
     * 完成组件
     */
    @Override
    public String getEndComponent() {
        return (String) get(13);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.END_CONFIG</code>. 「endConfig」- 完成配置
     */
    @Override
    public WFlowRecord setEndConfig(String value) {
        set(14, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.END_CONFIG</code>. 「endConfig」- 完成配置
     */
    @Override
    public String getEndConfig() {
        return (String) get(14);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.UI_COMPONENT</code>. 「uiComponent」-
     * 界面组件
     */
    @Override
    public WFlowRecord setUiComponent(String value) {
        set(15, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.UI_COMPONENT</code>. 「uiComponent」-
     * 界面组件
     */
    @Override
    public String getUiComponent() {
        return (String) get(15);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.UI_CONFIG</code>. 「uiConfig」- 界面配置
     */
    @Override
    public WFlowRecord setUiConfig(String value) {
        set(16, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.UI_CONFIG</code>. 「uiConfig」- 界面配置
     */
    @Override
    public String getUiConfig() {
        return (String) get(16);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.UI_ASSIST</code>. 「uiAssist」-
     * 界面辅助数据专用配置
     */
    @Override
    public WFlowRecord setUiAssist(String value) {
        set(17, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.UI_ASSIST</code>. 「uiAssist」-
     * 界面辅助数据专用配置
     */
    @Override
    public String getUiAssist() {
        return (String) get(17);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.UI_LINKAGE</code>. 「uiLinkage」-
     * 关联部分专用配置：关联工单、关联资产、关联附件
     */
    @Override
    public WFlowRecord setUiLinkage(String value) {
        set(18, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.UI_LINKAGE</code>. 「uiLinkage」-
     * 关联部分专用配置：关联工单、关联资产、关联附件
     */
    @Override
    public String getUiLinkage() {
        return (String) get(18);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.COMMENT</code>. 「comment」 - 流程定义备注
     */
    @Override
    public WFlowRecord setComment(String value) {
        set(19, value);
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.W_FLOW.COMMENT</code>. 「comment」 - 流程定义备注
     */
    @Override
    public String getComment() {
        return (String) get(19);
    }

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.ACTIVE</code>. 「active」- 是否启用
     */
    @Override
    public WFlowRecord setActive(Boolean value) {
        set(20, value);
        return this;
    }

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

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.SIGMA</code>. 「sigma」- 统一标识
     */
    @Override
    public WFlowRecord setSigma(String value) {
        set(21, value);
        return this;
    }

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

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.METADATA</code>. 「metadata」- 附加配置
     */
    @Override
    public WFlowRecord setMetadata(String value) {
        set(22, value);
        return this;
    }

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

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.LANGUAGE</code>. 「language」- 使用的语言
     */
    @Override
    public WFlowRecord setLanguage(String value) {
        set(23, value);
        return this;
    }

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

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.CREATED_AT</code>. 「createdAt」- 创建时间
     */
    @Override
    public WFlowRecord setCreatedAt(LocalDateTime value) {
        set(24, value);
        return this;
    }

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

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.CREATED_BY</code>. 「createdBy」- 创建人
     */
    @Override
    public WFlowRecord setCreatedBy(String value) {
        set(25, value);
        return this;
    }

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

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.UPDATED_AT</code>. 「updatedAt」- 更新时间
     */
    @Override
    public WFlowRecord setUpdatedAt(LocalDateTime value) {
        set(26, value);
        return this;
    }

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

    /**
     * Setter for <code>DB_ETERNAL.W_FLOW.UPDATED_BY</code>. 「updatedBy」- 更新人
     */
    @Override
    public WFlowRecord setUpdatedBy(String value) {
        set(27, value);
        return this;
    }

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

    // -------------------------------------------------------------------------
    // Primary key information
    // -------------------------------------------------------------------------

    @Override
    public Record1<String> key() {
        return (Record1) super.key();
    }

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

    @Override
    public void from(IWFlow from) {
        setKey(from.getKey());
        setName(from.getName());
        setCode(from.getCode());
        setType(from.getType());
        setDefinitionKey(from.getDefinitionKey());
        setAuthorizedComponent(from.getAuthorizedComponent());
        setAuthorizedConfig(from.getAuthorizedConfig());
        setGenerateComponent(from.getGenerateComponent());
        setGenerateConfig(from.getGenerateConfig());
        setRunComponent(from.getRunComponent());
        setRunConfig(from.getRunConfig());
        setStartComponent(from.getStartComponent());
        setStartConfig(from.getStartConfig());
        setEndComponent(from.getEndComponent());
        setEndConfig(from.getEndConfig());
        setUiComponent(from.getUiComponent());
        setUiConfig(from.getUiConfig());
        setUiAssist(from.getUiAssist());
        setUiLinkage(from.getUiLinkage());
        setComment(from.getComment());
        setActive(from.getActive());
        setSigma(from.getSigma());
        setMetadata(from.getMetadata());
        setLanguage(from.getLanguage());
        setCreatedAt(from.getCreatedAt());
        setCreatedBy(from.getCreatedBy());
        setUpdatedAt(from.getUpdatedAt());
        setUpdatedBy(from.getUpdatedBy());
    }

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

    // -------------------------------------------------------------------------
    // Constructors
    // -------------------------------------------------------------------------

    /**
     * Create a detached WFlowRecord
     */
    public WFlowRecord() {
        super(WFlow.W_FLOW);
    }

    /**
     * Create a detached, initialised WFlowRecord
     */
    public WFlowRecord(String key, String name, String code, String type, String definitionKey, String authorizedComponent, String authorizedConfig, String generateComponent, String generateConfig, String runComponent, String runConfig, String startComponent, String startConfig, String endComponent, String endConfig, String uiComponent, String uiConfig, String uiAssist, String uiLinkage, String comment, Boolean active, String sigma, String metadata, String language, LocalDateTime createdAt, String createdBy, LocalDateTime updatedAt, String updatedBy) {
        super(WFlow.W_FLOW);

        setKey(key);
        setName(name);
        setCode(code);
        setType(type);
        setDefinitionKey(definitionKey);
        setAuthorizedComponent(authorizedComponent);
        setAuthorizedConfig(authorizedConfig);
        setGenerateComponent(generateComponent);
        setGenerateConfig(generateConfig);
        setRunComponent(runComponent);
        setRunConfig(runConfig);
        setStartComponent(startComponent);
        setStartConfig(startConfig);
        setEndComponent(endComponent);
        setEndConfig(endConfig);
        setUiComponent(uiComponent);
        setUiConfig(uiConfig);
        setUiAssist(uiAssist);
        setUiLinkage(uiLinkage);
        setComment(comment);
        setActive(active);
        setSigma(sigma);
        setMetadata(metadata);
        setLanguage(language);
        setCreatedAt(createdAt);
        setCreatedBy(createdBy);
        setUpdatedAt(updatedAt);
        setUpdatedBy(updatedBy);
    }

    /**
     * Create a detached, initialised WFlowRecord
     */
    public WFlowRecord(cn.vertxup.workflow.domain.tables.pojos.WFlow value) {
        super(WFlow.W_FLOW);

        if (value != null) {
            setKey(value.getKey());
            setName(value.getName());
            setCode(value.getCode());
            setType(value.getType());
            setDefinitionKey(value.getDefinitionKey());
            setAuthorizedComponent(value.getAuthorizedComponent());
            setAuthorizedConfig(value.getAuthorizedConfig());
            setGenerateComponent(value.getGenerateComponent());
            setGenerateConfig(value.getGenerateConfig());
            setRunComponent(value.getRunComponent());
            setRunConfig(value.getRunConfig());
            setStartComponent(value.getStartComponent());
            setStartConfig(value.getStartConfig());
            setEndComponent(value.getEndComponent());
            setEndConfig(value.getEndConfig());
            setUiComponent(value.getUiComponent());
            setUiConfig(value.getUiConfig());
            setUiAssist(value.getUiAssist());
            setUiLinkage(value.getUiLinkage());
            setComment(value.getComment());
            setActive(value.getActive());
            setSigma(value.getSigma());
            setMetadata(value.getMetadata());
            setLanguage(value.getLanguage());
            setCreatedAt(value.getCreatedAt());
            setCreatedBy(value.getCreatedBy());
            setUpdatedAt(value.getUpdatedAt());
            setUpdatedBy(value.getUpdatedBy());
        }
    }

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