admin
2022-01-12 4a7367a869ef12375ea6678ca44e102b8919c624
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package cn.jpush.api.report.model;
 
import cn.jiguang.common.utils.Preconditions;
import cn.jiguang.common.utils.TimeUtils;
import cn.jpush.api.schedule.model.IModel;
import com.google.gson.*;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
 
public class CheckMessagePayload implements IModel{
 
    public final static String MSG_ID = "msg_id";
    public final static String REGISTRATION_IDS = "registration_ids";
    public final static String DATE = "date";
 
    private long msgId = -1L;
    private List<String> registrationIds;
    private String date;
    private Gson gson = new Gson();
    public CheckMessagePayload(long msgId, List<String> rids, String date) {
        this.msgId = msgId;
        this.registrationIds = rids;
        this.date = date;
    }
 
    public static Builder newBuilder() {
        return new Builder();
    }
 
    public static class Builder {
        private long msgId;
        private List<String> registrationIds = new ArrayList<String>();
        private String date;
 
        public Builder setMsgId(long msgId) {
            this.msgId = msgId;
            return this;
        }
 
        public Builder setRegistrationIds(String[] rids) {
            Preconditions.checkArgument(rids != null && rids.length > 0, "Registration ids is empty");
            Collections.addAll(registrationIds, rids);
            return this;
        }
 
        public Builder setRegistrationsIds(List<String> rids) {
            Preconditions.checkArgument(rids != null && rids.size() > 0, "Registration ids is empty");
            registrationIds = rids;
            return this;
        }
 
        public Builder addRegistrationIds(String... rids) {
            if (null == rids) {
                return this;
            }
            Collections.addAll(registrationIds, rids);
            return this;
        }
 
        public Builder addRegistrationIds(List<String> rids) {
            registrationIds.addAll(rids);
            return this;
        }
 
        public Builder setDate(String date) {
            Preconditions.checkArgument(isDayFormat(date), "Date format is invalid");
            this.date = date;
            return this;
        }
 
        public CheckMessagePayload build() {
            return new CheckMessagePayload(msgId, registrationIds, date);
        }
    }
 
    @Override
    public JsonElement toJSON() {
        JsonObject jsonObject = new JsonObject();
        if (msgId != -1L) {
            jsonObject.addProperty(MSG_ID, msgId);
        }
        if (null != registrationIds) {
            JsonArray jsonArray = new JsonArray();
            for (String rid : registrationIds) {
                jsonArray.add(new JsonPrimitive(rid));
            }
            jsonObject.add(REGISTRATION_IDS, jsonArray);
        }
        if (null != date) {
            jsonObject.addProperty(DATE, date);
        }
        return jsonObject;
    }
 
    @Override
    public String toString() {
        return gson.toJson(toJSON());
    }
 
    private static boolean isDayFormat(String date) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        try {
            simpleDateFormat.parse(date);
            return true;
        } catch (ParseException e) {
            e.printStackTrace();
            return false;
        }
    }
}