
com.gitee.qdbp.jdbc.model.AllFieldColumn Maven / Gradle / Ivy
package com.gitee.qdbp.jdbc.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.gitee.qdbp.tools.utils.VerifyTools;
/**
* 全部字段及列信息
*
* @author zhaohuihua
* @version 190609
*/
public class AllFieldColumn implements Serializable {
/** serialVersionUID **/
private static final long serialVersionUID = 1L;
private final List items;
private final Map> sceneItems;
public AllFieldColumn(List items) {
VerifyTools.requireNotBlank(items, "items");
List list = new ArrayList<>();
for (T item : items) {
VerifyTools.requireNotBlank(item.getFieldName(), "fieldName");
VerifyTools.requireNotBlank(item.getColumnName(), "columnName");
@SuppressWarnings("unchecked")
T copied = (T) item.copy();
copied.modifyStatus.lockToUnmodifiable();
list.add(copied);
}
this.items = Collections.unmodifiableList(list);
this.sceneItems = new HashMap<>();
}
public boolean isEmpty() {
return this.items.isEmpty();
}
public List items() {
return this.items;
}
/**
* 查找主键字段
*
* @return 主键字段
* @since 3.2.0
*/
public SimpleFieldColumn findPrimaryKey() {
for (T item : this.items) {
if (item.isPrimaryKey()) {
return item;
}
}
return null;
}
/**
* 根据使用场景过滤子集
*
* @param scene 使用场景
* @return 字段列表子集
* @since 3.2.0
*/
public FieldColumns filter(FieldScene scene) {
if (sceneItems.containsKey(scene)) {
return sceneItems.get(scene);
}
List list = new ArrayList<>();
for (T item : this.items) {
if (sceneMatches(item, scene)) {
list.add(item);
}
}
FieldColumns part = new FieldColumns<>(list);
sceneItems.put(scene, part);
return part;
}
protected boolean sceneMatches(T item, FieldScene scene) {
switch (scene) {
case RESULT:
return true;
case INSERT:
return item.isColumnInsertable();
case UPDATE:
return item.isColumnUpdatable();
default: // CONDITION
return item.isColumnInsertable() || item.isColumnUpdatable();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy