package cn.jsms.api.sign; import cn.jiguang.common.utils.Preconditions; import cn.jiguang.common.utils.StringUtils; import cn.jsms.api.common.model.IModel; import cn.jsms.api.template.TemplatePayload; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import java.io.File; public class SignPayload implements IModel { private static String SIGN = "sign"; private static String IMAGES = "images"; private static String TYPE = "type"; private static String REMARK = "remark"; private String sign; private File[] images; private String remark; private Integer type; private static Gson gson = new Gson(); public SignPayload(String sign, File[] images, String remark, Integer type) { this.sign = sign; this.images = images; this.remark = remark; this.type = type; } private SignPayload(Builder builder) { sign = builder.sign; images = builder.images; remark = builder.remark; type = builder.type; } public static SignPayload.Builder newBuilder() { return new SignPayload.Builder(); } public static final class Builder { private String sign; private File[] images; private String remark; private Integer type; public Builder() { } public Builder sign(String val) { sign = val; return this; } public Builder images(File[] val) { images = val; return this; } public Builder remark(String val) { remark = val; return this; } public Builder type(Integer val) { type = val; return this; } public SignPayload build() { Preconditions.checkArgument(!StringUtils.isEmpty(sign)&&sign.length()>=2 &&sign.length()<=8, "sign should not be null or too long"); Preconditions.checkArgument(type != null&&type > 0 && type <= 7, "type should be between 1 and 7"); return new SignPayload(this); } } public String getSign() { return sign; } public File[] getImages() { return images; } public String getRemark() { return remark; } public Integer getType() { return type; } public static String getIMAGES() { return IMAGES; } public static String getSIGN() { return SIGN; } public static String getTYPE() { return TYPE; } public static String getREMARK() { return REMARK; } public JsonElement toJSON() { JsonObject json = new JsonObject(); if (!StringUtils.isEmpty(sign)) { json.addProperty(SIGN, sign); } if (type !=null && type > 0 && type <=7) { json.addProperty(TYPE, type); } if (remark != null) { json.addProperty(REMARK, remark); } return json; } @Override public String toString() { return gson.toJson(toJSON()); } }