![JAR search and dependency download from the Maven repository](/logo.png)
net.intelie.live.plugins.messenger.connections.MessengerConnectionsRegistry Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of plugin-messenger Show documentation
Show all versions of plugin-messenger Show documentation
Intelie Live Messenger Plugin
The newest version!
package net.intelie.live.plugins.messenger.connections;
import com.google.common.collect.HashMultiset;
import com.google.common.collect.Multiset;
import net.intelie.live.plugins.messenger.chat.ControlActionsManager;
import net.intelie.live.plugins.messenger.data.UserData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class MessengerConnectionsRegistry {
private static final Logger LOGGER = LoggerFactory.getLogger(MessengerConnectionsRegistry.class);
private final Multiset connections = HashMultiset.create();
private final ControlActionsManager controlActionsManager;
public MessengerConnectionsRegistry(ControlActionsManager controlActionsManager) {
this.controlActionsManager = controlActionsManager;
}
public synchronized void register(UserConnection connection) {
LOGGER.info("Messenger connection registered by user {}", connection.getUserName());
boolean userNotRegistered = connections.stream().noneMatch(c -> connection.getUserId().equals(c.getUserId()));
connections.add(connection);
if (userNotRegistered && connections.stream().filter(c -> connection.getUserId().equals(c.getUserId())).count() == 1) {
LOGGER.info("Messenger joined action by user {}", connection.getUserName());
controlActionsManager.userJoinedMessengerAction(connection.userData());
}
}
public synchronized boolean remove(UserConnection connection) {
LOGGER.info("Messenger connection removed by user {}", connection.getUserName());
boolean hadOneRegistry = connections.stream().filter(c -> connection.getUserId().equals(c.getUserId())).count() == 1;
boolean removeResult = connections.remove(connection);
if (hadOneRegistry && connections.stream().noneMatch(c -> connection.getUserId().equals(c.getUserId()))) {
LOGGER.info("Messenger left action by user {}", connection.getUserName());
controlActionsManager.userLeftMessengerAction(connection.userData());
}
return removeResult;
}
public synchronized List registeredUsers() {
return connections.stream()
.map(c -> new UserData(c.getUserId(), c.getUserName()))
.distinct()
.collect(Collectors.toList());
}
public synchronized List byUserId(Integer userId) {
if (userId == null) return Collections.emptyList();
return connections.stream()
.filter(c -> userId.equals(c.getUserId()))
.map(UserConnection::userData)
.collect(Collectors.toList());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy