/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package qa.qcri.aidr.utils;
import qa.qcri.aidr.persister.collction.RedisCollectionPersister;
import qa.qcri.aidr.persister.collector.RedisCollectorPersister;
import qa.qcri.aidr.persister.tagger.RedisTaggerPersister;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* @author Imran
*/
public class GenericCache {
private Map<String, Long> countersMap = null; //keeps downloaded docs counter
private Map<String, RedisCollectorPersister> persisterMap = null; // keeps collector persisters
private Map<String, RedisTaggerPersister> taggerPersisterMap = null; // keeps tagger persisters
private Map<String, RedisCollectionPersister> collectionPersisterMap = null; // keeps collection persisters
private GenericCache() {
countersMap = new HashMap<String, Long>();
persisterMap = new HashMap<String, RedisCollectorPersister>();
taggerPersisterMap = new HashMap<String, RedisTaggerPersister>();
collectionPersisterMap = new HashMap<>();
}
public static GenericCache getInstance() {
return GenericSingletonHolder.INSTANCE;
}
/**
* @return the taggerPersisterMap
*/
public RedisTaggerPersister getTaggerPersisterMap(String key) {
return taggerPersisterMap.get(key);
}
/**
* @param taggerPersisterMap the taggerPersisterMap to set
*/
public void setTaggerPersisterMap(String key, RedisTaggerPersister taggerPersister) {
taggerPersisterMap.put(key, taggerPersister);
}
/**
* Delete persister entry for given collectionCode
* @param key is collectionCode
* @throws InterruptedException
*/
public void delTaggerPersisterMap(String key) throws InterruptedException {
RedisTaggerPersister p = taggerPersisterMap.get(key);
p.suspendMe();
taggerPersisterMap.remove(key);
}
private static class GenericSingletonHolder {
private static final GenericCache INSTANCE = new GenericCache();
}
public RedisCollectorPersister getPersisterObject(String key) {
return persisterMap.get(key);
}
public void setPersisterObject(String key, RedisCollectorPersister p) {
persisterMap.put(key, p);
}
public void delPersisterObject(String key) throws InterruptedException {
RedisCollectorPersister p = persisterMap.get(key);
p.suspendMe();
persisterMap.remove(key);
}
public RedisCollectionPersister getCollectionPersisterObject(String key) {
return collectionPersisterMap.get(key);
}
public void setCollectionPersisterMap(String key, RedisCollectionPersister collectionPersister) {
collectionPersisterMap.put(key, collectionPersister);
}
/**
* Delete persister entry for given collectionCode
* @param key is collectionCode
* @throws InterruptedException
*/
public RedisCollectionPersister delCollectionPersisterMap(String key) throws InterruptedException {
return collectionPersisterMap.remove(key);
}
/**
*
* @return List of active collector persisters
*/
public List<RedisCollectorPersister> getAllPersisters() {
List<RedisCollectorPersister> persistersList = new ArrayList<RedisCollectorPersister>();
if (persisterMap != null) {
for (Map.Entry pairs : persisterMap.entrySet()) {
persistersList.add((RedisCollectorPersister) pairs.getValue());
}
}
return persistersList;
}
/**
*
* @return List of active tagger persisters
*/
public List<RedisTaggerPersister> getAllTaggerPersisters() {
List<RedisTaggerPersister> persistersList = new ArrayList<RedisTaggerPersister>();
if (taggerPersisterMap != null) {
for (Map.Entry pairs : taggerPersisterMap.entrySet()) {
persistersList.add((RedisTaggerPersister) pairs.getValue());
}
}
return persistersList;
}
}