diff --git a/src/main/java/envoy/server/database/PersistenceManager.java b/src/main/java/envoy/server/database/PersistenceManager.java
index 91c7b19..9815ebe 100644
--- a/src/main/java/envoy/server/database/PersistenceManager.java
+++ b/src/main/java/envoy/server/database/PersistenceManager.java
@@ -180,6 +180,15 @@ public class PersistenceManager {
return entityManager.createNamedQuery("searchUsers").setParameter("searchPhrase", searchPhrase + "%").getResultList();
}
+ public void addContact(long userId, long contactId) {
+ User c1 = getUserById(userId);
+ User c2 = getUserById(contactId);
+ c1.getContacts().add(c2);
+ c2.getContacts().add(c1);
+ updateUser(c1);
+ updateUser(c2);
+ }
+
/**
* @param user the User whose contacts should be retrieved
* @return the contacts of this User - currently everyone using Envoy
diff --git a/src/main/java/envoy/server/processors/ContactOperationProcessor.java b/src/main/java/envoy/server/processors/ContactOperationProcessor.java
new file mode 100644
index 0000000..577a176
--- /dev/null
+++ b/src/main/java/envoy/server/processors/ContactOperationProcessor.java
@@ -0,0 +1,33 @@
+package envoy.server.processors;
+
+import java.io.IOException;
+
+import envoy.event.ContactOperation;
+import envoy.event.ContactOperation.Operation;
+import envoy.server.ConnectionManager;
+import envoy.server.ObjectProcessor;
+import envoy.server.database.PersistenceManager;
+import envoy.server.net.ObjectWriteProxy;
+
+/**
+ * Project: envoy-server-standalone
+ * File: ContactOperationProcessor.java
+ * Created: 08.02.2020
+ *
+ * @author Kai S. K. Engelbart
+ * @since Envoy Server Standalone v0.1-alpha
+ */
+public class ContactOperationProcessor implements ObjectProcessor {
+
+ @Override
+ public void process(ContactOperation operation, long socketId, ObjectWriteProxy writeProxy) throws IOException {
+ if (operation.getOperationType() == Operation.ADD) {
+ long userId = ConnectionManager.getInstance().getUserIdBySocketId(socketId);
+ System.out.printf("Adding user %s to the contact list of user %d", operation.get(), userId);
+ PersistenceManager.getPersistenceManager().addContact(userId, operation.get().getId());
+ }
+ }
+
+ @Override
+ public Class getInputClass() { return ContactOperation.class; }
+}