package com.cache2.repository;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Repository;
import com.cache2.annotation.CachedMethod;
import com.cache2.domain.CacheStrategy;
import com.cache2.domain.Entity;
@Repository
public class EntityRepository {
private Map<Integer, Entity> entityMap = new HashMap<>();
@CachedMethod(CacheStrategy.GET)
public Entity get(int id) {
return entityMap.get(id);
}
@CachedMethod(CacheStrategy.INSERT)
public void insert(Entity entity) {
this.save(entity);
}
@CachedMethod(CacheStrategy.UPDATE)
public void update(Entity entity) {
this.save(entity);
}
@CachedMethod(CacheStrategy.DELETE)
public void delete(Entity entity) {
entityMap.remove(entity.getId());
}
private void save(final Entity entity) {
final Entity clone = new Entity();
clone.setId(entity.getId());
clone.setName(entity.getName());
entityMap.put(clone.getId(), clone);
}
}