AuthorizerOption.java
package com.foxinmy.weixin4j.mp.model;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
/**
* 授权方的选项信息
*
* @className AuthorizerOption
* @author jinyu(foxinmy@gmail.com)
* @date 2016年7月5日
* @since JDK 1.6
*/
public final class AuthorizerOption implements Serializable {
private static final long serialVersionUID = -3124882411789627403L;
/**
* 选项名称
*
* @className AuthorizerOptionName
* @author jinyu(foxinmy@gmail.com)
* @date 2016年7月5日
* @since JDK 1.6
*/
public enum AuthorizerOptionName {
/**
* 地理位置上报选项
*/
location_report,
/**
* 语音识别开关选项
*/
voice_recognize,
/**
* 多客服开关选项
*/
customer_service;
}
private AuthorizerOptionName name;
private int value;
private List<Integer> options;
private AuthorizerOption(AuthorizerOptionName name, int value,
Integer... options) {
this.name = name;
this.value = value;
this.options = Arrays.asList(options);
}
/**
* 地理位置上报选项
*
* @param value
* 选项值
* @return 选项对象
*/
public static AuthorizerOption createLocationReportOption(int value) {
return new AuthorizerOption(AuthorizerOptionName.location_report,
value, 0, 1, 2);
}
/**
* 语音识别开关选项
*
* @param value
* 选项值
* @return 选项对象
*/
public static AuthorizerOption createVoiceRecognizeOption(int value) {
return new AuthorizerOption(AuthorizerOptionName.voice_recognize,
value, 0, 1);
}
/**
* 多客服开关选项
*
* @param value
* 选项值
* @return 选项对象
*/
public static AuthorizerOption createCustomerServiceOption(int value) {
return new AuthorizerOption(AuthorizerOptionName.customer_service,
value, 0, 1);
}
/**
* 返回选项对象
*
* @param optionName
* 选项名
* @param optionValue
* 选项值
* @return 选项对象
*/
public static AuthorizerOption parse(AuthorizerOptionName optionName,
int optionValue) {
if (optionName == AuthorizerOptionName.customer_service) {
return createCustomerServiceOption(optionValue);
} else if (optionName == AuthorizerOptionName.location_report) {
return createLocationReportOption(optionValue);
} else if (optionName == AuthorizerOptionName.voice_recognize) {
return createVoiceRecognizeOption(optionValue);
} else {
throw new IllegalArgumentException("unkown option:" + optionName);
}
}
public AuthorizerOptionName getName() {
return name;
}
public int getValue() {
return value;
}
public List<Integer> getOptions() {
return options;
}
@Override
public String toString() {
return "AuthorizerOption [name=" + name + ", value=" + value
+ ", options=" + options + "]";
}
}