| package com.matrix.component.ueditor.define; | 
|   | 
| import com.matrix.component.ueditor.Encoder; | 
|   | 
| import java.util.ArrayList; | 
| import java.util.HashMap; | 
| import java.util.Iterator; | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
| /** | 
|  * 多状态集合状态 | 
|  * 其包含了多个状态的集合, 其本身自己也是一个状态 | 
|  * @author hancong03@baidu.com | 
|  * | 
|  */ | 
| public class MultiState implements State { | 
|   | 
|     private boolean state = false; | 
|     private String info = null; | 
|     private Map<String, Long> intMap = new HashMap<String, Long>(); | 
|     private Map<String, String> infoMap = new HashMap<String, String>(); | 
|     private List<String> stateList = new ArrayList<String>(); | 
|      | 
|     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\": \"" + stateVal + "\"" ); | 
|          | 
|         // 数字转换 | 
|         Iterator<String> 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 Encoder.toUnicode( builder.toString() ); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public void putInfo(String name, long val) { | 
|         this.intMap.put( name, val ); | 
|     } | 
|   | 
| } |