ItEr39S16CUConfiguracionMaquinasItEr35S09: Merging the new derived allocations with changes into existing ones
This commit is contained in:
parent
405bbf1c13
commit
1c2e01ef10
2 changed files with 35 additions and 0 deletions
|
|
@ -21,8 +21,11 @@ package org.navalplanner.business.planner.entities;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
|
|
@ -38,6 +41,15 @@ import org.navalplanner.business.resources.entities.Resource;
|
|||
*/
|
||||
public class DerivedAllocation extends BaseEntity {
|
||||
|
||||
public static Map<MachineWorkersConfigurationUnit, DerivedAllocation> byConfigurationUnit(
|
||||
Collection<? extends DerivedAllocation> derivedAllocations) {
|
||||
Map<MachineWorkersConfigurationUnit, DerivedAllocation> map = new HashMap<MachineWorkersConfigurationUnit, DerivedAllocation>();
|
||||
for (DerivedAllocation each : derivedAllocations) {
|
||||
map.put(each.getConfigurationUnit(), each);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
private static boolean isIfGenericContainsMachine(
|
||||
ResourceAllocation<?> derivedFrom,
|
||||
MachineWorkersConfigurationUnit configurationUnit) {
|
||||
|
|
|
|||
|
|
@ -639,6 +639,29 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
mergeAssignments(modifications);
|
||||
setResourcesPerDay(modifications.getResourcesPerDay());
|
||||
setAssignmentFunction(modifications.getAssignmentFunction());
|
||||
mergeDerivedAllocations(modifications.getDerivedAllocations());
|
||||
}
|
||||
|
||||
private void mergeDerivedAllocations(
|
||||
Set<DerivedAllocation> derivedAllocations) {
|
||||
Map<MachineWorkersConfigurationUnit, DerivedAllocation> newMap = DerivedAllocation
|
||||
.byConfigurationUnit(derivedAllocations);
|
||||
Map<MachineWorkersConfigurationUnit, DerivedAllocation> currentMap = DerivedAllocation
|
||||
.byConfigurationUnit(getDerivedAllocations());
|
||||
for (Entry<MachineWorkersConfigurationUnit, DerivedAllocation> entry : newMap
|
||||
.entrySet()) {
|
||||
final MachineWorkersConfigurationUnit key = entry.getKey();
|
||||
final DerivedAllocation modification = entry.getValue();
|
||||
DerivedAllocation current = currentMap.get(key);
|
||||
if (current == null) {
|
||||
currentMap.put(key, modification.asDerivedFrom(this));
|
||||
} else {
|
||||
current.resetAssignmentsTo(modification
|
||||
.copyAssignmentsAsChildrenOf(current));
|
||||
}
|
||||
}
|
||||
this.derivedAllocations = new HashSet<DerivedAllocation>(currentMap
|
||||
.values());
|
||||
}
|
||||
|
||||
protected abstract void mergeAssignments(ResourceAllocation<?> modifications);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue