ItEr59S04ValidacionEProbasFuncionaisItEr58S04: [Bug #516] Fix bug.
Adding metada for copying consolidations.
This commit is contained in:
parent
b32175d926
commit
f9d080c082
5 changed files with 61 additions and 7 deletions
|
|
@ -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 <smontes@wirelessgalicia.com>
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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 <smontes@wirelessgalicia.com>
|
||||
|
|
@ -35,6 +39,15 @@ public class CalculatedConsolidation extends Consolidation {
|
|||
private SortedSet<CalculatedConsolidatedValue> consolidatedValues = new TreeSet<CalculatedConsolidatedValue>(
|
||||
new ConsolidatedValueComparator());
|
||||
|
||||
@AfterCopy
|
||||
private void instantiateConsolidatedValuesWithComparator() {
|
||||
SortedSet<CalculatedConsolidatedValue> previous = consolidatedValues;
|
||||
consolidatedValues = new TreeSet<CalculatedConsolidatedValue>(
|
||||
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() {
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 <smontes@wirelessgalicia.com>
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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<NonCalculatedConsolidatedValue> consolidatedValues = new TreeSet<NonCalculatedConsolidatedValue>(
|
||||
new ConsolidatedValueComparator());
|
||||
|
||||
@AfterCopy
|
||||
private void instantiateConsolidatedValuesWithComparator() {
|
||||
SortedSet<NonCalculatedConsolidatedValue> previous = consolidatedValues;
|
||||
consolidatedValues = new TreeSet<NonCalculatedConsolidatedValue>(
|
||||
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() {
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<Object> instantiate(Class<? extends Object> klass) {
|
||||
private Set<Object> instantiate(final Class<? extends Object> klass) {
|
||||
return new ImplementationInstantiation() {
|
||||
@Override
|
||||
protected Set<?> createDefault() {
|
||||
if (SortedSet.class.isAssignableFrom(klass)) {
|
||||
return new TreeSet<Object>();
|
||||
}
|
||||
return new HashSet<Object>();
|
||||
}
|
||||
}.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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue