package org.ourgrid.broker.business.requester;
import java.util.ArrayList;
import java.util.List;
import org.ourgrid.broker.request.GetPagedTasksRequestTO;
import org.ourgrid.broker.response.HereIsPagedTasksResponseTO;
import org.ourgrid.broker.status.TaskStatusInfo;
import org.ourgrid.common.internal.IResponseTO;
public class GetPagedTasksRequester extends AbstractBrokerStatusRequester<GetPagedTasksRequestTO> {
public List<IResponseTO> execute(GetPagedTasksRequestTO to) {
List<IResponseTO> responses = new ArrayList<IResponseTO>();
if (to.canStatusBeUsed()) {
int jobId = to.getJobId();
int pageSize = to.getPageSize();
int offset = to.getOffset();
List<TaskStatusInfo> taskStatusInfo = getAllJobsInfo().get(jobId).getTasks();
List<TaskStatusInfo> pagedTasks = new ArrayList<TaskStatusInfo>(pageSize);
for (int i = offset; i < pageSize; i++) {
if (i >= taskStatusInfo.size()) {
break;
}
pagedTasks.add(taskStatusInfo.get(i));
}
HereIsPagedTasksResponseTO responseTO = new HereIsPagedTasksResponseTO();
responseTO.setJobId(jobId);
responseTO.setOffset(offset);
responseTO.setPagedTasks(pagedTasks);
responseTO.setClientAddress(to.getClientAddress());
responseTO.setMyAddress(to.getMyAddress());
responses.add(responseTO);
}
return responses;
}
}