RelationTable.java

package com.mycim.valueobject.table;

import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.valueobject.bas.Relation;
import com.mycim.valueobject.bas.TransactionLog;

/**
 * @author yibing.liu
 * @version 1.0
 * @date 2021/4/15
 */
public class RelationTable extends SpecificTableDto {

    /**
     * 拆出后的表字段相同的新关系表,可以直接复用此对象 修改表名即可
     *
     * @param tableName
     * @param relation
     * @param transactionLog
     */
    public RelationTable(String tableName, Relation relation, TransactionLog transactionLog) {
        super.tableName = tableName;
        super.transId = relation.getTransId();
        if (StringUtils.equalsIgnoreCase("CREATE", relation.getTransId()) ||
                StringUtils.equalsIgnoreCase("ADD", relation.getTransId()) ||
                StringUtils.containsIgnoreCase(relation.getTransId(), "ADD")) {
            setInsertFields(relation, transactionLog);
        } else if (StringUtils.equalsIgnoreCase("MODIFY", relation.getTransId()) ||
                StringUtils.equalsIgnoreCase("UPDATE", relation.getTransId())) {
            setUpdateFields(relation, transactionLog);
        } else {
            setDeleteFields(relation, transactionLog);
        }
    }

    @Override
    void setInsertFields(Relation relation, TransactionLog transactionLog) {
        addPrimaryKeyList(relation);
        addNormalFieldList(relation);
        addField("CREATE_TIME", transactionLog.getTransStartTimestamp());//需要赋值的字段
        addField("UPDATE_TIME", transactionLog.getTransStartTimestamp());
        addField("CREATE_USER_RRN", LocalContext.getUserRrn());
        addField("UPDATE_USER_RRN", LocalContext.getUserRrn());
        addField("LOCK_VERSION", relation.getLockVersion());
    }

    @Override
    void setUpdateFields(Relation relation, TransactionLog transactionLog) {
        //TODO
        addUpdatePrimaryKeyList(relation);
        addUpdateField("SEQUENCE_NUMBER", relation.getSequenceNumber());
        addUpdateField("STATUS", relation.getStatus());
        addUpdateField("ATTRIBUTE_DATA_1", relation.getAttributedata1());
        addUpdateField("ATTRIBUTE_DATA_2", relation.getAttributedata2());
        addUpdateField("ATTRIBUTE_DATA_3", relation.getAttributedata3());
        addUpdateField("ATTRIBUTE_DATA_4", relation.getAttributedata4());
        addUpdateField("ATTRIBUTE_DATA_5", relation.getAttributedata5());
        addUpdateField("ATTRIBUTE_DATA_6", relation.getAttributedata6());
        addUpdateField("ATTRIBUTE_DATA_7", relation.getAttributedata7());
        addUpdateField("UPDATE_USER_RRN", LocalContext.getUserRrn());
        addUpdateField("UPDATE_TIME", transactionLog.getTransStartTimestamp());
    }

    @Override
    void setDeleteFields(Relation relation, TransactionLog transactionLog) {
        addPrimaryKeyList(relation);
    }

}