NIMSDK-AOS  10.10.13
V2NIMMessageSearchParams.java
浏览该文件的文档.
1 package com.netease.nimlib.sdk.v2.message.params;
2 
5 import java.util.List;
6 
7 // 消息检索参数
9 
10  // 检索的关键字
11  private final String keyword;
12  // 查询开始时间,小于endTime
13  private final long beginTime;
14  // 查询结束时间,如果为0,表示当前时间
15  private final long endTime;
16  // 检索的会话条数
17  // 如果>0: 按会话分组
18  // 否则:按时间排序,不按会话分组
19  // note:协议 7-26 7-27
20  private final int conversationLimit;
21  // 返回的消息条数
22  // 最多不超过X, 跟当前版本对齐
23  // 默认 20
24  private final int messageLimit;
25  // 消息排序规则
26  // 默认 V2NIMSortOrder.V2NIM_SORT_ORDER_DESC
27  private final V2NIMSortOrder sortOrder;
28  // P2P账号列表, 最大20个,超过20个返回参数错误
29  private final List<String> p2pAccountIds;
30  // 高级群账号列表, 最大20个, 超过20个返回参数错误
31  // 不支持超大群
32  private final List<String> teamIds;
33  // 检索的发送账号列表,最大20个, 超过20个返回参数错误
34  private final List<String> senderAccountIds;
35  // 根据消息类型检索消息, 为null或空列表, 则表示查询所有消息类型
36  private final List<V2NIMMessageType> messageTypes;
37  // 根据消息子类型检索消息, 为null或空列表, 则表示查询所有消息子类型
38  private final List<Integer> messageSubtypes;
39 
40  private V2NIMMessageSearchParams() {
41  this("", 0, 0, 0, DEFAULT_CONVERSATION_LIMIT, DEFAULT_SORT_ORDER, null, null, null, null, null);
42  }
43 
44  private V2NIMMessageSearchParams(String keyword, long beginTime, long endTime, int conversationLimit, int messageLimit, V2NIMSortOrder sortOrder, List<String> p2pAccountIds, List<String> teamIds, List<String> senderAccountIds, List<V2NIMMessageType> messageTypes, List<Integer> messageSubtypes) {
45  this.keyword = keyword;
46  this.beginTime = beginTime;
47  this.endTime = endTime;
48  this.conversationLimit = conversationLimit;
49  this.messageLimit = messageLimit;
50  this.sortOrder = sortOrder;
51  this.p2pAccountIds = p2pAccountIds;
52  this.teamIds = teamIds;
53  this.senderAccountIds = senderAccountIds;
54  this.messageTypes = messageTypes;
55  this.messageSubtypes = messageSubtypes;
56  }
57 
58  public String getKeyword() {
59  return keyword;
60  }
61 
62  public long getBeginTime() {
63  return beginTime;
64  }
65 
66  public long getEndTime() {
67  return endTime;
68  }
69 
70  public int getConversationLimit() {
71  return conversationLimit;
72  }
73 
74  public int getMessageLimit() {
75  return messageLimit;
76  }
77 
79  if (sortOrder == null) {
81  } else {
82  return sortOrder;
83  }
84  }
85 
86  public List<String> getP2pAccountIds() {
87  return p2pAccountIds;
88  }
89 
90  public List<String> getTeamIds() {
91  return teamIds;
92  }
93 
94  public List<String> getSenderAccountIds() {
95  return senderAccountIds;
96  }
97 
98  public List<V2NIMMessageType> getMessageTypes() {
99  return messageTypes;
100  }
101 
102  public List<Integer> getMessageSubtypes() {
103  return messageSubtypes;
104  }
105 
106  @Override
107  public String toString() {
108  return "V2NIMMessageSearchParams{" +
109  "keyword='" + keyword + '\'' +
110  ", beginTime=" + beginTime +
111  ", endTime=" + endTime +
112  ", conversationLimit=" + conversationLimit +
113  ", messageLimit=" + messageLimit +
114  ", sortOrder=" + sortOrder +
115  ", p2pAccountIds=" + p2pAccountIds +
116  ", teamIds=" + teamIds +
117  ", senderAccountIds=" + senderAccountIds +
118  ", messageTypes=" + messageTypes +
119  ", messageSubtypes=" + messageSubtypes +
120  '}';
121  }
122 
123  private static final int DEFAULT_CONVERSATION_LIMIT = 10;
124  private static final V2NIMSortOrder DEFAULT_SORT_ORDER = V2NIMSortOrder.V2NIM_SORT_ORDER_DESC;
125 
126  public static final class V2NIMMessageSearchParamsBuilder {
127  private final String keyword;
128  private long beginTime = 0;
129  private long endTime = 0;
130  private int conversationLimit = 0;
131  private int messageLimit = DEFAULT_CONVERSATION_LIMIT;
132  private V2NIMSortOrder sortOrder = DEFAULT_SORT_ORDER;
133  private List<String> p2pAccountIds;
134  private List<String> teamIds;
135  private List<String> senderAccountIds;
136  private List<V2NIMMessageType> messageTypes;
137  private List<Integer> messageSubtypes;
138 
139  private V2NIMMessageSearchParamsBuilder(String keyword) {
140  this.keyword = keyword;
141  }
142 
143  public static V2NIMMessageSearchParamsBuilder builder(String keyword) {
144  return new V2NIMMessageSearchParamsBuilder(keyword);
145  }
146 
147  public V2NIMMessageSearchParamsBuilder withBeginTime(long beginTime) {
148  this.beginTime = beginTime;
149  return this;
150  }
151 
152  public V2NIMMessageSearchParamsBuilder withEndTime(long endTime) {
153  this.endTime = endTime;
154  return this;
155  }
156 
157  public V2NIMMessageSearchParamsBuilder withConversationLimit(int conversationLimit) {
158  this.conversationLimit = conversationLimit;
159  return this;
160  }
161 
162  public V2NIMMessageSearchParamsBuilder withMessageLimit(int messageLimit) {
163  this.messageLimit = messageLimit;
164  return this;
165  }
166 
167  public V2NIMMessageSearchParamsBuilder withSortOrder(V2NIMSortOrder sortOrder) {
168  this.sortOrder = sortOrder;
169  return this;
170  }
171 
172  public V2NIMMessageSearchParamsBuilder withP2pAccountIds(List<String> p2pAccountIds) {
173  this.p2pAccountIds = p2pAccountIds;
174  return this;
175  }
176 
177  public V2NIMMessageSearchParamsBuilder withTeamIds(List<String> teamIds) {
178  this.teamIds = teamIds;
179  return this;
180  }
181 
182  public V2NIMMessageSearchParamsBuilder withSenderAccountIds(List<String> senderAccountIds) {
183  this.senderAccountIds = senderAccountIds;
184  return this;
185  }
186 
187  public V2NIMMessageSearchParamsBuilder withMessageTypes(List<V2NIMMessageType> messageTypes) {
188  this.messageTypes = messageTypes;
189  return this;
190  }
191 
192  public V2NIMMessageSearchParamsBuilder withMessageSubtypes(List<Integer> messageSubtypes) {
193  this.messageSubtypes = messageSubtypes;
194  return this;
195  }
196 
197  public V2NIMMessageSearchParams build() {
198  return new V2NIMMessageSearchParams(keyword, beginTime, endTime, conversationLimit, messageLimit, sortOrder, p2pAccountIds, teamIds, senderAccountIds, messageTypes, messageSubtypes);
199  }
200  }
201 }