fi.evolver.ai.vaadin.UserProfileService Maven / Gradle / Ivy
package fi.evolver.ai.vaadin;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import fi.evolver.ai.vaadin.entity.UserProfile;
import fi.evolver.utils.attribute.ContextAttribute;
@Component
public class UserProfileService {
private static final ContextAttribute CONTEXT_USER_PROFILE = new ContextAttribute<>("%s.userProfile".formatted(UserProfileService.class.getSimpleName()), UserProfile.class);
private final UserProfileRepository userProfileRepository;
@Autowired
public UserProfileService(UserProfileRepository userProfileRepository) {
this.userProfileRepository = userProfileRepository;
}
public UserProfile fetchUserProfile() {
return CONTEXT_USER_PROFILE.computeIfAbsent(() -> userProfileRepository.findOrCreateUserProfile());
}
public Optional getParameter(String key) {
UserProfile profile = fetchUserProfile();
if (profile == null)
return Optional.empty();
return profile.getParameter(key);
}
public void setParameter(String key, String value) {
UserProfile profile = fetchUserProfile();
profile.setParameter(key, value);
userProfileRepository.save(profile);
}
}