package org.ourgrid.worker.business.requester; import java.util.ArrayList; import java.util.List; import org.ourgrid.common.interfaces.to.WorkerStatus; import org.ourgrid.common.internal.IResponseTO; import org.ourgrid.common.internal.RequesterIF; import org.ourgrid.common.internal.response.LoggerResponseTO; import org.ourgrid.worker.business.controller.ExecutionController; import org.ourgrid.worker.business.controller.WorkerController; import org.ourgrid.worker.business.dao.WorkerDAOFactory; import org.ourgrid.worker.business.dao.WorkerStatusDAO; import org.ourgrid.worker.business.messages.WorkerManagementClientFailureControllerMessages; import org.ourgrid.worker.request.WorkerManagementClientDoNotifyFailureRequestTO; import org.ourgrid.worker.response.CancelReportAccountingActionResponseTO; public class WorkerManagementClientDoNotifyFailureRequester implements RequesterIF<WorkerManagementClientDoNotifyFailureRequestTO> { public List<IResponseTO> execute(WorkerManagementClientDoNotifyFailureRequestTO request) { List<IResponseTO> responses = new ArrayList<IResponseTO>(); WorkerStatusDAO workerStatusDAO = WorkerDAOFactory.getInstance().getWorkerStatusDAO(); if (workerStatusDAO.getMasterPeerAddress() == null) { responses.add(new LoggerResponseTO(WorkerManagementClientFailureControllerMessages.getUndefinedMasterPeerFailsMessage(request.getMonitorableID()), LoggerResponseTO.WARN)); return responses; } if (!request.getMonitorableAddress().equals(workerStatusDAO.getMasterPeerAddress())) { responses.add(new LoggerResponseTO(WorkerManagementClientFailureControllerMessages.getUnknownPeerFailsMessage(request.getMonitorableID()), LoggerResponseTO.WARN)); return responses; } boolean isWorkingState = workerStatusDAO.isWorkingState(); if (workerStatusDAO.isAllocated()) { WorkerController.getInstance().interruptWorking(responses, true); workerStatusDAO.setStatus(WorkerStatus.IDLE); } if (isWorkingState) { ExecutionController.getInstance().beginAllocation(responses); } responses.add(new LoggerResponseTO(WorkerManagementClientFailureControllerMessages.getMasterPeerFailsMessage(request.getMonitorableID()), LoggerResponseTO.WARN)); workerStatusDAO.masterPeerFails(); CancelReportAccountingActionResponseTO cancelReportAccountingTO = new CancelReportAccountingActionResponseTO(); responses.add(cancelReportAccountingTO); WorkerDAOFactory.getInstance().getWorkAccountingDAO().resetAccountings(); return responses; } }