nu.yona.server.subscriptions.service.UserAnonymizedService.java Source code

Java tutorial

Introduction

Here is the source code for nu.yona.server.subscriptions.service.UserAnonymizedService.java

Source

/*******************************************************************************
 * Copyright (c) 2016, 2017 Stichting Yona Foundation This Source Code Form is subject to the terms of the Mozilla Public License,
 * v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
 *******************************************************************************/
package nu.yona.server.subscriptions.service;

import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;

import javax.transaction.Transactional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import nu.yona.server.exceptions.InvalidDataException;
import nu.yona.server.subscriptions.entities.UserAnonymized;
import nu.yona.server.subscriptions.entities.UserAnonymizedRepository;

@CacheConfig(cacheNames = "usersAnonymized")
@Service
public class UserAnonymizedService {
    @Autowired(required = false)
    private UserAnonymizedRepository userAnonymizedRepository;

    public Set<UserAnonymizedDto> getAllUsersAnonymized() {
        return userAnonymizedRepository.findAll().stream().map(UserAnonymizedDto::createInstance)
                .collect(Collectors.toSet());
    }

    @Cacheable
    @Transactional
    public UserAnonymizedDto getUserAnonymized(UUID userAnonymizedId) {
        UserAnonymized entity = userAnonymizedRepository.findOne(userAnonymizedId);
        if (entity == null) {
            throw InvalidDataException.userAnonymizedIdNotFound(userAnonymizedId);
        }
        return UserAnonymizedDto.createInstance(entity);
    }

    /*
     * Prefer to use other method, because this one is not cached.
     */
    public UserAnonymized getUserAnonymizedEntity(UUID userAnonymizedId) {
        return userAnonymizedRepository.findOne(userAnonymizedId);
    }

    @CachePut(key = "#userAnonymized.id")
    public UserAnonymizedDto updateUserAnonymized(UserAnonymized userAnonymized) {
        UserAnonymized savedEntity = userAnonymizedRepository.save(userAnonymized);
        return UserAnonymizedDto.createInstance(savedEntity);
    }

    @CachePut(key = "#userAnonymizedId")
    public UserAnonymizedDto updateUserAnonymized(UUID userAnonymizedId) {
        UserAnonymized savedEntity = userAnonymizedRepository
                .save(userAnonymizedRepository.findOne(userAnonymizedId));
        return UserAnonymizedDto.createInstance(savedEntity);
    }

    @CacheEvict(key = "#userAnonymizedId")
    public void deleteUserAnonymized(UUID userAnonymizedId) {
        userAnonymizedRepository.delete(userAnonymizedId);
    }

    @CacheEvict(allEntries = true)
    public void clearCache() {
        // Nothing to do here. The annotation ensures the cache is cleared
    }
}