All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.intelie.live.plugins.messenger.data.UserDataResolver Maven / Gradle / Ivy

The newest version!
package net.intelie.live.plugins.messenger.data;

import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import net.intelie.live.EntityContext;
import net.intelie.live.model.User;
import net.intelie.live.queries.AllUsers;
import org.jetbrains.annotations.NotNull;

import java.util.Collections;
import java.util.concurrent.TimeUnit;

public class UserDataResolver {
    private final LoadingCache cache;

    public UserDataResolver(EntityContext context) {
        this.cache = CacheBuilder.newBuilder().maximumSize(1024).expireAfterWrite(1, TimeUnit.MINUTES).build(new CacheLoader() {
            @Override
            public User load(@NotNull Integer key) {
                User user = context.inTransaction(() -> context.findOneOf(new AllUsers().byIds(Collections.singleton(key))));
                if (user == null){
                    user = new User();
                }
                return user;
            }
        });
    }

    public UserData resolve(Integer id) {
        if (id == null) return null;

        User user = cache.getUnchecked(id);
        if (user == null || user.getId() == null) return null;
        return new UserData(id, user.getDisplayName());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy