[Bug #900] Error doing generic allocation

* Queue elements can only be applied to Queues which have a Resource of the same type

FEA : ItEr71S04BugFixing
This commit is contained in:
Diego Pino Garcia 2011-02-25 16:02:59 +01:00
parent 12245f86ad
commit 69770b3955
2 changed files with 10 additions and 7 deletions

View file

@ -34,12 +34,10 @@ import java.util.SortedSet;
import java.util.TreeSet;
import org.navalplanner.business.common.BaseEntity;
import org.navalplanner.business.orders.entities.OrderElement;
import org.navalplanner.business.planner.limiting.entities.DateAndHour;
import org.navalplanner.business.planner.limiting.entities.Gap;
import org.navalplanner.business.planner.limiting.entities.Gap.GapOnQueue;
import org.navalplanner.business.planner.limiting.entities.InsertionRequirements;
import org.navalplanner.business.planner.limiting.entities.LimitingResourceAllocator;
import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueueElement;
/**
*

View file

@ -43,9 +43,9 @@ import org.navalplanner.business.planner.entities.GenericResourceAllocation;
import org.navalplanner.business.planner.entities.ResourceAllocation;
import org.navalplanner.business.planner.entities.SpecificResourceAllocation;
import org.navalplanner.business.planner.limiting.entities.DateAndHour;
import org.navalplanner.business.planner.limiting.entities.Gap;
import org.navalplanner.business.planner.limiting.entities.Gap.GapOnQueue;
import org.navalplanner.business.planner.limiting.entities.Gap.GapOnQueueWithQueueElement;
import org.navalplanner.business.planner.limiting.entities.Gap;
import org.navalplanner.business.planner.limiting.entities.InsertionRequirements;
import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueueDependency;
import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueueDependency.QueueDependencyType;
@ -55,6 +55,7 @@ import org.navalplanner.business.resources.entities.CriterionCompounder;
import org.navalplanner.business.resources.entities.ICriterion;
import org.navalplanner.business.resources.entities.LimitingResourceQueue;
import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.business.resources.entities.ResourceEnum;
/**
* @author Óscar González Fernández <ogonzalez@igalia.com>
@ -207,7 +208,7 @@ public class QueuesState {
} else if (resourceAllocation instanceof GenericResourceAllocation) {
final GenericResourceAllocation generic = (GenericResourceAllocation) element
.getResourceAllocation();
return findQueuesMatchingCriteria(generic.getCriterions());
return findQueuesMatchingCriteria(generic);
}
throw new RuntimeException("unexpected type of: " + resourceAllocation);
}
@ -288,13 +289,17 @@ public class QueuesState {
return result;
}
private List<LimitingResourceQueue> findQueuesMatchingCriteria(
Set<Criterion> criteria) {
private List<LimitingResourceQueue> findQueuesMatchingCriteria(GenericResourceAllocation generic) {
List<LimitingResourceQueue> result = new ArrayList<LimitingResourceQueue>();
ResourceEnum resourceType = generic.getResourceType();
Set<Criterion> criteria = generic.getCriterions();
final ICriterion compositedCriterion = CriterionCompounder.buildAnd(
criteria).getResult();
for (LimitingResourceQueue each : queues) {
if (compositedCriterion.isSatisfiedBy(each.getResource())) {
Resource resource = each.getResource();
if (resource.getType().equals(resourceType)
&& compositedCriterion.isSatisfiedBy(resource)) {
result.add(each);
}
}