-
Notifications
You must be signed in to change notification settings - Fork 315
Expand file tree
/
Copy pathDevObject.java
More file actions
315 lines (277 loc) · 6.52 KB
/
Copy pathDevObject.java
File metadata and controls
315 lines (277 loc) · 6.52 KB
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
package dev.base;
import java.io.Serializable;
import java.util.UUID;
import dev.utils.common.ObjectUtils;
/**
* detail: 通用 Object
* @author Ttt
*/
public class DevObject<T>
implements Serializable {
// uuid ( 一定程度上唯一 )
private final int mUUID = UUID.randomUUID().hashCode();
// Object
private T mObject;
// 标记 TAG
private Object mTag;
// model id
private int mModelId;
// code String
private String mCode;
// Type
private int mType;
// State
private int mState;
// Token uuid
private long mTokenUUID = UUID.randomUUID().hashCode();
public DevObject() {
}
public DevObject(final T object) {
this.mObject = object;
}
public DevObject(
final T object,
final Object tag
) {
this.mObject = object;
this.mTag = tag;
}
// =============
// = 对外公开方法 =
// =============
/**
* 获取 UUID
* @return random UUID HashCode
*/
public final int getUUID() {
return mUUID;
}
/**
* 获取 Object
* @return Object
*/
public T getObject() {
return mObject;
}
/**
* 设置 Object
* @param object T Class Object
* @return {@link DevObject}
*/
public DevObject<T> setObject(final T object) {
this.mObject = object;
return this;
}
/**
* 获取标记 TAG
* @return 标记 TAG
*/
public Object getTag() {
return mTag;
}
/**
* 转换标记 TAG
* @param <CTO> 泛型
* @return Object convert T object
*/
public <CTO> CTO convertTag() {
try {
return (CTO) mTag;
} catch (Exception ignored) {
}
return null;
}
/**
* 设置标记 TAG
* @param tag TAG
* @return {@link DevObject}
*/
public DevObject<T> setTag(final Object tag) {
this.mTag = tag;
return this;
}
/**
* 获取 Model id
* @return model id
*/
public int getModelId() {
return mModelId;
}
/**
* 设置 Model id
* @param modelId model id
* @return {@link DevObject}
*/
public DevObject<T> setModelId(final int modelId) {
this.mModelId = modelId;
return this;
}
/**
* 获取 Code
* @return Code
*/
public String getCode() {
return mCode;
}
/**
* 设置 Code
* @param code Code
* @return {@link DevObject}
*/
public DevObject<T> setCode(final String code) {
this.mCode = code;
return this;
}
/**
* 设置 Code
* @param code Code
* @return {@link DevObject}
*/
public DevObject<T> setCode(final int code) {
return setCode(String.valueOf(code));
}
/**
* 获取 Type
* @return Type
*/
public int getType() {
return mType;
}
/**
* 设置 Type
* @param type Type
* @return {@link DevObject}
*/
public DevObject<T> setType(final int type) {
this.mType = type;
return this;
}
/**
* 获取 State
* @return State
*/
public int getState() {
return mState;
}
/**
* 设置 State
* @param state State
* @return {@link DevObject}
*/
public DevObject<T> setState(final int state) {
this.mState = state;
return this;
}
/**
* 获取 Token UUID
* @return Token UUID
*/
public long getTokenUUID() {
return mTokenUUID;
}
/**
* 设置 Token UUID
* @param uuid token UUID
* @return {@link DevObject}
*/
public DevObject<T> setTokenUUID(final long uuid) {
this.mTokenUUID = uuid;
return this;
}
/**
* 重置随机 Token UUID
* @return Token UUID
*/
public long randomTokenUUID() {
mTokenUUID = UUID.randomUUID().hashCode();
return mTokenUUID;
}
// ==========
// = 判断方法 =
// ==========
/**
* 判断 Object 是否一致
* @param object 待校验 Object
* @return {@code true} yes, {@code false} no
*/
public boolean equalsObject(final T object) {
return object != null && ObjectUtils.equals(this.mObject, object);
}
/**
* 判断 TAG 是否一致
* @param tag 待校验 TAG
* @return {@code true} yes, {@code false} no
*/
public boolean equalsTag(final Object tag) {
return tag != null && ObjectUtils.equals(this.mTag, tag);
}
/**
* 判断 Model id 是否一致
* @param modelId 待校验 Model id
* @return {@code true} yes, {@code false} no
*/
public boolean equalsModelId(final int modelId) {
return this.mModelId == modelId;
}
/**
* 判断 Code 是否一致
* @param code 待校验 Code
* @return {@code true} yes, {@code false} no
*/
public boolean equalsCode(final int code) {
return equalsCode(String.valueOf(code));
}
/**
* 判断 Code 是否一致
* @param code 待校验 Code
* @return {@code true} yes, {@code false} no
*/
public boolean equalsCode(final String code) {
return code != null && ObjectUtils.equals(this.mCode, code);
}
/**
* 判断 Type 是否一致
* @param type 待校验 Type
* @return {@code true} yes, {@code false} no
*/
public boolean equalsType(final int type) {
return this.mType == type;
}
/**
* 判断 State 是否一致
* @param state 待校验 State
* @return {@code true} yes, {@code false} no
*/
public boolean equalsState(final int state) {
return this.mState == state;
}
/**
* 判断 Token UUID 是否一致
* @param uuid 待校验 Token UUID
* @return {@code true} yes, {@code false} no
*/
public boolean equalsTokenUUID(final long uuid) {
return this.mTokenUUID == uuid;
}
// ==========
// = 校验方法 =
// ==========
/**
* 校验数据正确性
* <pre>
* 根据需要重写
* </pre>
* @return {@code true} correct, {@code false} error
*/
public boolean isCorrect() {
return false;
}
/**
* 校验数据正确性
* @param data {@link DevObject}
* @return {@code true} correct, {@code false} error
*/
public static boolean isCorrect(final DevObject<?> data) {
return data != null && data.isCorrect();
}
}