2020-01-30 12:52:27 +01:00
|
|
|
package envoy.server.processors;
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
|
|
|
import envoy.data.Message.MessageStatus;
|
|
|
|
import envoy.event.MessageStatusChangeEvent;
|
|
|
|
import envoy.exception.EnvoyException;
|
|
|
|
import envoy.server.ConnectionManager;
|
|
|
|
import envoy.server.ObjectProcessor;
|
|
|
|
import envoy.server.database.PersistenceManager;
|
|
|
|
import envoy.server.net.ObjectWriteProxy;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Project: <strong>envoy-server-standalone</strong><br>
|
|
|
|
* File: <strong>MessageStatusChangeProcessor.java</strong><br>
|
|
|
|
* Created: <strong>10 Jan 2020</strong><br>
|
|
|
|
*
|
|
|
|
* @author Leon Hofmeister
|
|
|
|
* @since Envoy Server Standalone v0.1-alpha
|
|
|
|
*/
|
|
|
|
public class MessageStatusChangeProcessor implements ObjectProcessor<MessageStatusChangeEvent> {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Class<MessageStatusChangeEvent> getInputClass() { return MessageStatusChangeEvent.class; }
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void process(MessageStatusChangeEvent input, long socketId, ObjectWriteProxy writeProxy) throws IOException {
|
|
|
|
try {
|
2020-01-30 13:20:39 +01:00
|
|
|
// any other status than read is not supposed to be sent to the server
|
2020-01-30 18:40:54 +01:00
|
|
|
if (input.get() != MessageStatus.READ) throw new EnvoyException("Message" + input.getId() + "has an invalid status");
|
2020-01-30 13:20:39 +01:00
|
|
|
} catch (EnvoyException e) {
|
2020-02-05 16:15:01 +01:00
|
|
|
throw new IOException(e);
|
2020-01-30 12:52:27 +01:00
|
|
|
}
|
2020-01-30 13:20:39 +01:00
|
|
|
ConnectionManager conMan = ConnectionManager.getInstance();
|
2020-02-12 07:10:33 +01:00
|
|
|
PersistenceManager perMan = PersistenceManager.getInstance();
|
2020-01-30 13:20:39 +01:00
|
|
|
|
|
|
|
envoy.server.data.Message msg = perMan.getMessageById(input.getId());
|
|
|
|
msg.setStatus(input.get());
|
|
|
|
msg.setReadDate(input.getDate());
|
|
|
|
perMan.updateMessage(msg);
|
|
|
|
|
2020-02-05 17:24:31 +01:00
|
|
|
// Notifies the sender of the message about the status-update to READ
|
|
|
|
if (conMan.isOnline(msg.getSender().getId())) writeProxy.write(conMan.getSocketId(msg.getSender().getId()), input);
|
2020-01-30 12:52:27 +01:00
|
|
|
}
|
|
|
|
}
|