package org.ourgrid.broker.business.requester;
import java.util.ArrayList;
import java.util.List;
import org.ourgrid.broker.business.dao.BrokerDAOFactory;
import org.ourgrid.broker.business.dao.JobDAO;
import org.ourgrid.broker.business.messages.BrokerControlMessages;
import org.ourgrid.broker.business.scheduler.SchedulerIF;
import org.ourgrid.broker.request.NotifyWhenJobIsFinishedRequestTO;
import org.ourgrid.common.internal.IResponseTO;
import org.ourgrid.common.internal.RequesterIF;
import org.ourgrid.common.internal.response.LoggerResponseTO;
public class NotifyWhenJobIsFinishedRequester implements RequesterIF<NotifyWhenJobIsFinishedRequestTO> {
public List<IResponseTO> execute(NotifyWhenJobIsFinishedRequestTO request) {
List<IResponseTO> responses = new ArrayList<IResponseTO>();
responses.add(new LoggerResponseTO("Trying to notify when job is finished.", LoggerResponseTO.INFO));
String senderPubKey = request.getSenderPublicKey();
if (!request.isThisMyPublicKey()) {
responses.add(new LoggerResponseTO(BrokerControlMessages.getUnknownSenderControllingBrokerMessage(senderPubKey), LoggerResponseTO.WARN));
return responses;
}
if (!request.canComponentBeUsed()) {
responses.add(new LoggerResponseTO(BrokerControlMessages.getComponentNotStartedMessage(), LoggerResponseTO.ERROR));
return responses;
}
JobDAO jobDAO = BrokerDAOFactory.getInstance().getJobDAO();
jobDAO.setBrokerControlClientAddress(request.getBrokerControlClientAddress());
int jobID = request.getJobID();
SchedulerIF scheduler = jobDAO.getJobScheduler(jobID);
scheduler.notifyWhenJobIsFinished(jobID, request.getInterestedDeploymentID(), responses);
return responses;
}
}