All Downloads are FREE. Search and download functionalities are using the official Maven repository.

goja.rapid.ueditor.define.MultiState Maven / Gradle / Ivy

The newest version!
package goja.rapid.ueditor.define;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;

import goja.rapid.ueditor.kit.UEKit;

import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
 * 多状态集合状态
 * 其包含了多个状态的集合, 其本身自己也是一个状态
 *
 * @author [email protected]
 */
public class MultiState implements State {

    private boolean             state     = false;
    private String              info      = null;
    private Map   intMap    = Maps.newHashMap();
    private Map infoMap   = Maps.newHashMap();
    private List        stateList = Lists.newArrayList();

    public MultiState(boolean state) {
        this.state = state;
    }

    public MultiState(boolean state, String info) {
        this.state = state;
        this.info = info;
    }

    public MultiState(boolean state, int infoKey) {
        this.state = state;
        this.info = AppInfo.getStateInfo(infoKey);
    }

    @Override
    public boolean isSuccess() {
        return this.state;
    }

    public void addState(State state) {
        stateList.add(state.toJSONString());
    }

    /**
     * 该方法调用无效果
     */
    @Override
    public void putInfo(String name, String val) {
        this.infoMap.put(name, val);
    }

    @Override
    public String toJSONString() {

        String stateVal = this.isSuccess() ? AppInfo.getStateInfo(AppInfo.SUCCESS) : this.info;

        StringBuilder builder = new StringBuilder();

        builder.append("{\"state\": \"").append(stateVal).append("\"");

        // 数字转换
        Iterator iterator = this.intMap.keySet().iterator();

        while (iterator.hasNext()) {

            stateVal = iterator.next();

            builder.append(",\"" + stateVal + "\": " + this.intMap.get(stateVal));

        }

        iterator = this.infoMap.keySet().iterator();

        while (iterator.hasNext()) {

            stateVal = iterator.next();

            builder.append(",\"" + stateVal + "\": \"" + this.infoMap.get(stateVal) + "\"");

        }

        builder.append(", list: [");


        iterator = this.stateList.iterator();

        while (iterator.hasNext()) {

            builder.append(iterator.next() + ",");

        }

        if (this.stateList.size() > 0) {
            builder.deleteCharAt(builder.length() - 1);
        }

        builder.append(" ]}");

        return UEKit.toUnicode(builder.toString());

    }

    @Override
    public void putInfo(String name, long val) {
        this.intMap.put(name, val);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy