From a24651e0dfa56a5008a83e7a52cd1f550f19e75d Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Thu, 27 May 2010 12:57:50 +0200 Subject: [PATCH] ItEr58S19CUDesconsolidacion: Storing end date of task in ConsolidateValue entities, in order to keep the task size when removing consolidations. --- .../CalculatedConsolidatedValue.java | 9 +++--- .../consolidations/ConsolidatedValue.java | 13 ++++++-- .../NonCalculatedConsolidatedValue.java | 19 +++++++----- .../entities/AdvanceConsolidations.hbm.xml | 1 + .../AdvanceConsolidationModel.java | 30 +++++++++++++++---- 5 files changed, 51 insertions(+), 21 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/CalculatedConsolidatedValue.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/CalculatedConsolidatedValue.java index de01412b5..dd9772786 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/CalculatedConsolidatedValue.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/CalculatedConsolidatedValue.java @@ -37,12 +37,13 @@ public class CalculatedConsolidatedValue extends ConsolidatedValue { } public static CalculatedConsolidatedValue create(LocalDate date, - BigDecimal value) { - return create(new CalculatedConsolidatedValue(date, value)); + BigDecimal value, LocalDate taskEndDate) { + return create(new CalculatedConsolidatedValue(date, value, taskEndDate)); } - protected CalculatedConsolidatedValue(LocalDate date, BigDecimal value) { - super(date, value); + protected CalculatedConsolidatedValue(LocalDate date, BigDecimal value, + LocalDate taskEndDate) { + super(date, value, taskEndDate); } protected CalculatedConsolidatedValue() { diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/ConsolidatedValue.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/ConsolidatedValue.java index 9fd50659f..d73b63257 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/ConsolidatedValue.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/ConsolidatedValue.java @@ -22,6 +22,7 @@ package org.navalplanner.business.planner.entities.consolidations; import java.math.BigDecimal; +import org.hibernate.validator.NotNull; import org.joda.time.LocalDate; import org.navalplanner.business.common.BaseEntity; @@ -33,6 +34,7 @@ public abstract class ConsolidatedValue extends BaseEntity { private LocalDate date; private BigDecimal value; + private LocalDate taskEndDate; public abstract boolean isCalculated(); @@ -40,11 +42,11 @@ public abstract class ConsolidatedValue extends BaseEntity { } - protected ConsolidatedValue( - LocalDate date, - BigDecimal value) { + protected ConsolidatedValue(LocalDate date, BigDecimal value, + LocalDate taskEndDate) { this.date = date; this.value = value; + this.taskEndDate = taskEndDate; } public void setValue(BigDecimal value) { @@ -63,4 +65,9 @@ public abstract class ConsolidatedValue extends BaseEntity { return date; } + @NotNull(message = "task end date not specified") + public LocalDate getTaskEndDate() { + return taskEndDate; + } + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/NonCalculatedConsolidatedValue.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/NonCalculatedConsolidatedValue.java index 4ecfc7b71..2dfd3d0a2 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/NonCalculatedConsolidatedValue.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/NonCalculatedConsolidatedValue.java @@ -40,24 +40,27 @@ public class NonCalculatedConsolidatedValue extends ConsolidatedValue { } public static NonCalculatedConsolidatedValue create(LocalDate date, - BigDecimal value) { - return create(new NonCalculatedConsolidatedValue(date, value)); + BigDecimal value, LocalDate taskEndDate) { + return create(new NonCalculatedConsolidatedValue(date, value, + taskEndDate)); } public static NonCalculatedConsolidatedValue create(LocalDate date, - BigDecimal value, AdvanceMeasurement advanceMeasurement) { + BigDecimal value, AdvanceMeasurement advanceMeasurement, + LocalDate taskEndDate) { return create(new NonCalculatedConsolidatedValue(date, value, - advanceMeasurement)); + advanceMeasurement, taskEndDate)); } protected NonCalculatedConsolidatedValue(LocalDate date, BigDecimal value, - AdvanceMeasurement advanceMeasurement) { - this(date, value); + AdvanceMeasurement advanceMeasurement, LocalDate taskEndDate) { + this(date, value, taskEndDate); this.advanceMeasurement = advanceMeasurement; } - protected NonCalculatedConsolidatedValue(LocalDate date, BigDecimal value) { - super(date, value); + protected NonCalculatedConsolidatedValue(LocalDate date, BigDecimal value, + LocalDate taskEndDate) { + super(date, value, taskEndDate); } protected NonCalculatedConsolidatedValue() { diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/AdvanceConsolidations.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/AdvanceConsolidations.hbm.xml index 9e4c9aa87..6385c4abe 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/AdvanceConsolidations.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/AdvanceConsolidations.hbm.xml @@ -13,6 +13,7 @@ + diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationModel.java index 6d1e98660..1a395f5a8 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/consolidations/AdvanceConsolidationModel.java @@ -256,11 +256,13 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel { if (consolidation.isCalculated()) { return CalculatedConsolidatedValue.create(LocalDate - .fromDateFields(dto.getDate()), dto.getValue()); + .fromDateFields(dto.getDate()), dto.getValue(), + LocalDate.fromDateFields(task.getEndDate())); } else { return NonCalculatedConsolidatedValue.create(LocalDate - .fromDateFields(dto.getDate()), dto.getValue(), dto - .getAdvanceMeasurement()); + .fromDateFields(dto.getDate()), dto.getValue(), dto + .getAdvanceMeasurement(), LocalDate.fromDateFields(task + .getEndDate())); } } return null; @@ -269,6 +271,14 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel { private void deleteConsolidationIfIsNeeded(AdvanceConsolidationDTO dto) { if (dto.getConsolidatedValue() != null) { if (consolidation != null && task != null) { + LocalDate taskEndDate = LocalDate.fromDateFields(task + .getEndDate()); + LocalDate endExclusive = taskEndDate; + if (!consolidation.getConsolidatedValues().isEmpty()) { + endExclusive = consolidation.getConsolidatedValues().last() + .getTaskEndDate(); + } + if (!consolidation.isCalculated()) { ((NonCalculatedConsolidation) consolidation) .getNonCalculatedConsolidatedValues().remove( @@ -288,9 +298,6 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel { } } - LocalDate endExclusive = LocalDate.fromDateFields(task - .getEndDate()); - Set> allResourceAllocations = task .getAllResourceAllocations(); for (ResourceAllocation resourceAllocation : allResourceAllocations) { @@ -306,6 +313,17 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel { RoundingMode.DOWN)).multiply( new BigDecimal(pendingHours)).intValue(); } + if (!taskEndDate.equals(endExclusive)) { + if (taskEndDate.compareTo(endExclusive) <= 0) { + reassign(resourceAllocation, taskEndDate, + endExclusive, 0); + } else { + reassign(resourceAllocation, endExclusive, + taskEndDate, 0); + } + task.setEndDate(endExclusive.toDateTimeAtStartOfDay() + .toDate()); + } reassign(resourceAllocation, firstDayNotConsolidated, endExclusive, pendingHours); }