package eu.dnetlib.data.collective.manager.nh;

import eu.dnetlib.common.interfaces.nh.IBlackboardMessage.Action;
import eu.dnetlib.common.interfaces.ws.ServiceException;
import eu.dnetlib.common.nh.AbstractDataCollectiveServiceNotificationHandler;
import eu.dnetlib.data.collective.manager.IInstanceManager;
import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;

/**
 * @author jochen
 * @param <T> instance manager
 * @param <E> instance datastructure
 *
 */
public class MSNotificationHandler<T extends IInstanceManager<E>, E> extends AbstractDataCollectiveServiceNotificationHandler<T>{

	protected void processJob(BlackboardJob job) {
		boolean notified = false;
			
		String id = job.getParameters().get("id");
		if (job.getAction().equals(Action.MANAGE.name())){
			
			notified = this.jobHandler.notifyResourceAdded(id);
			if (notified){ getBlackboardHandler().done(job); }
			else{ getBlackboardHandler().failed(job, new ServiceException("unable to manage instance resource"));}
			
		}else if (job.getAction().equals(Action.RELEASE.name())){
			notified = this.jobHandler.notifyResourceRemoved(id);
			if (notified){getBlackboardHandler().done(job);}
			else{getBlackboardHandler().failed(job, new ServiceException("unable to release instance resource"));}
			
		}else{
			getBlackboardHandler().failed(job, new ServiceException("unsupported."));
		}

	}
	

}
