package envoy.server.processors; import static envoy.server.Startup.config; import java.util.HashSet; import envoy.event.*; import envoy.server.data.PersistenceManager; import envoy.server.net.*; /** * @author Maximilian Käfer * @since Envoy Server Standalone v0.1-beta */ public final class GroupCreationProcessor implements ObjectProcessor { private final PersistenceManager persistenceManager = PersistenceManager.getInstance(); private final ConnectionManager connectionManager = ConnectionManager.getInstance(); @Override public void process(GroupCreation groupCreation, long socketID, ObjectWriteProxy writeProxy) { // Don't allow the creation of groups if manually disabled if (!config.isGroupSupportEnabled()) { writeProxy.write(socketID, new GroupCreationResult()); return; } final envoy.server.data.Group group = new envoy.server.data.Group(); group.setName(groupCreation.get()); group.setContacts(new HashSet<>()); persistenceManager.addContact(group); groupCreation.getInitialMemberIDs() .stream() .map(persistenceManager::getUserByID) .forEach(member -> persistenceManager.addContactBidirectional(member, group)); persistenceManager.addContactBidirectional( persistenceManager.getUserByID(connectionManager.getUserIDBySocketID(socketID)), group); writeProxy.writeToOnlineContacts(group.getContacts(), new GroupCreationResult(group.toCommon())); } }