001package com.aispeech.dui.dds.agent;
002
003
004import android.text.TextUtils;
005
006import org.json.JSONArray;
007import org.json.JSONObject;
008
009import java.util.HashMap;
010import java.util.Map;
011
012public class ContextIntent {
013
014    private String skillId;
015    private String option;
016    private final Map<String, Object> keyValue = new HashMap<>();
017
018    public ContextIntent() {
019    }
020
021    public ContextIntent(String key, String value) {
022        keyValue.put(key, value);
023    }
024
025    @Deprecated
026    public ContextIntent(String key, int value) {
027        keyValue.put(key, String.valueOf(value));
028    }
029
030    @Deprecated
031    public ContextIntent(String key, double value) {
032        keyValue.put(key, String.valueOf(value));
033    }
034
035    @Deprecated
036    public ContextIntent(String key, boolean value) {
037        keyValue.put(key, String.valueOf(value));
038    }
039
040    @Deprecated
041    public ContextIntent(String key, float value) {
042        keyValue.put(key, String.valueOf(value));
043    }
044
045    @Deprecated
046    public ContextIntent(String key, long value) {
047        keyValue.put(key, String.valueOf(value));
048    }
049
050    public ContextIntent(String key, JSONObject value) {
051        keyValue.put(key, value);
052    }
053
054    public ContextIntent(String key, JSONArray value) {
055        keyValue.put(key, value);
056    }
057
058    public void setSkillId(String skillId) {
059        this.skillId = skillId;
060    }
061
062    public String getSkillId() {
063        return skillId;
064    }
065
066    public String getOption() {
067        return option;
068    }
069
070    public void setOption(String option) {
071        this.option = option;
072    }
073
074    /**
075     * 添加 key value 配置,value 的类型要求和构造方法上允许的相同
076     *
077     * @param key   key
078     * @param value value
079     */
080    public void addKeyValue(String key, Object value) {
081        if (key == null || key.length() == 0 || value == null)
082            return;
083        if (value instanceof JSONObject || value instanceof JSONArray || value instanceof String) {
084            this.keyValue.put(key, value);
085        } else {
086            this.keyValue.put(key, String.valueOf(value));
087        }
088    }
089
090    public Map<String, Object> getKeyValue() {
091        return keyValue;
092    }
093
094    public String toString() {
095        return keyValue2JSONArray().toString();
096    }
097
098    public JSONArray keyValue2JSONArray() {
099        JSONArray jsonArray = new JSONArray();
100        try {
101            if (!keyValue.isEmpty())
102                for (String k : keyValue.keySet()) {
103                    JSONObject j = new JSONObject();
104                    j.put("key", k);
105                    j.put("value", TextUtils.equals(option, "delete") ? "" : keyValue.get(k));
106                    jsonArray.put(j);
107                }
108        } catch (Exception e) {
109            com.aispeech.dui.manager.AIJavaException.printException(e);
110        }
111        return jsonArray;
112    }
113}