diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java index ab80b600c..fe347391d 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java @@ -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 extends } public static HoursAllocationSpecified allocatingHours( - List hoursModifications) { + List hoursModifications) { return new HoursAllocationSpecified(hoursModifications); } @@ -425,11 +425,11 @@ public abstract class ResourceAllocation extends */ public static class HoursAllocationSpecified { - private final List hoursModifications; + private final List hoursModifications; private Task task; - public HoursAllocationSpecified(List hoursModifications) { + public HoursAllocationSpecified(List hoursModifications) { Validate.noNullElements(hoursModifications); Validate.isTrue(!hoursModifications.isEmpty()); this.hoursModifications = hoursModifications; @@ -444,7 +444,7 @@ public abstract class ResourceAllocation 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 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 extends }); } - public final HoursModification asHoursModification(){ - return visit(this, new IVisitor() { + public final EffortModification asHoursModification(){ + return visit(this, new IVisitor() { @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()); } }); } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java index fcf6ff7bb..93d33d1bb 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java @@ -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 getResourcesPerDayModified( List> allocations); - public abstract ModificationsResult getHoursModified( + public abstract ModificationsResult getHoursModified( List> allocations); } @@ -490,9 +490,9 @@ public class Task extends TaskElement implements ITaskPositionConstrained { } @Override - public ModificationsResult getHoursModified( + public ModificationsResult getHoursModified( List> allocations) { - List canBeModified = HoursModification + List canBeModified = EffortModification .fromExistent(allocations, searcher); return ModificationsResult.create(allocations, canBeModified); } @@ -515,9 +515,9 @@ public class Task extends TaskElement implements ITaskPositionConstrained { } @Override - public ModificationsResult getHoursModified( + public ModificationsResult getHoursModified( List> allocations) { - List canBeModified = HoursModification + List 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 hoursModificationResult = strategy + ModificationsResult hoursModificationResult = strategy .getHoursModified(toBeModified); markAsUnsatisfied(hoursModificationResult.getNoLongerValid()); - List hoursModified = hoursModificationResult + List hoursModified = hoursModificationResult .getBeingModified(); if (hoursModified.isEmpty()) { LOG.warn("all allocations for task " + this + " can't be used"); diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/AllocationModification.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/AllocationModification.java index ea31a4592..57955bc2f 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/AllocationModification.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/AllocationModification.java @@ -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); } } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/HoursModification.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/EffortModification.java similarity index 64% rename from navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/HoursModification.java rename to navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/EffortModification.java index 1fb5a7822..0ed54b40c 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/HoursModification.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/EffortModification.java @@ -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 * */ -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 resources, int hours) { - super(beingModified, resources, hours); + Collection 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 resources, int hours) { - super(beingModified, resources, hours); + Collection 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 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 fromExistent( + public static List fromExistent( Collection> allocations, IResourcesSearcher searcher) { - List result = new ArrayList(); + List result = new ArrayList(); for (ResourceAllocation resourceAllocation : allocations) { result.add(resourceAllocation.asHoursModification()); } return ensureNoOneWithoutAssociatedResources(result, searcher); } - public static List withNewResources( + public static List withNewResources( List> allocations, IResourcesSearcher searcher) { - List result = fromExistent(allocations, searcher); - for (HoursModification each : result) { + List 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 resources, int hours) { + private EffortModification(ResourceAllocation beingModified, + Collection 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; } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java index 9f4ed5499..aed7422f6 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java @@ -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 createHoursModificationsAndAssociate( + public static List createHoursModificationsAndAssociate( Task task, List currentRows, Collection> requestedToRemove) { - List result = new ArrayList(); + List result = new ArrayList(); 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> requestedToRemove); - public abstract HoursModification toHoursModification(Task task, + public abstract EffortModification toHoursModification(Task task, Collection> 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; } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRowsHandler.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRowsHandler.java index 266bdd9c6..f832537f3 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRowsHandler.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRowsHandler.java @@ -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 calculateResourcesPerDayAllocation() { - List hours = AllocationRow + private List calculateResourcesPerDayAllocation() { + List hours = AllocationRow .createHoursModificationsAndAssociate(task, currentRows, requestedToRemove); if (isForwardsAllocation()) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/GenericAllocationRow.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/GenericAllocationRow.java index 5dc2a69a4..ae6675c1c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/GenericAllocationRow.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/GenericAllocationRow.java @@ -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> requestedToRemove) { - return HoursModification.create( + return EffortModification.create( createGenericAllocation(task, requestedToRemove), - getEffortFromInput().roundToHours(), resources); + getEffortFromInput(), resources); } public boolean hasSameCriterionsAndType(Set criterions, diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/SpecificAllocationRow.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/SpecificAllocationRow.java index 899ba3b8d..89e03497d 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/SpecificAllocationRow.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/SpecificAllocationRow.java @@ -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> requestedToRemove) { - return HoursModification.create(createSpecific(task), getEffortFromInput().getHours()); + return EffortModification.create(createSpecific(task), + getEffortFromInput()); } public Resource getResource() {