Rename originalTotalAssignment to intendedTotalAssignment and use EffortDuration instead of hours

FEA: ItEr74S04BugFixing
This commit is contained in:
Óscar González Fernández 2011-04-29 16:40:51 +02:00
parent 2a0ee6bb54
commit 343bd08d64
5 changed files with 42 additions and 26 deletions

View file

@ -43,7 +43,6 @@ import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.Validate;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.validator.Min;
import org.hibernate.validator.NotNull;
import org.joda.time.LocalDate;
import org.navalplanner.business.calendars.entities.AvailabilityTimeLine;
@ -478,7 +477,8 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
@OnCopy(Strategy.SHARE_COLLECTION_ELEMENTS)
private Set<LimitingResourceQueueElement> limitingResourceQueueElements = new HashSet<LimitingResourceQueueElement>();
private int originalTotalAssignment = 0;
@OnCopy(Strategy.SHARE)
private EffortDuration intendedTotalAssignment = zero();
private IOnDayAssignmentRemoval dayAssignmenteRemoval = new DoNothing();
@ -614,7 +614,7 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
}
if ((task.getConsolidation() == null)
|| (task.getConsolidation().getConsolidatedValues().isEmpty())) {
originalTotalAssignment = getNonConsolidatedHours();
intendedTotalAssignment = getNonConsolidatedEffort();
} else {
BigDecimal lastConslidation = task.getConsolidation()
.getConsolidatedValues().last().getValue();
@ -623,18 +623,19 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
new BigDecimal(100), RoundingMode.DOWN));
if (unconsolitedPercentage.setScale(2).equals(
BigDecimal.ZERO.setScale(2))) {
originalTotalAssignment = getConsolidatedHours();
intendedTotalAssignment = getConsolidatedEffort();
} else {
originalTotalAssignment = new BigDecimal(
getNonConsolidatedHours()).divide(
unconsolitedPercentage, RoundingMode.DOWN).intValue();
intendedTotalAssignment = EffortDuration
.seconds(new BigDecimal(getNonConsolidatedEffort()
.getSeconds()).divide(unconsolitedPercentage,
RoundingMode.DOWN).intValue());
}
}
}
@Min(0)
public int getOriginalTotalAssigment() {
return originalTotalAssignment;
@NotNull
public EffortDuration getIntendedTotalAssigment() {
return intendedTotalAssignment;
}
public interface IVisitor<T> {
@ -1325,7 +1326,7 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
getUnorderedFor(scenario), getIntraDayStartDateFor(scenario),
getIntraDayEndFor(scenario));
copy.resourcesPerDay = resourcesPerDay;
copy.originalTotalAssignment = originalTotalAssignment;
copy.intendedTotalAssignment = intendedTotalAssignment;
copy.task = task;
copy.assignmentFunction = assignmentFunction;
copy.intendedResourcesPerDay = intendedResourcesPerDay;
@ -1394,8 +1395,8 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
return DayAssignment.sum(getAssignments());
}
protected int getIntendedHours() {
return originalTotalAssignment;
protected EffortDuration getIntendedEffort() {
return intendedTotalAssignment;
}
@OnCopy(Strategy.IGNORE)
@ -1734,7 +1735,7 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
if (isSatisfied()) {
return getNonConsolidatedEffort();
} else {
return hours(getIntendedHours());
return getIntendedEffort();
}
}

View file

@ -129,4 +129,15 @@
<sql>update resource_allocation SET intended_resources_per_day = resources_per_day</sql>
</changeSet>
<changeSet id="change-original-total-assignment-to-use-effort-duration" author="ogonzalez">
<comment>rename original_total_assignment to intended_total_assignment and now it's interpreted as an EffortDuration</comment>
<addColumn tableName="resource_allocation">
<column name="intended_total_assignment" type="INTEGER" />
</addColumn>
<addDefaultValue tableName="resource_allocation" columnName="intended_total_assignment"
defaultValueNumeric="0" />
<sql>UPDATE resource_allocation SET intended_total_assignment = 3600 * original_total_assignment WHERE original_total_assignment IS NOT NULL</sql>
<dropColumn tableName="resource_allocation" columnName="original_total_assignment"/>
</changeSet>
</databaseChangeLog>

