ItEr59S04ValidacionEProbasFuncionaisItEr58S04: [Bug #505] Fix bug.
LimitingResourceAllocationModel was introducing new resources instances instead of using the already existent. This caused to have more that one instance for the same resource.
This commit is contained in:
parent
46600cbc8b
commit
4e134d00e1
4 changed files with 23 additions and 12 deletions
|
|
@ -25,6 +25,7 @@ import java.util.List;
|
|||
import org.navalplanner.business.orders.entities.AggregatedHoursGroup;
|
||||
import org.navalplanner.business.planner.entities.Task;
|
||||
import org.navalplanner.web.planner.allocation.INewAllocationsAdder;
|
||||
import org.navalplanner.web.planner.order.PlanningState;
|
||||
|
||||
/**
|
||||
* Contract for {@link Task}.
|
||||
|
|
@ -41,6 +42,6 @@ public interface ILimitingResourceAllocationModel extends INewAllocationsAdder {
|
|||
|
||||
List<LimitingAllocationRow> getResourceAllocationRows();
|
||||
|
||||
void init(Task task);
|
||||
void init(Task task, PlanningState planningState);
|
||||
|
||||
}
|
||||
|
|
@ -30,8 +30,8 @@ import org.navalplanner.business.planner.entities.ResourceAllocation;
|
|||
import org.navalplanner.web.common.IMessagesForUser;
|
||||
import org.navalplanner.web.common.Util;
|
||||
import org.navalplanner.web.common.components.NewAllocationSelector;
|
||||
import org.navalplanner.web.planner.allocation.ResourceAllocationController;
|
||||
import org.navalplanner.web.planner.allocation.ResourceAllocationController.HoursRendererColumn;
|
||||
import org.navalplanner.web.planner.order.PlanningState;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
|
|
@ -95,9 +95,10 @@ public class LimitingResourceAllocationController extends GenericForwardComposer
|
|||
* @param planningState
|
||||
*/
|
||||
public void init(org.navalplanner.business.planner.entities.Task task,
|
||||
PlanningState planningState,
|
||||
IMessagesForUser messagesForUser) {
|
||||
try {
|
||||
resourceAllocationModel.init(task);
|
||||
resourceAllocationModel.init(task, planningState);
|
||||
tabLimitingWorkerSearch.setDisabled(existsResourceAllocationWithDayAssignments());
|
||||
limitingNewAllocationSelector.setAllocationsAdder(resourceAllocationModel);
|
||||
gridLimitingOrderElementHours.setModel(new ListModelList(
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ import org.navalplanner.business.resources.daos.IResourceDAO;
|
|||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.CriterionType;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
import org.navalplanner.web.planner.order.PlanningState;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
|
|
@ -74,9 +75,12 @@ public class LimitingResourceAllocationModel implements ILimitingResourceAllocat
|
|||
|
||||
private List<LimitingAllocationRow> limitingAllocationRows = new ArrayList<LimitingAllocationRow>();
|
||||
|
||||
private PlanningState planningState;
|
||||
|
||||
@Override
|
||||
public void init(Task task) {
|
||||
public void init(Task task, PlanningState planningState) {
|
||||
this.task = task;
|
||||
this.planningState = planningState;
|
||||
limitingAllocationRows = LimitingAllocationRow.toRows(task);
|
||||
}
|
||||
|
||||
|
|
@ -94,15 +98,18 @@ public class LimitingResourceAllocationModel implements ILimitingResourceAllocat
|
|||
public void addGeneric(Set<Criterion> criteria,
|
||||
Collection<? extends Resource> resources) {
|
||||
if (resources.size() >= 1) {
|
||||
reattachResources(resources);
|
||||
addGenericResourceAllocation(criteria, resources);
|
||||
planningState.reassociateResourcesWithSession();
|
||||
addGenericResourceAllocation(criteria, reloadResources(resources));
|
||||
}
|
||||
}
|
||||
|
||||
private void reattachResources(Collection<? extends Resource> resources) {
|
||||
private List<Resource> reloadResources(
|
||||
Collection<? extends Resource> resources) {
|
||||
List<Resource> result = new ArrayList<Resource>();
|
||||
for (Resource each: resources) {
|
||||
resourceDAO.reattach(each);
|
||||
result.add(resourceDAO.findExistingEntity(each.getId()));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void addGenericResourceAllocation(Set<Criterion> criteria,
|
||||
|
|
@ -142,9 +149,10 @@ public class LimitingResourceAllocationModel implements ILimitingResourceAllocat
|
|||
@Transactional(readOnly = true)
|
||||
public void addSpecific(Collection<? extends Resource> resources) {
|
||||
if (resources.size() >= 1) {
|
||||
Resource resource = getFirstChild(resources);
|
||||
resourceDAO.reattach(resource);
|
||||
addSpecificResourceAllocation(resource);
|
||||
planningState.reassociateResourcesWithSession();
|
||||
List<Resource> reloaded = reloadResources(
|
||||
Collections.singleton(getFirstChild(resources)));
|
||||
addSpecificResourceAllocation(getFirstChild(reloaded));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -167,7 +167,8 @@ public class EditTaskController extends GenericForwardComposer {
|
|||
showNonLimitingResourcesTab();
|
||||
} else if (ResourceAllocationTypeEnum.LIMITING_RESOURCES
|
||||
.equals(resourceAllocationType)) {
|
||||
limitingResourceAllocationController.init(asTask(taskElement), messagesForUser);
|
||||
limitingResourceAllocationController.init(asTask(taskElement),
|
||||
planningState, messagesForUser);
|
||||
showLimitingResourcesTab();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue