package org.ourgrid.worker.business.requester; import java.util.ArrayList; import java.util.List; import org.ourgrid.common.interfaces.status.WorkerCompleteStatus; import org.ourgrid.common.internal.IResponseTO; import org.ourgrid.common.internal.RequesterIF; import org.ourgrid.common.status.PeerState; import org.ourgrid.common.util.StringUtil; import org.ourgrid.reqtrace.Req; import org.ourgrid.worker.business.dao.WorkerDAOFactory; import org.ourgrid.worker.business.dao.WorkerStatusDAO; import org.ourgrid.worker.request.GetWorkerCompleteStatusRequestTO; import org.ourgrid.worker.response.HereIsWorkerCompleteStatusResponseTO; import org.ourgrid.worker.status.PeerStatusInfo; public class GetWorkerCompleteStatusRequester implements RequesterIF<GetWorkerCompleteStatusRequestTO> { public List<IResponseTO> execute(GetWorkerCompleteStatusRequestTO to) { List<IResponseTO> responses = new ArrayList<IResponseTO>(); if (to.canStatusBeUsed()) { HereIsWorkerCompleteStatusResponseTO responseTO = new HereIsWorkerCompleteStatusResponseTO(); responseTO.setCompleteStatus(getCompleteStatus(to)); responseTO.setClientAddress(to.getClientAddress()); responses.add(responseTO); } return responses; } @Req("REQ095") private WorkerCompleteStatus getCompleteStatus(GetWorkerCompleteStatusRequestTO to) { WorkerStatusDAO statusDAO = WorkerDAOFactory.getInstance().getWorkerStatusDAO(); PeerStatusInfo peerInfo = new PeerStatusInfo( statusDAO.isLogged() ? PeerState.LOGGED.toString() : PeerState.NOT_LOGGED.toString(), statusDAO.getLoginError(), StringUtil.addressToUserAtServer(statusDAO.getMasterPeerAddress())); return new WorkerCompleteStatus(to.getUptime(), to.getConfiguration(), statusDAO.getStatus(), peerInfo, getCurrentPlaypenDirPath(to), getCurrentStorageDirPath(to)); } @Req("REQ095") private String getCurrentPlaypenDirPath(GetWorkerCompleteStatusRequestTO to) { String playpenDir = WorkerDAOFactory.getInstance().getEnvironmentDAO().getPlaypenDir(); if (playpenDir != null) { return playpenDir; } return to.getContextPlaypenDir(); } @Req("REQ095") private String getCurrentStorageDirPath(GetWorkerCompleteStatusRequestTO to) { String storageDir = WorkerDAOFactory.getInstance().getEnvironmentDAO().getStorageDir(); if (storageDir != null) { return storageDir; } return to.getContextStorageDir(); } }