ItEr59S08CUAsignacionRecursosLimitantesItEr58S10: Moving code for finding the queue for a resource to QueuesState

This commit is contained in:
Óscar González Fernández 2010-06-05 18:34:32 +02:00
parent ba03c7815e
commit f410e7bb72
2 changed files with 18 additions and 16 deletions

View file

@ -404,7 +404,7 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel {
.getResourceAllocation();
if (resourceAllocation instanceof SpecificResourceAllocation) {
// Retrieve queue
queue = retrieveQueueByResourceFromModel(queueElement.getResource());
queue = queuesState.getQueueFor(queueElement.getResource());
// Set start time
final LimitingResourceQueueElementGap firstGap = LimitingResourceAllocator
.getFirstValidGap(queue, queueElement);
@ -536,20 +536,6 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel {
queuesState.assignedToQueue(element, queue);
}
private LimitingResourceQueue retrieveQueueByResourceFromModel(Resource resource) {
return findQueueByResource(queuesState.getQueues(), resource);
}
private LimitingResourceQueue findQueueByResource(
List<LimitingResourceQueue> queues, Resource resource) {
for (LimitingResourceQueue each : queues) {
if (each.getResource().getId().equals(resource.getId())) {
return each;
}
}
return null;
}
@Override
@Transactional
public void confirm() {
@ -695,7 +681,7 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel {
final ResourceAllocation<?> resourceAllocation = element.getResourceAllocation();
if (resourceAllocation instanceof SpecificResourceAllocation) {
LimitingResourceQueue queue = retrieveQueueByResourceFromModel(element.getResource());
LimitingResourceQueue queue = queuesState.getQueueFor(element.getResource());
Validate.notNull(queue);
return Collections.singletonList(queue);
} else if (resourceAllocation instanceof GenericResourceAllocation) {

View file

@ -30,6 +30,7 @@ import org.apache.commons.lang.Validate;
import org.navalplanner.business.common.BaseEntity;
import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueueElement;
import org.navalplanner.business.resources.entities.LimitingResourceQueue;
import org.navalplanner.business.resources.entities.Resource;
/**
* @author Óscar González Fernández <ogonzalez@igalia.com>
@ -44,6 +45,8 @@ public class QueuesState {
private final Map<Long, LimitingResourceQueueElement> elementsById;
private final Map<Long, LimitingResourceQueue> queuesByResourceId;
private static <T extends BaseEntity> Map<Long, T> byId(
Collection<? extends T> entities) {
Map<Long, T> result = new HashMap<Long, T>();
@ -53,6 +56,15 @@ public class QueuesState {
return result;
}
private static Map<Long, LimitingResourceQueue> byResourceId(
Collection<? extends LimitingResourceQueue> limitingResourceQueues) {
Map<Long, LimitingResourceQueue> result = new HashMap<Long, LimitingResourceQueue>();
for (LimitingResourceQueue each : limitingResourceQueues) {
result.put(each.getResource().getId(), each);
}
return result;
}
public QueuesState(
List<LimitingResourceQueue> limitingResourceQueues,
List<LimitingResourceQueueElement> unassignedLimitingResourceQueueElements) {
@ -63,6 +75,7 @@ public class QueuesState {
this.queuesById = byId(queues);
this.elementsById = byId(allElements(limitingResourceQueues,
unassignedLimitingResourceQueueElements));
this.queuesByResourceId = byResourceId(limitingResourceQueues);
}
private List<LimitingResourceQueueElement> allElements(
@ -108,5 +121,8 @@ public class QueuesState {
unassignedElements.remove(queueElement);
}
public LimitingResourceQueue getQueueFor(Resource resource) {
return queuesByResourceId.get(resource.getId());
}
}