Change HoursModification to use EffortDuration
Now it's called EffortModification. FEA: ItEr74S04BugFixing
This commit is contained in:
parent
ab8abe5122
commit
b8d2bd574f
8 changed files with 78 additions and 76 deletions
|
|
@ -56,7 +56,7 @@ import org.navalplanner.business.common.BaseEntity;
|
|||
import org.navalplanner.business.common.Registry;
|
||||
import org.navalplanner.business.planner.entities.DerivedAllocationGenerator.IWorkerFinder;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.AllocatorForTaskDurationAndSpecifiedResourcesPerDay;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.HoursModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.EffortModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.ResourcesPerDayModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.UntilFillingHoursAllocator;
|
||||
import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueueElement;
|
||||
|
|
@ -405,7 +405,7 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
}
|
||||
|
||||
public static HoursAllocationSpecified allocatingHours(
|
||||
List<HoursModification> hoursModifications) {
|
||||
List<EffortModification> hoursModifications) {
|
||||
return new HoursAllocationSpecified(hoursModifications);
|
||||
}
|
||||
|
||||
|
|
@ -425,11 +425,11 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
*/
|
||||
public static class HoursAllocationSpecified {
|
||||
|
||||
private final List<HoursModification> hoursModifications;
|
||||
private final List<EffortModification> hoursModifications;
|
||||
|
||||
private Task task;
|
||||
|
||||
public HoursAllocationSpecified(List<HoursModification> hoursModifications) {
|
||||
public HoursAllocationSpecified(List<EffortModification> hoursModifications) {
|
||||
Validate.noNullElements(hoursModifications);
|
||||
Validate.isTrue(!hoursModifications.isEmpty());
|
||||
this.hoursModifications = hoursModifications;
|
||||
|
|
@ -444,7 +444,7 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
public void allocateUntil(LocalDate end) {
|
||||
Validate.notNull(end);
|
||||
Validate.isTrue(!end.isBefore(new LocalDate(task.getStartDate())));
|
||||
for (HoursModification each : hoursModifications) {
|
||||
for (EffortModification each : hoursModifications) {
|
||||
each.allocateUntil(end);
|
||||
}
|
||||
}
|
||||
|
|
@ -452,7 +452,7 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
public void allocateFromEndUntil(LocalDate start) {
|
||||
Validate.notNull(start);
|
||||
Validate.isTrue(start.isBefore(task.getEndAsLocalDate()));
|
||||
for (HoursModification each : hoursModifications) {
|
||||
for (EffortModification each : hoursModifications) {
|
||||
each.allocateFromEndUntil(start);
|
||||
}
|
||||
|
||||
|
|
@ -699,20 +699,20 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
});
|
||||
}
|
||||
|
||||
public final HoursModification asHoursModification(){
|
||||
return visit(this, new IVisitor<HoursModification>() {
|
||||
public final EffortModification asHoursModification(){
|
||||
return visit(this, new IVisitor<EffortModification>() {
|
||||
|
||||
@Override
|
||||
public HoursModification on(GenericResourceAllocation genericAllocation) {
|
||||
return HoursModification.create(genericAllocation,
|
||||
getEffortForReassignation().roundToHours(),
|
||||
public EffortModification on(GenericResourceAllocation genericAllocation) {
|
||||
return EffortModification.create(genericAllocation,
|
||||
getEffortForReassignation(),
|
||||
getAssociatedResources());
|
||||
}
|
||||
|
||||
@Override
|
||||
public HoursModification on(SpecificResourceAllocation specificAllocation) {
|
||||
return HoursModification.create(specificAllocation,
|
||||
getEffortForReassignation().roundToHours());
|
||||
public EffortModification on(SpecificResourceAllocation specificAllocation) {
|
||||
return EffortModification.create(specificAllocation,
|
||||
getEffortForReassignation());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ import org.navalplanner.business.orders.entities.TaskSource;
|
|||
import org.navalplanner.business.planner.entities.DerivedAllocationGenerator.IWorkerFinder;
|
||||
import org.navalplanner.business.planner.entities.ResourceAllocation.Direction;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.AllocationModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.HoursModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.EffortModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.ResourcesPerDayModification;
|
||||
import org.navalplanner.business.planner.entities.consolidations.Consolidation;
|
||||
import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueueElement;
|
||||
|
|
@ -477,7 +477,7 @@ public class Task extends TaskElement implements ITaskPositionConstrained {
|
|||
public abstract ModificationsResult<ResourcesPerDayModification> getResourcesPerDayModified(
|
||||
List<ResourceAllocation<?>> allocations);
|
||||
|
||||
public abstract ModificationsResult<HoursModification> getHoursModified(
|
||||
public abstract ModificationsResult<EffortModification> getHoursModified(
|
||||
List<ResourceAllocation<?>> allocations);
|
||||
|
||||
}
|
||||
|
|
@ -490,9 +490,9 @@ public class Task extends TaskElement implements ITaskPositionConstrained {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ModificationsResult<HoursModification> getHoursModified(
|
||||
public ModificationsResult<EffortModification> getHoursModified(
|
||||
List<ResourceAllocation<?>> allocations) {
|
||||
List<HoursModification> canBeModified = HoursModification
|
||||
List<EffortModification> canBeModified = EffortModification
|
||||
.fromExistent(allocations, searcher);
|
||||
return ModificationsResult.create(allocations, canBeModified);
|
||||
}
|
||||
|
|
@ -515,9 +515,9 @@ public class Task extends TaskElement implements ITaskPositionConstrained {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ModificationsResult<HoursModification> getHoursModified(
|
||||
public ModificationsResult<EffortModification> getHoursModified(
|
||||
List<ResourceAllocation<?>> allocations) {
|
||||
List<HoursModification> canBeModified = HoursModification
|
||||
List<EffortModification> canBeModified = EffortModification
|
||||
.withNewResources(allocations, searcher);
|
||||
return ModificationsResult.create(allocations, canBeModified);
|
||||
}
|
||||
|
|
@ -810,10 +810,10 @@ public class Task extends TaskElement implements ITaskPositionConstrained {
|
|||
}
|
||||
break;
|
||||
case RESOURCES_PER_DAY:
|
||||
ModificationsResult<HoursModification> hoursModificationResult = strategy
|
||||
ModificationsResult<EffortModification> hoursModificationResult = strategy
|
||||
.getHoursModified(toBeModified);
|
||||
markAsUnsatisfied(hoursModificationResult.getNoLongerValid());
|
||||
List<HoursModification> hoursModified = hoursModificationResult
|
||||
List<EffortModification> hoursModified = hoursModificationResult
|
||||
.getBeingModified();
|
||||
if (hoursModified.isEmpty()) {
|
||||
LOG.warn("all allocations for task " + this + " can't be used");
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ public abstract class AllocationModification {
|
|||
|
||||
public T onResourcesPerDay(ResourcesPerDayModification modification);
|
||||
|
||||
public T onHours(HoursModification modification);
|
||||
public T onHours(EffortModification modification);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -115,7 +115,7 @@ public abstract class AllocationModification {
|
|||
ResourcesPerDayModification r = (ResourcesPerDayModification) this;
|
||||
return visitor.onResourcesPerDay(r);
|
||||
} else {
|
||||
HoursModification h = (HoursModification) this;
|
||||
EffortModification h = (EffortModification) this;
|
||||
return visitor.onHours(h);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,20 +32,21 @@ import org.navalplanner.business.planner.entities.ResourceAllocation;
|
|||
import org.navalplanner.business.planner.entities.SpecificResourceAllocation;
|
||||
import org.navalplanner.business.resources.daos.IResourcesSearcher;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
import org.navalplanner.business.workingday.EffortDuration;
|
||||
|
||||
/**
|
||||
* @author Óscar González Fernández <ogonzalez@igalia.com>
|
||||
*
|
||||
*/
|
||||
public abstract class HoursModification extends AllocationModification {
|
||||
public abstract class EffortModification extends AllocationModification {
|
||||
|
||||
private static class OnGenericAllocation extends HoursModification {
|
||||
private static class OnGenericAllocation extends EffortModification {
|
||||
|
||||
private final GenericResourceAllocation genericAllocation;
|
||||
|
||||
private OnGenericAllocation(GenericResourceAllocation beingModified,
|
||||
Collection<? extends Resource> resources, int hours) {
|
||||
super(beingModified, resources, hours);
|
||||
Collection<? extends Resource> resources, EffortDuration effort) {
|
||||
super(beingModified, resources, effort);
|
||||
genericAllocation = beingModified;
|
||||
}
|
||||
|
||||
|
|
@ -53,78 +54,78 @@ public abstract class HoursModification extends AllocationModification {
|
|||
public void allocateUntil(LocalDate end) {
|
||||
genericAllocation.forResources(getResources())
|
||||
.fromStartUntil(end)
|
||||
.allocateHours(getHours());
|
||||
.allocate(getEffort());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void allocateFromEndUntil(LocalDate start) {
|
||||
genericAllocation.forResources(getResources())
|
||||
.fromEndUntil(start)
|
||||
.allocateHours(getHours());
|
||||
.allocate(getEffort());
|
||||
}
|
||||
}
|
||||
|
||||
private static class OnSpecificAllocation extends HoursModification {
|
||||
private static class OnSpecificAllocation extends EffortModification {
|
||||
|
||||
private final SpecificResourceAllocation specific;
|
||||
|
||||
private OnSpecificAllocation(SpecificResourceAllocation beingModified,
|
||||
Collection<? extends Resource> resources, int hours) {
|
||||
super(beingModified, resources, hours);
|
||||
Collection<? extends Resource> resources, EffortDuration effort) {
|
||||
super(beingModified, resources, effort);
|
||||
specific = beingModified;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void allocateUntil(LocalDate end) {
|
||||
specific.fromStartUntil(end)
|
||||
.allocateHours(getHours());
|
||||
specific.fromStartUntil(end).allocate(getEffort());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void allocateFromEndUntil(LocalDate start) {
|
||||
specific.fromEndUntil(start)
|
||||
.allocateHours(getHours());
|
||||
specific.fromEndUntil(start).allocate(getEffort());
|
||||
}
|
||||
}
|
||||
|
||||
public static HoursModification create(
|
||||
GenericResourceAllocation resourceAllocation, int hours,
|
||||
public static EffortModification create(
|
||||
GenericResourceAllocation resourceAllocation,
|
||||
EffortDuration effort,
|
||||
List<Resource> resources) {
|
||||
return new OnGenericAllocation(resourceAllocation, resources, hours);
|
||||
return new OnGenericAllocation(resourceAllocation, resources, effort);
|
||||
}
|
||||
|
||||
public static HoursModification create(
|
||||
SpecificResourceAllocation resourceAllocation, int hours) {
|
||||
return new OnSpecificAllocation(resourceAllocation, Collections
|
||||
.singletonList(resourceAllocation.getResource()), hours);
|
||||
public static EffortModification create(
|
||||
SpecificResourceAllocation resourceAllocation, EffortDuration effort) {
|
||||
return new OnSpecificAllocation(resourceAllocation,
|
||||
Collections.singletonList(resourceAllocation.getResource()),
|
||||
effort);
|
||||
}
|
||||
|
||||
public static List<HoursModification> fromExistent(
|
||||
public static List<EffortModification> fromExistent(
|
||||
Collection<? extends ResourceAllocation<?>> allocations,
|
||||
IResourcesSearcher searcher) {
|
||||
List<HoursModification> result = new ArrayList<HoursModification>();
|
||||
List<EffortModification> result = new ArrayList<EffortModification>();
|
||||
for (ResourceAllocation<?> resourceAllocation : allocations) {
|
||||
result.add(resourceAllocation.asHoursModification());
|
||||
}
|
||||
return ensureNoOneWithoutAssociatedResources(result, searcher);
|
||||
}
|
||||
|
||||
public static List<HoursModification> withNewResources(
|
||||
public static List<EffortModification> withNewResources(
|
||||
List<ResourceAllocation<?>> allocations, IResourcesSearcher searcher) {
|
||||
List<HoursModification> result = fromExistent(allocations, searcher);
|
||||
for (HoursModification each : result) {
|
||||
List<EffortModification> result = fromExistent(allocations, searcher);
|
||||
for (EffortModification each : result) {
|
||||
each.withNewResources(searcher);
|
||||
}
|
||||
return ensureNoOneWithoutAssociatedResources(result, searcher);
|
||||
}
|
||||
|
||||
private final int hours;
|
||||
private final EffortDuration effort;
|
||||
|
||||
private HoursModification(ResourceAllocation<?> beingModified,
|
||||
Collection<? extends Resource> resources, int hours) {
|
||||
private EffortModification(ResourceAllocation<?> beingModified,
|
||||
Collection<? extends Resource> resources, EffortDuration effort) {
|
||||
super(beingModified, resources);
|
||||
Validate.isTrue(hours >= 0);
|
||||
this.hours = hours;
|
||||
Validate.notNull(effort);
|
||||
this.effort = effort;
|
||||
}
|
||||
|
||||
protected LocalDate getTaskStart() {
|
||||
|
|
@ -137,11 +138,11 @@ public abstract class HoursModification extends AllocationModification {
|
|||
|
||||
@Override
|
||||
public boolean satisfiesModificationRequested() {
|
||||
return hours == getBeingModified().getNonConsolidatedHours();
|
||||
return effort.compareTo(getBeingModified().getNonConsolidatedEffort()) == 0;
|
||||
}
|
||||
|
||||
public int getHours() {
|
||||
return hours;
|
||||
public EffortDuration getEffort() {
|
||||
return effort;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -49,7 +49,7 @@ import org.navalplanner.business.planner.entities.Task;
|
|||
import org.navalplanner.business.planner.entities.Task.ModifiedAllocation;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.AllocationModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.AllocationModification.IByType;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.HoursModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.EffortModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.ResourcesPerDayModification;
|
||||
import org.navalplanner.business.resources.daos.IResourcesSearcher;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
|
|
@ -192,12 +192,12 @@ public abstract class AllocationRow {
|
|||
return null;
|
||||
}
|
||||
|
||||
public static List<HoursModification> createHoursModificationsAndAssociate(
|
||||
public static List<EffortModification> createHoursModificationsAndAssociate(
|
||||
Task task, List<AllocationRow> currentRows,
|
||||
Collection<? extends ResourceAllocation<?>> requestedToRemove) {
|
||||
List<HoursModification> result = new ArrayList<HoursModification>();
|
||||
List<EffortModification> result = new ArrayList<EffortModification>();
|
||||
for (AllocationRow each : currentRows) {
|
||||
HoursModification hoursModification = each.toHoursModification(
|
||||
EffortModification hoursModification = each.toHoursModification(
|
||||
task, requestedToRemove);
|
||||
result.add(hoursModification);
|
||||
each.setTemporal(hoursModification.getBeingModified());
|
||||
|
|
@ -341,7 +341,7 @@ public abstract class AllocationRow {
|
|||
Task task,
|
||||
Collection<? extends ResourceAllocation<?>> requestedToRemove);
|
||||
|
||||
public abstract HoursModification toHoursModification(Task task,
|
||||
public abstract EffortModification toHoursModification(Task task,
|
||||
Collection<? extends ResourceAllocation<?>> requestedToRemove);
|
||||
|
||||
public boolean isCreating() {
|
||||
|
|
@ -512,10 +512,10 @@ public abstract class AllocationRow {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Void onHours(HoursModification modification) {
|
||||
int goal = modification.getHours();
|
||||
public Void onHours(EffortModification modification) {
|
||||
EffortDuration goal = modification.getEffort();
|
||||
Clients.response(new AuWrongValue(effortInput, _(
|
||||
"{0} hours cannot be fulfilled", goal + "")));
|
||||
"{0} cannot be fulfilled", goal.toFormattedString())));
|
||||
|
||||
return null;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ import org.navalplanner.business.planner.entities.ResourceAllocation.Allocations
|
|||
import org.navalplanner.business.planner.entities.ResourceAllocation.Direction;
|
||||
import org.navalplanner.business.planner.entities.Task;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.AllocationModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.HoursModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.EffortModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.ResourcesPerDayModification;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
|
|
@ -256,7 +256,7 @@ public class AllocationRowsHandler {
|
|||
createDerived();
|
||||
AllocationResult result = createResult();
|
||||
if (AllocationModification.allFullfiled(AllocationModification
|
||||
.ofType(HoursModification.class, modificationsDone))) {
|
||||
.ofType(EffortModification.class, modificationsDone))) {
|
||||
return Flagged.justValue(result);
|
||||
} else {
|
||||
return Flagged.withFlags(result,
|
||||
|
|
@ -327,8 +327,8 @@ public class AllocationRowsHandler {
|
|||
return AllocationRow.find(currentRows, resourceAllocation);
|
||||
}
|
||||
|
||||
private List<HoursModification> calculateResourcesPerDayAllocation() {
|
||||
List<HoursModification> hours = AllocationRow
|
||||
private List<EffortModification> calculateResourcesPerDayAllocation() {
|
||||
List<EffortModification> hours = AllocationRow
|
||||
.createHoursModificationsAndAssociate(task, currentRows,
|
||||
requestedToRemove);
|
||||
if (isForwardsAllocation()) {
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ import org.navalplanner.business.planner.entities.CalculatedValue;
|
|||
import org.navalplanner.business.planner.entities.GenericResourceAllocation;
|
||||
import org.navalplanner.business.planner.entities.ResourceAllocation;
|
||||
import org.navalplanner.business.planner.entities.Task;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.HoursModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.EffortModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.ResourcesPerDayModification;
|
||||
import org.navalplanner.business.resources.daos.IResourcesSearcher;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
|
|
@ -148,11 +148,11 @@ public class GenericAllocationRow extends AllocationRow {
|
|||
}
|
||||
|
||||
@Override
|
||||
public HoursModification toHoursModification(Task task,
|
||||
public EffortModification toHoursModification(Task task,
|
||||
Collection<? extends ResourceAllocation<?>> requestedToRemove) {
|
||||
return HoursModification.create(
|
||||
return EffortModification.create(
|
||||
createGenericAllocation(task, requestedToRemove),
|
||||
getEffortFromInput().roundToHours(), resources);
|
||||
getEffortFromInput(), resources);
|
||||
}
|
||||
|
||||
public boolean hasSameCriterionsAndType(Set<Criterion> criterions,
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ import org.navalplanner.business.planner.entities.CalculatedValue;
|
|||
import org.navalplanner.business.planner.entities.ResourceAllocation;
|
||||
import org.navalplanner.business.planner.entities.SpecificResourceAllocation;
|
||||
import org.navalplanner.business.planner.entities.Task;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.HoursModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.EffortModification;
|
||||
import org.navalplanner.business.planner.entities.allocationalgorithms.ResourcesPerDayModification;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
import org.navalplanner.business.resources.entities.ResourceEnum;
|
||||
|
|
@ -132,9 +132,10 @@ public class SpecificAllocationRow extends AllocationRow {
|
|||
}
|
||||
|
||||
@Override
|
||||
public HoursModification toHoursModification(Task task,
|
||||
public EffortModification toHoursModification(Task task,
|
||||
Collection<? extends ResourceAllocation<?>> requestedToRemove) {
|
||||
return HoursModification.create(createSpecific(task), getEffortFromInput().getHours());
|
||||
return EffortModification.create(createSpecific(task),
|
||||
getEffortFromInput());
|
||||
}
|
||||
|
||||
public Resource getResource() {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue