NIMSDK-AOS  10.10.13
V2NIMCustomUserStatusParams.java
浏览该文件的文档.
1 package com.netease.nimlib.sdk.v2.subscription.params;
2 
3 import com.netease.nimlib.log.NimLog;
4 
5 /**
6  * 自定义用户状态参数
7  */
9 
10  private static final String TAG = "V2NIMCustomUserStatusParams";
11  /**
12  * 自定义设置值: 10000以上,包括一万, 一万以内为预定义值
13  * 小于1万,返回参数错误
14  * 大于int上限,返回参数错误
15  */
16  private final Integer statusType;
17 
18  private static final int MIN_STATUS_TYPE = 10000;
19 
20  /**
21  * 状态的有效期,单位秒,范围为 60s 到 7days,默认值为60s
22  */
23  private final Long duration;
24 
25  private static final long MIN_DURATION = 60L;
26  private static final long MAX_DURATION = 604800L;
27 
28  /**
29  * 用户发布状态时设置的扩展字段
30  */
31  private String extension;
32 
33  /**
34  * 用户发布状态时是否只广播给在线的订阅者,默认值为TRUE
35  */
36  private boolean onlineOnly = true;
37 
38  /**
39  * 用户发布状态时是否需要多端同步,默认值为FALSE
40  */
41  private boolean multiSync = false;
42 
43  private V2NIMCustomUserStatusParams() {
44  this.statusType = null;
45  this.duration = 60L;
46  }
47 
48  public V2NIMCustomUserStatusParams(int statusType, long duration) {
49  this.statusType = statusType;
50  this.duration = duration;
51  }
52 
53  /**
54  * 获取statusType字段的值
55  * @return statusType字段的值
56  */
57  public int getStatusType() {
58  if (this.statusType == null) {
59  return 0;
60  }
61  return this.statusType;
62  }
63 
64  /**
65  * 获取duration字段的值
66  * @return duration字段的值
67  */
68  public long getDuration() {
69  return this.duration;
70  }
71 
72 
73  /**
74  * 获取extension字段的值
75  * @return extension字段的值
76  */
77  public String getExtension() {
78  return this.extension;
79  }
80 
81  /**
82  * 设置extension字段的值
83  * @param extension 新的extension字段的值
84  */
85  public void setExtension(String extension) {
86  this.extension = extension;
87  }
88 
89  /**
90  * 获取onlineOnly字段的值
91  * @return onlineOnly字段的值
92  */
93  public boolean isOnlineOnly() {
94  return this.onlineOnly;
95  }
96 
97  /**
98  * 设置onlineOnly字段的值
99  * @param onlineOnly 新的onlineOnly字段的值
100  */
101  public void setOnlineOnly(boolean onlineOnly) {
102  this.onlineOnly = onlineOnly;
103  }
104 
105  /**
106  * 获取multiSync字段的值
107  * @return multiSync字段的值
108  */
109  public boolean isMultiSync() {
110  return this.multiSync;
111  }
112 
113  /**
114  * 设置multiSync字段的值
115  * @param multiSync 新的multiSync字段的值
116  */
117  public void setMultiSync(boolean multiSync) {
118  this.multiSync = multiSync;
119  }
120 
121  public boolean isValid(){
122  if(statusType == null || statusType < MIN_STATUS_TYPE){
123  NimLog.e(TAG, "statusType is invalid");
124  return false;
125  }
126  if(duration == null || duration < MIN_DURATION || duration > MAX_DURATION){
127  NimLog.e(TAG, "duration is invalid");
128  return false;
129  }
130  return true;
131  }
132 
133  public static class Builder {
134  /**
135  * 自定义设置值: 10000以上,包括一万, 一万以内为预定义值
136  * 小于1万,返回参数错误
137  * 大于int上限,返回参数错误
138  */
139  private int statusType;
140  /**
141  * 状态的有效期,单位秒,范围为 60s 到 7days,默认值为60s
142  */
143  private long duration;
144  /**
145  * 用户发布状态时设置的扩展字段
146  */
147  private String extension;
148  /**
149  * 用户发布状态时是否只广播给在线的订阅者,默认值为TRUE
150  */
151  private boolean onlineOnly = true;
152  /**
153  * 用户发布状态时是否需要多端同步,默认值为FALSE
154  */
155  private boolean multiSync = false;
156 
157  /**
158  * 构造函数
159  * @param statusType 自定义设置值
160  * @param duration 状态的有效期
161  */
162  public Builder(int statusType, long duration) {
163  this.statusType = statusType;
164  this.duration = duration;
165  }
166 
167  /**
168  * 设置extension字段的值
169  * @param extension 新的extension字段的值
170  * @return Builder对象
171  */
172  public Builder extension(String extension) {
173  this.extension = extension;
174  return this;
175  }
176 
177  /**
178  * 设置onlineOnly字段的值
179  * @param onlineOnly 新的onlineOnly字段的值
180  * @return Builder对象
181  */
182  public Builder onlineOnly(boolean onlineOnly) {
183  this.onlineOnly = onlineOnly;
184  return this;
185  }
186  /**
187  * 设置multiSync字段的值
188  * @param multiSync 新的multiSync字段的值
189  * @return Builder对象
190  */
191  public Builder multiSync(boolean multiSync) {
192  this.multiSync = multiSync;
193  return this;
194  }
195  /**
196  * 构造V2NIMCustomUserStatusParams对象
197  * @return V2NIMCustomUserStatusParams对象
198  */
199  public V2NIMCustomUserStatusParams build() {
200  V2NIMCustomUserStatusParams params = new V2NIMCustomUserStatusParams(statusType, duration);
201  params.setExtension(extension);
202  params.setOnlineOnly(onlineOnly);
203  params.setMultiSync(multiSync);
204  return params;
205  }
206  }
207 }