View Javadoc
1   package com.foxinmy.weixin4j.mp.model;
2   
3   import java.io.Serializable;
4   import java.util.Arrays;
5   import java.util.List;
6   
7   /**
8    * 授权方的选项信息
9    * 
10   * @className AuthorizerOption
11   * @author jinyu(foxinmy@gmail.com)
12   * @date 2016年7月5日
13   * @since JDK 1.6
14   */
15  public final class AuthorizerOption implements Serializable {
16  
17  	private static final long serialVersionUID = -3124882411789627403L;
18  
19  	/**
20  	 * 选项名称
21  	 * 
22  	 * @className AuthorizerOptionName
23  	 * @author jinyu(foxinmy@gmail.com)
24  	 * @date 2016年7月5日
25  	 * @since JDK 1.6
26  	 */
27  	public enum AuthorizerOptionName {
28  		/**
29  		 * 地理位置上报选项
30  		 */
31  		location_report,
32  		/**
33  		 * 语音识别开关选项
34  		 */
35  		voice_recognize,
36  		/**
37  		 * 多客服开关选项
38  		 */
39  		customer_service;
40  	}
41  
42  	private AuthorizerOptionName name;
43  	private int value;
44  	private List<Integer> options;
45  
46  	private AuthorizerOption(AuthorizerOptionName name, int value,
47  			Integer... options) {
48  		this.name = name;
49  		this.value = value;
50  		this.options = Arrays.asList(options);
51  	}
52  
53  	/**
54  	 * 地理位置上报选项
55  	 * 
56  	 * @param value
57  	 *            选项值
58  	 * @return 选项对象
59  	 */
60  	public static AuthorizerOption createLocationReportOption(int value) {
61  		return new AuthorizerOption(AuthorizerOptionName.location_report,
62  				value, 0, 1, 2);
63  	}
64  
65  	/**
66  	 * 语音识别开关选项
67  	 * 
68  	 * @param value
69  	 *            选项值
70  	 * @return 选项对象
71  	 */
72  	public static AuthorizerOption createVoiceRecognizeOption(int value) {
73  		return new AuthorizerOption(AuthorizerOptionName.voice_recognize,
74  				value, 0, 1);
75  	}
76  
77  	/**
78  	 * 多客服开关选项
79  	 * 
80  	 * @param value
81  	 *            选项值
82  	 * @return 选项对象
83  	 */
84  	public static AuthorizerOption createCustomerServiceOption(int value) {
85  		return new AuthorizerOption(AuthorizerOptionName.customer_service,
86  				value, 0, 1);
87  	}
88  
89  	/**
90  	 * 返回选项对象
91  	 * 
92  	 * @param optionName
93  	 *            选项名
94  	 * @param optionValue
95  	 *            选项值
96  	 * @return 选项对象
97  	 */
98  	public static AuthorizerOption parse(AuthorizerOptionName optionName,
99  			int optionValue) {
100 		if (optionName == AuthorizerOptionName.customer_service) {
101 			return createCustomerServiceOption(optionValue);
102 		} else if (optionName == AuthorizerOptionName.location_report) {
103 			return createLocationReportOption(optionValue);
104 		} else if (optionName == AuthorizerOptionName.voice_recognize) {
105 			return createVoiceRecognizeOption(optionValue);
106 		} else {
107 			throw new IllegalArgumentException("unkown option:" + optionName);
108 		}
109 	}
110 
111 	public AuthorizerOptionName getName() {
112 		return name;
113 	}
114 
115 	public int getValue() {
116 		return value;
117 	}
118 
119 	public List<Integer> getOptions() {
120 		return options;
121 	}
122 
123 	@Override
124 	public String toString() {
125 		return "AuthorizerOption [name=" + name + ", value=" + value
126 				+ ", options=" + options + "]";
127 	}
128 }