package com.highdatas.mdm.entity;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.highdatas.mdm.pojo.Segment;
import com.highdatas.mdm.pojo.ViewJoinType;
import com.highdatas.mdm.util.Constant;
import com.highdatas.mdm.util.ContentBuilder;
import com.highdatas.mdm.util.DbUtils;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
import java.text.MessageFormat;
import java.util.List;
/**
*
*
*
*
* @author kimi
* @since 2020-04-15
*/
@TableName("sys_view_join")
public class SysViewJoin extends Model {
private static final long serialVersionUID = 1L;
private String id;
@TableField("parent_id")
private String parentId;
@TableField("menu_id")
private String menuId;
private String fields;
@TableField("join_maintain")
private String joinMaintain;
@TableField("join_field")
private String joinField;
@TableField("base_field")
private String baseField;
@TableField("join_segment")
private String joinSegment;
@TableField("join_type")
private ViewJoinType joinType;
@TableField("need_update")
private Boolean needUpdate;
private transient String joinTableName;
private transient String baseTableName;
private transient String joinVersion;
private transient String menuName;
public String getMenuName() {
return menuName;
}
public SysViewJoin setMenuName(String menuName) {
this.menuName = menuName;
return this;
}
public ViewJoinType getJoinType() {
return joinType;
}
public SysViewJoin setJoinType(ViewJoinType joinType) {
this.joinType = joinType;
return this;
}
public Boolean getNeedUpdate() {
return needUpdate;
}
public SysViewJoin setNeedUpdate(Boolean needUpdate) {
this.needUpdate = needUpdate;
return this;
}
public String getMenuId() {
return menuId;
}
public SysViewJoin setMenuId(String menuId) {
this.menuId = menuId;
return this;
}
public String getJoinTableName() {
return joinTableName;
}
public void setJoinTableName(String joinTableName) {
this.joinTableName = joinTableName;
}
public String getJoinVersion() {
return joinVersion;
}
public void setJoinVersion(String joinVersion) {
this.joinVersion = joinVersion;
}
public String getId() {
return id;
}
public SysViewJoin setId(String id) {
this.id = id;
return this;
}
public String getParentId() {
return parentId;
}
public SysViewJoin setParentId(String parentId) {
this.parentId = parentId;
return this;
}
public String getFields() {
return fields;
}
public SysViewJoin setFields(String fields) {
this.fields = fields;
return this;
}
public String getJoinMaintain() {
return joinMaintain;
}
public SysViewJoin setJoinMaintain(String joinMaintain) {
this.joinMaintain = joinMaintain;
return this;
}
public String getJoinField() {
return joinField;
}
public SysViewJoin setJoinField(String joinField) {
this.joinField = joinField;
return this;
}
public String getBaseField() {
return baseField;
}
public SysViewJoin setBaseField(String baseField) {
this.baseField = baseField;
return this;
}
public String getJoinSegment() {
return joinSegment;
}
public SysViewJoin setJoinSegment(String joinSegment) {
this.joinSegment = joinSegment;
return this;
}
@Override
protected Serializable pkVal() {
return this.id;
}
@Override
public String toString() {
return "SysViewJoin{" +
"id=" + id +
", parentId=" + parentId +
", fields=" + fields +
", joinMaintain=" + joinMaintain +
", joinField=" + joinField +
", baseField=" + baseField +
", joinSegment=" + joinSegment +
"}";
}
public String createJoinStr() {
if (StringUtils.isEmpty(joinTableName)) {
return null;
}
if (StringUtils.isEmpty(baseTableName)) {
return null;
}
List baseFieldList = DbUtils.split(baseField);
List joinFieldList = DbUtils.split(joinField);
ContentBuilder builder = new ContentBuilder(Constant.AND);
for (int i = 0; i < baseFieldList.size(); i++) {
String oneBase = baseFieldList.get(i);
String oneJoin = joinFieldList.get(i);
String base = MessageFormat.format(Constant.Alias, baseTableName, oneBase);
String join = MessageFormat.format(Constant.Alias, joinTableName, oneJoin);
Segment segment = new Segment(base, join);
builder.append(segment.toRawString());
}
return MessageFormat.format(Constant.InnerJoinTemplate, joinType.toString(), joinTableName, builder.toString());
}
public String getBaseTableName() {
return baseTableName;
}
public SysViewJoin setBaseTableName(String baseTableName) {
this.baseTableName = baseTableName;
return this;
}
}