package eu.dnetlib.enabling.resultset.push;

import java.util.ArrayList;
import java.util.List;

import eu.dnetlib.miscutils.cache.Cache;

/**
 * implement a resultset dao.
 * 
 * @author marko
 * 
 */
public class CacheTransientResultSetDaoImpl implements TransientPushResultSetDao {

	/**
	 * cache.
	 */
	private Cache<String, List<String>> cache;

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.enabling.resultset.push.TransientPushResultSetDao#addElements(java.lang.String, java.util.List)
	 */
	public void addElements(final String key, final List<String> elements) {
		synchronized (cache) {
			final List<String> current = getElements(key);
			current.addAll(elements);
			cache.put(key, current);
		}
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.enabling.resultset.push.TransientPushResultSetDao#getElements(java.lang.String)
	 */
	public List<String> getElements(final String key) {
		final List<String> res = cache.get(key);
		if (res == null)
			return new ArrayList<String>();
		return res;
	}

	public Cache<String, List<String>> getCache() {
		return cache;
	}

	public void setCache(final Cache<String, List<String>> cache) {
		this.cache = cache;
	}

}
