]> nmode's Git Repositories - signal-cli/commitdiff
Extract method to read result set
authorAsamK <asamk@gmx.de>
Wed, 17 Aug 2022 19:24:50 +0000 (21:24 +0200)
committerAsamK <asamk@gmx.de>
Sun, 28 Aug 2022 14:04:05 +0000 (16:04 +0200)
lib/src/main/java/org/asamk/signal/manager/storage/sendLog/MessageSendLogStore.java

index 8a807fd56c7003c0e80ecb3bf7846866b26fc914..54632395e1eb0fced1f3aac2776d301cec01e087 100644 (file)
@@ -16,6 +16,7 @@ import org.whispersystems.signalservice.internal.push.SignalServiceProtos;
 
 import java.io.IOException;
 import java.sql.Connection;
+import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.time.Duration;
 import java.util.List;
@@ -102,20 +103,7 @@ public class MessageSendLogStore implements AutoCloseable {
                 statement.setLong(1, recipientId.id());
                 statement.setInt(2, deviceId);
                 statement.setLong(3, timestamp);
-                try (var result = Utils.executeQueryForStream(statement, resultSet -> {
-                    final var groupId = Optional.ofNullable(resultSet.getBytes("group_id"))
-                            .map(GroupId::unknownVersion);
-                    final SignalServiceProtos.Content content;
-                    try {
-                        content = SignalServiceProtos.Content.parseFrom(resultSet.getBinaryStream("content"));
-                    } catch (IOException e) {
-                        logger.warn("Failed to parse content from message send log", e);
-                        return null;
-                    }
-                    final var contentHint = ContentHint.fromType(resultSet.getInt("content_hint"));
-                    final var urgent = resultSet.getBoolean("urgent");
-                    return new MessageSendLogEntry(groupId, content, contentHint, urgent);
-                })) {
+                try (var result = Utils.executeQueryForStream(statement, this::getMessageSendLogEntryFromResultSet)) {
                     return result.filter(Objects::nonNull)
                             .filter(e -> !isSenderKey || e.groupId().isPresent())
                             .toList();
@@ -385,5 +373,19 @@ public class MessageSendLogStore implements AutoCloseable {
         }
     }
 
+    private MessageSendLogEntry getMessageSendLogEntryFromResultSet(ResultSet resultSet) throws SQLException {
+        final var groupId = Optional.ofNullable(resultSet.getBytes("group_id")).map(GroupId::unknownVersion);
+        final SignalServiceProtos.Content content;
+        try {
+            content = SignalServiceProtos.Content.parseFrom(resultSet.getBinaryStream("content"));
+        } catch (IOException e) {
+            logger.warn("Failed to parse content from message send log", e);
+            return null;
+        }
+        final var contentHint = ContentHint.fromType(resultSet.getInt("content_hint"));
+        final var urgent = resultSet.getBoolean("urgent");
+        return new MessageSendLogEntry(groupId, content, contentHint, urgent);
+    }
+
     private record RecipientDevices(RecipientId recipientId, List<Integer> deviceIds) {}
 }