package cn.axzo.msg.center.service.pending.response.v3.model;

import cn.axzo.msg.center.service.enums.GroupType;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Getter;
import lombok.Setter;

import javax.annotation.Nullable;
import javax.validation.constraints.NotNull;
import java.util.Collections;
import java.util.List;

/**
 * @author yanglin
 */
@Setter
@Getter
public class ParsedGroupV3 {

    private Long id;

    /**
     * 分组名称, 公共组件时为空
     */
    private String name;

    /**
     * 分组类型. KV_VALUES: 键值信息; COMPONENT_WORKER:工人卡片
     */
    private GroupType groupType;

    // !! 分组内容

    /**
     * 分组信息. groupType=KV_VALUES读这个信息
     */
    private ParsedGroupInfo groupInfo;

    /**
     * 工人卡片信息. groupType=COMPONENT_WORKER读这个信息
     * <p/>
     * 由yoke填充
     */
    @Nullable @JsonInclude(JsonInclude.Include.NON_NULL)
    private WorkerInfo workerInfo;

    @NotNull
    public List<ParsedKV> determineKeyValues() {
        return groupInfo == null ? Collections.emptyList() : groupInfo.getKeyValues();
    }

    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }
}