Edit.java

 1package eu.siacs.conversations.entities;
 2
 3import org.json.JSONArray;
 4import org.json.JSONException;
 5import org.json.JSONObject;
 6
 7import java.util.ArrayList;
 8import java.util.List;
 9
10public class Edit {
11
12    private final String editedId;
13    private final String serverMsgId;
14
15    Edit(String editedId, String serverMsgId) {
16        this.editedId = editedId;
17        this.serverMsgId = serverMsgId;
18    }
19
20    static String toJson(List<Edit> edits) throws JSONException {
21        JSONArray jsonArray = new JSONArray();
22        for (Edit edit : edits) {
23            jsonArray.put(edit.toJson());
24        }
25        return jsonArray.toString();
26    }
27
28    static boolean wasPreviouslyEditedRemoteMsgId(List<Edit> edits, String remoteMsgId) {
29        for (Edit edit : edits) {
30            if (edit.editedId != null && edit.editedId.equals(remoteMsgId)) {
31                return true;
32            }
33        }
34        return false;
35    }
36
37    static boolean wasPreviouslyEditedServerMsgId(List<Edit> edits, String serverMsgId) {
38        for (Edit edit : edits) {
39            if (edit.serverMsgId != null && edit.serverMsgId.equals(serverMsgId)) {
40                return true;
41            }
42        }
43        return false;
44    }
45
46    private static Edit fromJson(JSONObject jsonObject) throws JSONException {
47        String edited = jsonObject.has("edited_id") ? jsonObject.getString("edited_id") : null;
48        String serverMsgId = jsonObject.has("server_msg_id") ? jsonObject.getString("server_msg_id") : null;
49        return new Edit(edited, serverMsgId);
50    }
51
52    static List<Edit> fromJson(String input) {
53        final ArrayList<Edit> list = new ArrayList<>();
54        if (input == null) {
55            return list;
56        }
57        try {
58            final JSONArray jsonArray = new JSONArray(input);
59            for (int i = 0; i < jsonArray.length(); ++i) {
60                list.add(fromJson(jsonArray.getJSONObject(i)));
61            }
62            return list;
63        } catch (JSONException e) {
64            return list;
65        }
66    }
67
68    private JSONObject toJson() throws JSONException {
69        JSONObject jsonObject = new JSONObject();
70        jsonObject.put("edited_id", editedId);
71        jsonObject.put("server_msg_id", serverMsgId);
72        return jsonObject;
73    }
74
75    String getEditedId() {
76        return editedId;
77    }
78
79    @Override
80    public boolean equals(Object o) {
81        if (this == o) return true;
82        if (o == null || getClass() != o.getClass()) return false;
83
84        Edit edit = (Edit) o;
85
86        if (editedId != null ? !editedId.equals(edit.editedId) : edit.editedId != null)
87            return false;
88        return serverMsgId != null ? serverMsgId.equals(edit.serverMsgId) : edit.serverMsgId == null;
89    }
90
91    @Override
92    public int hashCode() {
93        int result = editedId != null ? editedId.hashCode() : 0;
94        result = 31 * result + (serverMsgId != null ? serverMsgId.hashCode() : 0);
95        return result;
96    }
97}