View file

@ -20,8 +20,9 @@
<property name="intendedTotalHours" column="intended_total_hours" />
<property name="originalTotalAssignment" access="field"
column="original_total_assignment" />
<property name="intendedTotalAssignment" access="field"
column="intended_total_assignment"
type="org.navalplanner.business.workingday.hibernate.EffortDurationType"/>
<!-- Indexed -->
<many-to-one class="Task" name="task" column="task" index="idx_resource_allocation_on_task"/>

View file

@ -21,7 +21,6 @@
package org.navalplanner.web.planner.allocation;
import static org.navalplanner.business.workingday.EffortDuration.hours;
import static org.navalplanner.business.workingday.EffortDuration.zero;
import static org.navalplanner.web.I18nHelper._;
@ -592,10 +591,10 @@ public abstract class AllocationRow {
public EffortDuration getOriginalEffort() {
if (temporal != null) {
return hours(temporal.getOriginalTotalAssigment());
return temporal.getIntendedTotalAssigment();
}
if (origin != null) {
return hours(origin.getOriginalTotalAssigment());
return origin.getIntendedTotalAssigment();
}
return zero();
}

View file

@ -40,17 +40,18 @@ import org.navalplanner.business.orders.entities.OrderElement;
import org.navalplanner.business.planner.daos.ITaskElementDAO;
import org.navalplanner.business.planner.entities.DayAssignment;
import org.navalplanner.business.planner.entities.ResourceAllocation;
import org.navalplanner.business.planner.entities.ResourceAllocation.AllocationsSpecified;
import org.navalplanner.business.planner.entities.ResourceAllocation.DetachDayAssignmentOnRemoval;
import org.navalplanner.business.planner.entities.SpecificResourceAllocation;
import org.navalplanner.business.planner.entities.Task;
import org.navalplanner.business.planner.entities.TaskElement;
import org.navalplanner.business.planner.entities.ResourceAllocation.AllocationsSpecified;
import org.navalplanner.business.planner.entities.ResourceAllocation.DetachDayAssignmentOnRemoval;
import org.navalplanner.business.planner.entities.consolidations.CalculatedConsolidatedValue;
import org.navalplanner.business.planner.entities.consolidations.CalculatedConsolidation;
import org.navalplanner.business.planner.entities.consolidations.ConsolidatedValue;
import org.navalplanner.business.planner.entities.consolidations.Consolidation;
import org.navalplanner.business.planner.entities.consolidations.NonCalculatedConsolidatedValue;
import org.navalplanner.business.planner.entities.consolidations.NonCalculatedConsolidation;
import org.navalplanner.business.workingday.EffortDuration;
import org.navalplanner.business.workingday.IntraDayDate;
import org.navalplanner.web.planner.order.PlanningState;
import org.springframework.beans.factory.annotation.Autowired;
@ -226,14 +227,17 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel {
LocalDate endExclusive = LocalDate.fromDateFields(task
.getEndDate());
Integer pendingHours = BigDecimal.ONE.subtract(
int pendingSeconds = BigDecimal.ONE
.subtract(
value.getValue().setScale(2).divide(
new BigDecimal(100), RoundingMode.DOWN))
.multiply(
new BigDecimal(resourceAllocation
.getOriginalTotalAssigment()))
.getIntendedTotalAssigment()
.getSeconds()))
.intValue();
int pendingHours = EffortDuration.seconds(pendingSeconds)
.roundToHours();
resourceAllocation
.setOnDayAssignmentRemoval(new DetachDayAssignmentOnRemoval());
@ -329,8 +333,8 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel {
for (ResourceAllocation<?> resourceAllocation : allResourceAllocations) {
resourceAllocation
.setOnDayAssignmentRemoval(new DetachDayAssignmentOnRemoval());
Integer pendingHours = resourceAllocation
.getOriginalTotalAssigment();
int pendingHours = resourceAllocation
.getIntendedTotalAssigment().roundToHours();
if (!consolidation.getConsolidatedValues().isEmpty()) {
BigDecimal lastConslidation = task.getConsolidation()
.getConsolidatedValues().last().getValue();