package com.bahadirakin.hazelcast;
import com.bahadirakin.hazelcast.dao.UserRepository;
import com.bahadirakin.hazelcast.domain.User;
import com.hazelcast.core.MapStore;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@Service
@Transactional
public class UserMapStore implements MapStore<String, User> {
@Autowired
private UserRepository userRepository;
@Override
public void store(String key, User value) {
userRepository.save(value);
}
@Override
public void storeAll(Map<String, User> map) {
for (Map.Entry<String, User> userEntry : map.entrySet()) {
this.store(userEntry.getKey(), userEntry.getValue());
}
}
@Override
public void delete(String key) {
userRepository.deleteByUsername(key);
}
@Override
public void deleteAll(Collection<String> keys) {
for (String key : keys) {
this.delete(key);
}
}
@Override
public User load(String key) {
return userRepository.findByUsername(key);
}
@Override
public Map<String, User> loadAll(Collection<String> keys) {
final Map<String, User> users = new HashMap<>();
for (String key : keys) {
users.put(key, load(key));
}
return users;
}
@Override
public Set<String> loadAllKeys() {
return userRepository.findAllUsernames();
}
}