1package eu.siacs.conversations.xmpp.mam;
2
3public class MamReference {
4
5 private final long timestamp;
6 private final String reference;
7
8 public MamReference(long timestamp) {
9 this.timestamp = timestamp;
10 this.reference = null;
11 }
12
13 public MamReference(long timestamp, String reference) {
14 this.timestamp = timestamp;
15 this.reference = reference;
16 }
17
18 public long getTimestamp() {
19 return timestamp;
20 }
21
22 public String getReference() {
23 return reference;
24 }
25
26 public boolean greaterThan(MamReference b) {
27 return timestamp > b.getTimestamp();
28 }
29
30 public boolean greaterThan(long b) {
31 return timestamp > b;
32 }
33
34 public static MamReference max(MamReference a, MamReference b) {
35 if (a != null && b != null) {
36 return a.timestamp > b.timestamp ? a : b;
37 } else if (a != null) {
38 return a;
39 } else {
40 return b;
41 }
42 }
43
44 public static MamReference max(MamReference a, long b) {
45 return max(a,new MamReference(b));
46 }
47
48 public static MamReference fromAttribute(String attr) {
49 if (attr == null) {
50 return new MamReference(0);
51 } else {
52 String[] attrs = attr.split(":");
53 try {
54 long timestamp = Long.parseLong(attrs[0]);
55 if (attrs.length >= 2) {
56 return new MamReference(timestamp,attrs[1]);
57 } else {
58 return new MamReference(timestamp);
59 }
60 } catch (Exception e) {
61 return new MamReference(0);
62 }
63 }
64 }
65
66 public MamReference timeOnly() {
67 return reference == null ? this : new MamReference(timestamp);
68 }
69}