ItEr59S04ValidacionEProbasFuncionaisItEr58S04: [Bug #516] Fix bug.

Adding metada for copying consolidations.
This commit is contained in:
Óscar González Fernández 2010-06-14 18:25:22 +02:00
parent b32175d926
commit f9d080c082
5 changed files with 61 additions and 7 deletions

View file

@ -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) {

View file

@ -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() {
}

View file

@ -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) {

View file

@ -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() {
}

View file

@ -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);
}
}
}
}