NIMSDK-AOS  10.9.50
V2NIMMessageListOption.java
浏览该文件的文档.
1 package com.netease.nimlib.sdk.v2.message.option;
2 
3 import androidx.annotation.NonNull;
4 import androidx.annotation.Nullable;
8 import java.io.Serializable;
9 import java.util.List;
10 
11 public class V2NIMMessageListOption implements Serializable {
12  // 消息所属会话ID
13  //myAccountID, conversationType,conversationTargetId拼装而成
14  private final String conversationId;
15 
16  // 根据消息类型查询会话, 为null或空列表, 则表示查询所有消息类型
17  private final List<V2NIMMessageType> messageTypes;
18 
19  // 消息查询开始时间,闭区间
20  private final long beginTime;
21 
22  // 消息查询结束时间,闭区间
23  private final long endTime;
24 
25  // 每次查询条数,默认50,最大值100
26  // Builder中限制了默认50
27  private final int limit;
28 
29  // 锚点消息,根据锚点消息查询,不包含该消息
30  private final V2NIMMessage anchorMessage;
31 
32  // 消息查询方向,如果其它参数都不填
33  // 如果查询older, 则beginTime默认为long.maxValue,否则以beginTime向老查询
34  // 如果查询newer, 则beginTime默认为0, 否则以beginTime开始向最新查询
35  private final V2NIMMessageQueryDirection direction;
36 
37  // 严格模式
38  // true:如果无法确定消息完整性,则返回错误
39  // false:如果无法确定消息完整性,从数据库中查询并返回
40  private final boolean strictMode;
41 
42  // 是否只查询本地消息
43  private final boolean onlyQueryLocal;
44 
45  private V2NIMMessageListOption() {
46  this("", null, DEFAULT_BEGIN_TIME, DEFAULT_END_TIME, DEFAULT_LIMIT, null, DEFAULT_DIRECTION, false, false);
47  }
48 
49  private V2NIMMessageListOption(@NonNull String conversationId, @Nullable List<V2NIMMessageType> messageTypes, long beginTime, long endTime, int limit, @Nullable V2NIMMessage anchorMessage, @Nullable V2NIMMessageQueryDirection direction, boolean strictMode, boolean onlyQueryLocal) {
50  this.conversationId = conversationId;
51  this.messageTypes = messageTypes;
52  this.beginTime = beginTime;
53  this.endTime = endTime;
54  this.limit = limit;
55  this.anchorMessage = anchorMessage;
56  this.direction = direction == null ? DEFAULT_DIRECTION : direction;
57  this.strictMode = strictMode;
58  this.onlyQueryLocal = onlyQueryLocal;
59  }
60 
61  public String getConversationId() {
62  return conversationId;
63  }
64 
65  public List<V2NIMMessageType> getMessageTypes() {
66  return messageTypes;
67  }
68 
69  public long getBeginTime() {
70  return beginTime;
71  }
72 
73  public long getEndTime() {
74  return endTime;
75  }
76 
77  public int getLimit() {
78  return limit;
79  }
80 
82  return anchorMessage;
83  }
84 
86  if (direction == null) {
87  return DEFAULT_DIRECTION;
88  } else {
89  return direction;
90  }
91  }
92 
93  public boolean isStrictMode() {
94  return strictMode;
95  }
96 
97  public boolean isOnlyQueryLocal() {
98  return onlyQueryLocal;
99  }
100 
101  private static final long DEFAULT_BEGIN_TIME = 0;
102  private static final long DEFAULT_END_TIME = 0;
103  private static final int DEFAULT_LIMIT = 50;
105 
106  public static final class V2NIMMessageListOptionBuilder {
107  private final String conversationId;
108  private List<V2NIMMessageType> messageTypes;
109  private long beginTime = DEFAULT_BEGIN_TIME;
110  private long endTime = DEFAULT_END_TIME;
111  private int limit = DEFAULT_LIMIT;
112  private V2NIMMessage anchorMessage;
113  private V2NIMMessageQueryDirection direction;
114  private boolean strictMode;
115  private boolean onlyQueryLocal;
116 
117  private V2NIMMessageListOptionBuilder(final String conversationId) {
118  this.conversationId = conversationId;
119  }
120 
121  public static V2NIMMessageListOptionBuilder builder(final String conversationId) {
122  return new V2NIMMessageListOptionBuilder(conversationId);
123  }
124 
125  public V2NIMMessageListOptionBuilder withMessageTypes(List<V2NIMMessageType> messageTypes) {
126  this.messageTypes = messageTypes;
127  return this;
128  }
129 
130  public V2NIMMessageListOptionBuilder withBeginTime(long beginTime) {
131  this.beginTime = beginTime;
132  return this;
133  }
134 
135  public V2NIMMessageListOptionBuilder withEndTime(long endTime) {
136  this.endTime = endTime;
137  return this;
138  }
139 
140  public V2NIMMessageListOptionBuilder withLimit(int limit) {
141  this.limit = limit;
142  return this;
143  }
144 
145  public V2NIMMessageListOptionBuilder withAnchorMessage(V2NIMMessage anchorMessage) {
146  this.anchorMessage = anchorMessage;
147  return this;
148  }
149 
150  public V2NIMMessageListOptionBuilder withDirection(V2NIMMessageQueryDirection direction) {
151  this.direction = direction;
152  return this;
153  }
154 
155  public V2NIMMessageListOptionBuilder withStrictMode(boolean strictMode) {
156  this.strictMode = strictMode;
157  return this;
158  }
159 
160  public V2NIMMessageListOptionBuilder withOnlyQueryLocal(boolean onlyQueryLocal) {
161  this.onlyQueryLocal = onlyQueryLocal;
162  return this;
163  }
164 
165  public V2NIMMessageListOption build() {
166  return new V2NIMMessageListOption(conversationId, messageTypes, beginTime, endTime, limit, anchorMessage, direction, strictMode, onlyQueryLocal);
167  }
168  }
169 }