Implemented functionality regarding pending groupMessages (unfinished)

(This was implemented some weeks ago but never pushed (made some
revision))
This commit is contained in:
DieGurke
2020-06-27 21:58:53 +02:00
parent 92f50541af
commit cea599ac2f
5 changed files with 63 additions and 11 deletions

View File

@ -1,12 +1,16 @@
package envoy.server.processors;
import static envoy.data.User.UserStatus.ONLINE;
import static envoy.event.HandshakeRejection.*;
import static envoy.event.HandshakeRejection.INTERNAL_ERROR;
import static envoy.event.HandshakeRejection.USERNAME_TAKEN;
import static envoy.event.HandshakeRejection.WRONG_PASSWORD_OR_USER;
import static envoy.event.HandshakeRejection.WRONG_VERSION;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.logging.Logger;
import javax.persistence.NoResultException;
@ -16,6 +20,7 @@ import envoy.data.LoginCredentials;
import envoy.data.Message.MessageStatus;
import envoy.event.HandshakeRejection;
import envoy.event.MessageStatusChange;
import envoy.server.data.GroupMessage;
import envoy.server.data.PersistenceManager;
import envoy.server.data.User;
import envoy.server.net.ConnectionManager;
@ -117,6 +122,9 @@ public final class LoginCredentialProcessor implements ObjectProcessor<LoginCred
final var pendingMessages = PersistenceManager.getInstance().getPendingMessages(user);
logger.fine("Sending " + pendingMessages.size() + " pending messages to " + user + "...");
List<GroupMessage> pendingGroupMessages = PersistenceManager.getInstance().getPendingGroupMessages(user);
logger.fine("Sending " + pendingGroupMessages.size() + " pending group messages to " + user + "...");
for (var msg : pendingMessages) {
final var msgCommon = msg.toCommon();
if (msg.getStatus() == MessageStatus.SENT) {
@ -133,6 +141,23 @@ public final class LoginCredentialProcessor implements ObjectProcessor<LoginCred
}
} else writeProxy.write(socketID, new MessageStatusChange(msgCommon));
}
for (GroupMessage gmsg : pendingGroupMessages) {
if (gmsg.getMemberMessageStatus().get(user.getID()) == MessageStatus.SENT) {
gmsg.getMemberMessageStatus().replace(user.getID(), MessageStatus.RECEIVED);
logger.info("Sending groupMessage" + gmsg.toCommon());
System.out.println(gmsg.toCommon().toString());
writeProxy.write(socketID, gmsg.toCommon());
// Sending memberStatusEvent to all members (event does not exist yet I think)
if (!gmsg.getMemberMessageStatus().containsValue(MessageStatus.SENT)) {
gmsg.setStatus(MessageStatus.RECEIVED);
// TODO: Sending MessageStatusChangeEvent to all other members
}
PersistenceManager.getInstance().updateMessage(gmsg);
} else {
// Sending memberStatusEvents and MessageStatusChange Events
}
}
}
@Override