package com.seeyon.utils.form;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class FormColumn {

    private String id;
    private List<FormFieldVo> vos = new ArrayList<>();
    private Map<String, Object> fieldsMap = new HashMap<>(); // 缓存字段map

    public FormColumn() {}

    public FormColumn(String id, List<FormFieldVo> vos) {
        this.id = id;
        setVos(vos);
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
        fieldsMap.put("id", id); // 同步到 map
    }

    public List<FormFieldVo> getVos() {
        return vos;
    }

    public void setVos(List<FormFieldVo> vos) {
        this.vos = vos != null ? vos : new ArrayList<>();
        rebuildFieldsMap();
    }

    /**
     * 获取字段 map，按 displayName 映射 value
     */
    public Map<String, Object> getFieldsMap() {
        return fieldsMap;
    }

    /**
     * 按 displayName 获取值
     */
    public Object getValue(String displayName) {
        return fieldsMap.get(displayName);
    }

    /**
     * 更新某个字段的值，同时同步到 map
     */
    public void setValue(String displayName, Object value) {
        for (FormFieldVo vo : vos) {
            if (displayName.equals(vo.getDisplayName())) {
                vo.setValue(value);
                break;
            }
        }
        fieldsMap.put(displayName, value);
    }

    /**
     * 内部方法：根据 vos 重建 map
     */
    private void rebuildFieldsMap() {
        fieldsMap.clear();
        for (FormFieldVo vo : vos) {
            fieldsMap.put(vo.getDisplayName(), vo.getValue());
        }
        fieldsMap.put("id", id);
    }
}
