/**
 * 
 */
package eu.dnetlib.data.collective.manager;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import eu.dnetlib.data.collective.manager.nh.ServiceActivity;

/**
 * Registry for worker service activities
 * @author jochen
 *
 */
public class WorkerServiceActivityRegistry implements
		IWorkerServiceActivityProvider {

	private Map<String, ServiceActivity> workerServiceActivityCache = new LinkedHashMap<String, ServiceActivity>();
	
	/* (non-Javadoc)
	 * @see eu.dnetlib.data.collective.manager.IWorkerServiceActivityConsumer#getServiceActivities(java.lang.String)
	 */
	@Override
	public List<ServiceActivity> getServiceActivities(String aInstanceId) {
		List<ServiceActivity> serviceActivityList = new java.util.LinkedList<ServiceActivity>();
		for (ServiceActivity activity: this.getAllServiceActivities()){
			if (activity.getInstanceResourceId().equals(aInstanceId)){
				serviceActivityList.add(activity);
			}
		}
		return serviceActivityList;
	}

	@Override
	public boolean containsServiceActivity(String aActionId) {
		return this.workerServiceActivityCache.containsKey(aActionId);	}

	@Override
	public ServiceActivity getWorkerServiceActivity(String aActionId) {
		return this.workerServiceActivityCache.get(aActionId);
	}

	@Override
	public void addWorkerServiceActivity(String aActionId,
			ServiceActivity aServiceActiviy) {
		this.workerServiceActivityCache.put(aActionId, aServiceActiviy);	
	}

	@Override
	public void removeWorkerServiceActivity(String aActionId) {
		this.workerServiceActivityCache.remove(aActionId);
	}

	@Override
	public Collection<ServiceActivity> getAllServiceActivities() {
		return this.workerServiceActivityCache.values();
	}

}
