1package eu.siacs.conversations.entities;
2
3import android.content.ContentValues;
4import android.database.Cursor;
5import im.conversations.android.xmpp.model.stanza.Presence;
6import java.util.Objects;
7
8public class PresenceTemplate extends AbstractEntity {
9
10 public static final String TABELNAME = "presence_templates";
11 public static final String LAST_USED = "last_used";
12 public static final String MESSAGE = "message";
13 public static final String STATUS = "status";
14
15 private long lastUsed = 0;
16 private String statusMessage;
17 private Presence.Availability status = Presence.Availability.ONLINE;
18
19 public PresenceTemplate(Presence.Availability status, String statusMessage) {
20 this.status = status;
21 this.statusMessage = statusMessage;
22 this.lastUsed = System.currentTimeMillis();
23 this.uuid = java.util.UUID.randomUUID().toString();
24 }
25
26 private PresenceTemplate() {}
27
28 @Override
29 public ContentValues getContentValues() {
30 final String show = status.toShowString();
31 ContentValues values = new ContentValues();
32 values.put(LAST_USED, lastUsed);
33 values.put(MESSAGE, statusMessage);
34 values.put(STATUS, show == null ? "" : show);
35 values.put(UUID, uuid);
36 return values;
37 }
38
39 public static PresenceTemplate fromCursor(Cursor cursor) {
40 PresenceTemplate template = new PresenceTemplate();
41 template.uuid = cursor.getString(cursor.getColumnIndex(UUID));
42 template.lastUsed = cursor.getLong(cursor.getColumnIndex(LAST_USED));
43 template.statusMessage = cursor.getString(cursor.getColumnIndex(MESSAGE));
44 template.status =
45 Presence.Availability.valueOfShown(cursor.getString(cursor.getColumnIndex(STATUS)));
46 return template;
47 }
48
49 public Presence.Availability getStatus() {
50 return status;
51 }
52
53 public String getStatusMessage() {
54 return statusMessage;
55 }
56
57 @Override
58 public boolean equals(Object o) {
59 if (this == o) return true;
60 if (o == null || getClass() != o.getClass()) return false;
61
62 PresenceTemplate template = (PresenceTemplate) o;
63
64 if (!Objects.equals(statusMessage, template.statusMessage)) return false;
65 return status == template.status;
66 }
67
68 @Override
69 public int hashCode() {
70 int result = statusMessage != null ? statusMessage.hashCode() : 0;
71 result = 31 * result + status.hashCode();
72 return result;
73 }
74
75 @Override
76 public String toString() {
77 return statusMessage;
78 }
79}