List of usage examples for io.vertx.core.json JsonArray add
public JsonArray add(Object value)
From source file:org.entcore.conversation.service.impl.SqlConversationService.java
License:Open Source License
@Override public void delete(List<String> messagesId, Boolean deleteAll, UserInfos user, Handler<Either<String, JsonArray>> result) { SqlStatementsBuilder builder = new SqlStatementsBuilder(); JsonArray values2 = new fr.wseduc.webutils.collections.JsonArray(); JsonArray values3 = new fr.wseduc.webutils.collections.JsonArray(); values2.add(user.getUserId()); values3.add(user.getUserId());//from w w w. ja va 2 s .c o m String getTotalQuota = "SELECT coalesce(sum(um.total_quota), 0)::integer AS totalQuota FROM " + userMessageTable + " um " + "WHERE um.user_id = ? AND um.trashed = true"; String deleteUserMessages = "DELETE FROM " + userMessageTable + " um " + "WHERE um.user_id = ? AND um.trashed = true"; if (!deleteAll) { getTotalQuota += " AND um.message_id IN "; getTotalQuota += (generateInVars(messagesId, values2)); deleteUserMessages += " AND um.message_id IN "; deleteUserMessages += (generateInVars(messagesId, values3)); } builder.prepared(getTotalQuota, values2); builder.prepared(deleteUserMessages, values3); sql.transaction(builder.build(), SqlResult.validResultsHandler(result)); }
From source file:org.entcore.conversation.service.impl.SqlConversationService.java
License:Open Source License
@Override public void count(String folder, String restrain, Boolean unread, UserInfos user, Handler<Either<String, JsonObject>> result) { if (validationParamsError(user, result, folder)) return;//from w ww .j av a 2 s .co m JsonArray values = new fr.wseduc.webutils.collections.JsonArray(); String messageConditionUnread = addMessageConditionUnread(folder, values, unread, user); values.add(user.getUserId()); String query = "SELECT count(*) as count FROM " + userMessageTable + " um JOIN " + messageTable + " m ON (um.message_id = m.id" + messageConditionUnread + ") " + "WHERE user_id = ? "; query += addCompleteFolderCondition(values, restrain, unread, folder, user); if (restrain != null && unread) { query += " AND (m.from <> ? OR m.to @> ?::jsonb OR m.cc @> ?::jsonb) "; values.add(user.getUserId()); values.add(new fr.wseduc.webutils.collections.JsonArray().add(user.getUserId()).toString()); values.add(new fr.wseduc.webutils.collections.JsonArray().add(user.getUserId()).toString()); } sql.prepared(query, values, SqlResult.validUniqueResultHandler(result)); }
From source file:org.entcore.conversation.service.impl.SqlConversationService.java
License:Open Source License
private void callFindVisibles(UserInfos user, final String acceptLanguage, final Handler<Either<String, JsonObject>> result, final JsonObject visible, JsonObject params, String preFilter, String customReturn) { findVisibles(eb, user.getUserId(), customReturn, params, true, true, false, acceptLanguage, preFilter, new Handler<JsonArray>() { @Override/* w w w . j ava 2 s .co m*/ public void handle(JsonArray visibles) { JsonArray users = new fr.wseduc.webutils.collections.JsonArray(); JsonArray groups = new fr.wseduc.webutils.collections.JsonArray(); visible.put("groups", groups).put("users", users); for (Object o : visibles) { if (!(o instanceof JsonObject)) continue; JsonObject j = (JsonObject) o; if (j.getString("name") != null) { j.remove("displayName"); UserUtils.groupDisplayName(j, acceptLanguage); groups.add(j); } else { j.remove("name"); users.add(j); } } result.handle(new Either.Right<String, JsonObject>(visible)); } }); }
From source file:org.entcore.conversation.service.impl.SqlConversationService.java
License:Open Source License
@Override public void toggleUnread(List<String> messagesIds, boolean unread, UserInfos user, Handler<Either<String, JsonObject>> result) { if (validationParamsError(user, result)) return;/* w w w . j a v a 2 s .com*/ JsonArray values = new fr.wseduc.webutils.collections.JsonArray(); String query = "UPDATE " + userMessageTable + " " + "SET unread = ? " + "WHERE user_id = ? AND message_id IN " + Sql.listPrepared(messagesIds.toArray()); values.add(unread); values.add(user.getUserId()); for (String id : messagesIds) { values.add(id); } sql.prepared(query, values, SqlResult.validUniqueResultHandler(result)); }
From source file:org.entcore.conversation.service.impl.SqlConversationService.java
License:Open Source License
@Override public void listFolders(String parentId, UserInfos user, Handler<Either<String, JsonArray>> result) { if (validationError(user, result)) return;//from w w w . j a v a 2 s.co m String query = "SELECT f.* FROM " + folderTable + " AS f " + "WHERE f.user_id = ? AND f.trashed = false "; JsonArray values = new fr.wseduc.webutils.collections.JsonArray().add(user.getUserId()); if (parentId == null) { query += "AND f.parent_id IS NULL"; } else { query += "AND f.parent_id = ?"; values.add(parentId); } sql.prepared(query, values, SqlResult.validResultHandler(result)); }
From source file:org.entcore.conversation.service.impl.SqlConversationService.java
License:Open Source License
@Override public void moveToFolder(List<String> messageIds, String folderId, UserInfos user, Handler<Either<String, JsonObject>> result) { if (validationParamsError(user, result, folderId)) return;/* www . j ava 2 s.co m*/ JsonArray values = new fr.wseduc.webutils.collections.JsonArray(); String query = "UPDATE " + userMessageTable + " AS um " + "SET folder_id = ? " + "WHERE um.user_id = ? AND um.message_id IN "; values.add(folderId).add(user.getUserId()); query += generateInVars(messageIds, values); sql.prepared(query, values, SqlResult.validUniqueResultHandler(result)); }
From source file:org.entcore.conversation.service.impl.SqlConversationService.java
License:Open Source License
@Override public void backToSystemFolder(List<String> messageIds, UserInfos user, Handler<Either<String, JsonObject>> result) { if (validationParamsError(user, result)) return;/*from w ww .ja v a 2s .c o m*/ JsonArray values = new fr.wseduc.webutils.collections.JsonArray(); String query = "UPDATE " + userMessageTable + " AS um " + "SET folder_id = NULL " + "WHERE um.user_id = ? AND um.message_id IN "; values.add(user.getUserId()); query += generateInVars(messageIds, values); sql.prepared(query, values, SqlResult.validUniqueResultHandler(result)); }
From source file:org.entcore.conversation.service.impl.SqlConversationService.java
License:Open Source License
@Override public void deleteFolder(String folderId, Boolean deleteAll, UserInfos user, Handler<Either<String, JsonArray>> result) { if (!deleteAll) { if (validationError(user, result, folderId)) return; }/* w ww . j av a2 s . c o m*/ SqlStatementsBuilder builder = new SqlStatementsBuilder(); /* Get all parent folders with recursion */ String nonRecursiveTerm = "SELECT DISTINCT f.* FROM " + folderTable + " AS f " + "WHERE "; JsonArray recursiveValues = new fr.wseduc.webutils.collections.JsonArray(); if (!deleteAll) { nonRecursiveTerm += "f.id = ? AND "; recursiveValues.add(folderId); } nonRecursiveTerm += "f.user_id = ? AND f.trashed = true "; recursiveValues.add(user.getUserId()); String recursiveTerm = "SELECT f.* FROM " + folderTable + " AS f JOIN " + "parents ON f.parent_id = parents.id " + "WHERE f.user_id = ?"; recursiveValues.add(user.getUserId()); /* Get quota to free */ String quotaRecursion = "WITH RECURSIVE parents AS ( " + nonRecursiveTerm + "UNION " + recursiveTerm + ") " + "SELECT COALESCE(sum(um.total_quota), 0)::integer AS totalQuota FROM parents JOIN " + userMessageTable + " um ON um.folder_id = parents.id AND um.user_id = parents.user_id "; builder.prepared(quotaRecursion, recursiveValues); /* Physically delete the folder, which will start a cascading delete process for parent folders, messages and attachments. */ String deleteFolder = "DELETE FROM " + folderTable + " f " + "WHERE "; JsonArray values = new fr.wseduc.webutils.collections.JsonArray(); if (!deleteAll) { deleteFolder += "f.id = ? AND "; values.add(folderId); } deleteFolder += "f.user_id = ? AND f.trashed = true"; values.add(user.getUserId()); builder.prepared(deleteFolder, values); /* Perform the transaction */ sql.transaction(builder.build(), SqlResult.validResultsHandler(result)); }
From source file:org.entcore.conversation.service.impl.SqlConversationService.java
License:Open Source License
private String generateInVars(List<String> list, JsonArray values) { StringBuilder builder = new StringBuilder(); builder.append("("); for (String item : list) { builder.append("?,"); values.add(item); }//www . j av a2s . co m if (list.size() > 0) builder.deleteCharAt(builder.length() - 1); builder.append(")"); return builder.toString(); }
From source file:org.entcore.conversation.service.impl.SqlConversationService.java
License:Open Source License
private String addFolderCondition(String folder, JsonArray values, String userId) { String additionalWhere = ""; switch (folder.toUpperCase()) { case "INBOX": additionalWhere = "AND (m.from <> ? OR m.to @> ?::jsonb OR m.cc @> ?::jsonb) AND m.state = ? AND um.trashed = false"; additionalWhere += " AND um.folder_id IS NULL"; values.add(userId); values.add(new fr.wseduc.webutils.collections.JsonArray().add(userId).toString()); values.add(new fr.wseduc.webutils.collections.JsonArray().add(userId).toString()); values.add("SENT"); break;/*w ww . jav a2 s . c o m*/ case "OUTBOX": additionalWhere = "AND m.from = ? AND m.state = ? AND um.trashed = false"; additionalWhere += " AND um.folder_id IS NULL"; values.add(userId); values.add("SENT"); break; case "DRAFT": additionalWhere = "AND m.from = ? AND m.state = ? AND um.trashed = false"; additionalWhere += " AND um.folder_id IS NULL"; values.add(userId); values.add("DRAFT"); break; case "TRASH": additionalWhere = "AND um.trashed = true"; break; } return additionalWhere; }