From f9d080c082e96fb6bbf00b0ef96936c0b064048c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 14 Jun 2010 18:25:22 +0200 Subject: [PATCH] ItEr59S04ValidacionEProbasFuncionaisItEr58S04: [Bug #516] Fix bug. Adding metada for copying consolidations. --- .../CalculatedConsolidatedValue.java | 6 +++++- .../CalculatedConsolidation.java | 18 +++++++++++++++++- .../NonCalculatedConsolidatedValue.java | 9 ++++++++- .../NonCalculatedConsolidation.java | 18 +++++++++++++++++- .../business/util/deepcopy/DeepCopy.java | 17 ++++++++++++++--- 5 files changed, 61 insertions(+), 7 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 dd9772786..bf0316c76 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 @@ -23,6 +23,7 @@ package org.navalplanner.business.planner.entities.consolidations; import java.math.BigDecimal; import org.joda.time.LocalDate; +import org.navalplanner.business.util.deepcopy.DeepCopy; /** * @author Susana Montes Pedreira @@ -46,7 +47,10 @@ public class CalculatedConsolidatedValue extends ConsolidatedValue { super(date, value, taskEndDate); } - protected CalculatedConsolidatedValue() { + /** + * Constructor for {@link DeepCopy}. DO NOT USE! + */ + public CalculatedConsolidatedValue() { } public void setConsolidation(CalculatedConsolidation consolidation) { diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/CalculatedConsolidation.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/CalculatedConsolidation.java index e0e6b2d57..878f9062e 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/CalculatedConsolidation.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/CalculatedConsolidation.java @@ -25,6 +25,10 @@ import java.util.TreeSet; import org.navalplanner.business.advance.entities.IndirectAdvanceAssignment; import org.navalplanner.business.planner.entities.Task; +import org.navalplanner.business.util.deepcopy.AfterCopy; +import org.navalplanner.business.util.deepcopy.DeepCopy; +import org.navalplanner.business.util.deepcopy.OnCopy; +import org.navalplanner.business.util.deepcopy.Strategy; /** * @author Susana Montes Pedreira @@ -35,6 +39,15 @@ public class CalculatedConsolidation extends Consolidation { private SortedSet consolidatedValues = new TreeSet( new ConsolidatedValueComparator()); + @AfterCopy + private void instantiateConsolidatedValuesWithComparator() { + SortedSet previous = consolidatedValues; + consolidatedValues = new TreeSet( + new ConsolidatedValueComparator()); + consolidatedValues.addAll(previous); + } + + @OnCopy(Strategy.SHARE) private IndirectAdvanceAssignment indirectAdvanceAssignment; public static CalculatedConsolidation create(Task task, @@ -51,7 +64,10 @@ public class CalculatedConsolidation extends Consolidation { consolidatedValues)); } - protected CalculatedConsolidation() { + /** + * Constructor for {@link DeepCopy}. DO NOT USE! + */ + public CalculatedConsolidation() { } 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 2dfd3d0a2..a7acfc1f4 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 @@ -24,6 +24,9 @@ import java.math.BigDecimal; import org.joda.time.LocalDate; import org.navalplanner.business.advance.entities.AdvanceMeasurement; +import org.navalplanner.business.util.deepcopy.DeepCopy; +import org.navalplanner.business.util.deepcopy.OnCopy; +import org.navalplanner.business.util.deepcopy.Strategy; /** * @author Susana Montes Pedreira @@ -33,6 +36,7 @@ public class NonCalculatedConsolidatedValue extends ConsolidatedValue { private NonCalculatedConsolidation consolidation; + @OnCopy(Strategy.SHARE) private AdvanceMeasurement advanceMeasurement; public static NonCalculatedConsolidatedValue create() { @@ -63,7 +67,10 @@ public class NonCalculatedConsolidatedValue extends ConsolidatedValue { super(date, value, taskEndDate); } - protected NonCalculatedConsolidatedValue() { + /** + * Constructor for {@link DeepCopy}. DO NOT USE! + */ + public NonCalculatedConsolidatedValue() { } public void setAdvanceMeasurement(AdvanceMeasurement advanceMeasurement) { diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/NonCalculatedConsolidation.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/NonCalculatedConsolidation.java index acffe9957..525b34938 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/NonCalculatedConsolidation.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/consolidations/NonCalculatedConsolidation.java @@ -26,6 +26,10 @@ import java.util.TreeSet; import org.navalplanner.business.advance.entities.DirectAdvanceAssignment; import org.navalplanner.business.planner.entities.Task; +import org.navalplanner.business.util.deepcopy.AfterCopy; +import org.navalplanner.business.util.deepcopy.DeepCopy; +import org.navalplanner.business.util.deepcopy.OnCopy; +import org.navalplanner.business.util.deepcopy.Strategy; /** @@ -37,6 +41,15 @@ public class NonCalculatedConsolidation extends Consolidation { private SortedSet consolidatedValues = new TreeSet( new ConsolidatedValueComparator()); + @AfterCopy + private void instantiateConsolidatedValuesWithComparator() { + SortedSet previous = consolidatedValues; + consolidatedValues = new TreeSet( + new ConsolidatedValueComparator()); + consolidatedValues.addAll(previous); + } + + @OnCopy(Strategy.SHARE) private DirectAdvanceAssignment directAdvanceAssignment; public static NonCalculatedConsolidation create(Task task, @@ -53,7 +66,10 @@ public class NonCalculatedConsolidation extends Consolidation { consolidatedValues)); } - protected NonCalculatedConsolidation() { + /** + * Constructor for {@link DeepCopy}. DO NOT USE! + */ + public NonCalculatedConsolidation() { } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/util/deepcopy/DeepCopy.java b/navalplanner-business/src/main/java/org/navalplanner/business/util/deepcopy/DeepCopy.java index 5c61c1648..e866e67ef 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/util/deepcopy/DeepCopy.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/util/deepcopy/DeepCopy.java @@ -33,6 +33,8 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; import java.util.Map.Entry; import org.apache.commons.lang.Validate; @@ -145,10 +147,13 @@ public class DeepCopy { return instantiate(object.getClass()); } - private Set instantiate(Class klass) { + private Set instantiate(final Class klass) { return new ImplementationInstantiation() { @Override protected Set createDefault() { + if (SortedSet.class.isAssignableFrom(klass)) { + return new TreeSet(); + } return new HashSet(); } }.instantiate(klass); @@ -235,7 +240,8 @@ public class DeepCopy { private static abstract class ImplementationInstantiation { private static final String[] VETOED_IMPLEMENTATIONS = { - "PersistentSet", "PersistentList", "PersistentMap" }; + "PersistentSet", "PersistentList", "PersistentMap", + "PersistentSortedSet" }; ImplementationInstantiation() { } @@ -374,7 +380,12 @@ public class DeepCopy { Object sourceValue = readFieldValue(source, each); if (sourceValue != null) { Strategy strategy = getStrategy(each, sourceValue); - writeFieldValue(target, each, copy(sourceValue, strategy)); + try { + writeFieldValue(target, each, copy(sourceValue, strategy)); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e); + } } } }