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}