ItEr56S10CUConsolidacionDeAvancesItEr55S12: The advance consolidation.

Adds changes to the business entities for the advances consolidation
functionality.
This commit is contained in:
Susana Montes Pedreira 2010-05-01 11:40:30 +02:00 committed by Javier Moran Rua
parent 3ac418c1d5
commit a2b23de923
11 changed files with 160 additions and 42 deletions

View file

@ -20,6 +20,8 @@
package org.navalplanner.business.planner.entities.consolidations;
import java.math.BigDecimal;
import org.joda.time.LocalDate;
/**
@ -28,19 +30,34 @@ import org.joda.time.LocalDate;
public class CalculatedConsolidatedValue extends ConsolidatedValue {
private CalculatedConsolidation consolidation;
public static CalculatedConsolidatedValue create() {
return create(new CalculatedConsolidatedValue());
}
public static CalculatedConsolidatedValue create(LocalDate date, int value) {
public static CalculatedConsolidatedValue create(LocalDate date,
BigDecimal value) {
return create(new CalculatedConsolidatedValue(date, value));
}
protected CalculatedConsolidatedValue(LocalDate date, int value) {
protected CalculatedConsolidatedValue(LocalDate date, BigDecimal value) {
super(date, value);
}
protected CalculatedConsolidatedValue() {
}
public void setConsolidation(CalculatedConsolidation consolidation) {
this.consolidation = consolidation;
}
public CalculatedConsolidation getConsolidation() {
return consolidation;
}
@Override
public boolean isCalculated() {
return true;
}
}

View file

@ -24,6 +24,7 @@ import java.util.SortedSet;
import java.util.TreeSet;
import org.navalplanner.business.advance.entities.IndirectAdvanceAssignment;
import org.navalplanner.business.planner.entities.Task;
/**
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
@ -36,15 +37,17 @@ public class CalculatedConsolidation extends Consolidation {
private IndirectAdvanceAssignment indirectAdvanceAssignment;
public static CalculatedConsolidation create(
public static CalculatedConsolidation create(Task task,
IndirectAdvanceAssignment indirectAdvanceAssignment) {
return create(new CalculatedConsolidation(indirectAdvanceAssignment));
return create(new CalculatedConsolidation(task,
indirectAdvanceAssignment));
}
public static CalculatedConsolidation create(
public static CalculatedConsolidation create(Task task,
IndirectAdvanceAssignment indirectAdvanceAssignment,
SortedSet<CalculatedConsolidatedValue> consolidatedValues) {
return create(new CalculatedConsolidation(indirectAdvanceAssignment,
return create(new CalculatedConsolidation(task,
indirectAdvanceAssignment,
consolidatedValues));
}
@ -52,15 +55,16 @@ public class CalculatedConsolidation extends Consolidation {
}
protected CalculatedConsolidation(
protected CalculatedConsolidation(Task task,
IndirectAdvanceAssignment indirectAdvanceAssignment,
SortedSet<CalculatedConsolidatedValue> consolidatedValues) {
this(indirectAdvanceAssignment);
this(task, indirectAdvanceAssignment);
this.setConsolidatedValues(consolidatedValues);
}
public CalculatedConsolidation(
public CalculatedConsolidation(Task task,
IndirectAdvanceAssignment indirectAdvanceAssignment) {
super(task);
this.indirectAdvanceAssignment = indirectAdvanceAssignment;
}
@ -69,6 +73,10 @@ public class CalculatedConsolidation extends Consolidation {
return new TreeSet<ConsolidatedValue>(consolidatedValues);
}
public SortedSet<CalculatedConsolidatedValue> getCalculatedConsolidatedValues() {
return consolidatedValues;
}
public void setConsolidatedValues(
SortedSet<CalculatedConsolidatedValue> consolidatedValues) {
this.consolidatedValues = consolidatedValues;
@ -83,4 +91,15 @@ public class CalculatedConsolidation extends Consolidation {
return indirectAdvanceAssignment;
}
public void addConsolidatedValue(CalculatedConsolidatedValue value) {
if (!consolidatedValues.contains(value)) {
value.setConsolidation(this);
this.consolidatedValues.add(value);
}
}
@Override
public boolean isCalculated() {
return true;
}
}

View file

@ -20,6 +20,8 @@
package org.navalplanner.business.planner.entities.consolidations;
import java.math.BigDecimal;
import org.joda.time.LocalDate;
import org.navalplanner.business.common.BaseEntity;
@ -27,25 +29,27 @@ import org.navalplanner.business.common.BaseEntity;
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
*/
public class ConsolidatedValue extends BaseEntity {
public abstract class ConsolidatedValue extends BaseEntity {
private LocalDate date;
private int value;
private BigDecimal value;
public abstract boolean isCalculated();
protected ConsolidatedValue() {
}
protected ConsolidatedValue(LocalDate date, int value) {
protected ConsolidatedValue(LocalDate date, BigDecimal value) {
this.date = date;
this.value = value;
}
public void setValue(int value) {
public void setValue(BigDecimal value) {
this.value = value;
}
public int getValue() {
public BigDecimal getValue() {
return value;
}

View file

@ -33,15 +33,15 @@ public class ConsolidatedValueComparator implements
@Override
public int compare(ConsolidatedValue arg0, ConsolidatedValue arg1) {
if (arg0.getDate() == arg1.getDate()) {
if (arg1.getDate() == arg0.getDate()) {
return 0;
}
if (arg0.getDate() == null) {
if (arg1.getDate() == null) {
return -1;
}
if (arg1.getDate() == null) {
if (arg0.getDate() == null) {
return 1;
}
return arg1.getDate().compareTo(arg0.getDate());
return arg0.getDate().compareTo(arg1.getDate());
}
}

View file

@ -23,12 +23,33 @@ package org.navalplanner.business.planner.entities.consolidations;
import java.util.SortedSet;
import org.navalplanner.business.common.BaseEntity;
import org.navalplanner.business.planner.entities.Task;
/**
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
*/
public abstract class Consolidation extends BaseEntity {
public abstract SortedSet<ConsolidatedValue> getConsolidatedValues();
public abstract SortedSet<? extends ConsolidatedValue> getConsolidatedValues();
public abstract boolean isCalculated();
private Task task;
protected Consolidation() {
}
protected Consolidation(Task task) {
this.task = task;
}
public void setTask(Task task) {
this.task = task;
}
public Task getTask() {
return task;
}
}

View file

@ -20,6 +20,8 @@
package org.navalplanner.business.planner.entities.consolidations;
import java.math.BigDecimal;
import org.joda.time.LocalDate;
import org.navalplanner.business.advance.entities.AdvanceMeasurement;
@ -29,6 +31,8 @@ import org.navalplanner.business.advance.entities.AdvanceMeasurement;
public class NonCalculatedConsolidatedValue extends ConsolidatedValue {
private NonCalculatedConsolidation consolidation;
private AdvanceMeasurement advanceMeasurement;
public static NonCalculatedConsolidatedValue create() {
@ -36,15 +40,27 @@ public class NonCalculatedConsolidatedValue extends ConsolidatedValue {
}
public static NonCalculatedConsolidatedValue create(LocalDate date,
int value) {
BigDecimal value) {
return create(new NonCalculatedConsolidatedValue(date, value));
}
protected NonCalculatedConsolidatedValue(LocalDate date, int value) {
public static NonCalculatedConsolidatedValue create(LocalDate date,
BigDecimal value, AdvanceMeasurement advanceMeasurement) {
return create(new NonCalculatedConsolidatedValue(date, value,
advanceMeasurement));
}
protected NonCalculatedConsolidatedValue(LocalDate date, BigDecimal value,
AdvanceMeasurement advanceMeasurement) {
this(date, value);
this.advanceMeasurement = advanceMeasurement;
}
protected NonCalculatedConsolidatedValue(LocalDate date, BigDecimal value) {
super(date, value);
}
public NonCalculatedConsolidatedValue() {
protected NonCalculatedConsolidatedValue() {
}
public void setAdvanceMeasurement(AdvanceMeasurement advanceMeasurement) {
@ -55,4 +71,16 @@ public class NonCalculatedConsolidatedValue extends ConsolidatedValue {
return advanceMeasurement;
}
public void setConsolidation(NonCalculatedConsolidation consolidation) {
this.consolidation = consolidation;
}
public NonCalculatedConsolidation getConsolidation() {
return consolidation;
}
@Override
public boolean isCalculated() {
return false;
}
}

View file

@ -24,6 +24,7 @@ import java.util.SortedSet;
import java.util.TreeSet;
import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
import org.navalplanner.business.planner.entities.Task;
/**
@ -37,15 +38,17 @@ public class NonCalculatedConsolidation extends Consolidation {
private DirectAdvanceAssignment directAdvanceAssignment;
public static NonCalculatedConsolidation create(
public static NonCalculatedConsolidation create(Task task,
DirectAdvanceAssignment directAdvanceAssignment) {
return create(new NonCalculatedConsolidation(directAdvanceAssignment));
return create(new NonCalculatedConsolidation(task,
directAdvanceAssignment));
}
public static NonCalculatedConsolidation create(
public static NonCalculatedConsolidation create(Task task,
DirectAdvanceAssignment directAdvanceAssignment,
SortedSet<NonCalculatedConsolidatedValue> consolidatedValues) {
return create(new NonCalculatedConsolidation(directAdvanceAssignment,
return create(new NonCalculatedConsolidation(task,
directAdvanceAssignment,
consolidatedValues));
}
@ -53,15 +56,16 @@ public class NonCalculatedConsolidation extends Consolidation {
}
protected NonCalculatedConsolidation(
protected NonCalculatedConsolidation(Task task,
DirectAdvanceAssignment directAdvanceAssignment,
SortedSet<NonCalculatedConsolidatedValue> consolidatedValues) {
this(directAdvanceAssignment);
this(task, directAdvanceAssignment);
this.setConsolidatedValues(consolidatedValues);
}
public NonCalculatedConsolidation(
public NonCalculatedConsolidation(Task task,
DirectAdvanceAssignment directAdvanceAssignment) {
super(task);
this.directAdvanceAssignment = directAdvanceAssignment;
}
@ -70,6 +74,10 @@ public class NonCalculatedConsolidation extends Consolidation {
return new TreeSet<ConsolidatedValue>(consolidatedValues);
}
public SortedSet<NonCalculatedConsolidatedValue> getNonCalculatedConsolidatedValues() {
return consolidatedValues;
}
public void setConsolidatedValues(
SortedSet<NonCalculatedConsolidatedValue> consolidatedValues) {
this.consolidatedValues = consolidatedValues;
@ -84,4 +92,16 @@ public class NonCalculatedConsolidation extends Consolidation {
return directAdvanceAssignment;
}
public void addConsolidatedValue(NonCalculatedConsolidatedValue value) {
if (!consolidatedValues.contains(value)) {
value.setConsolidation(this);
this.consolidatedValues.add(value);
}
}
@Override
public boolean isCalculated() {
return false;
}
}

View file

@ -54,9 +54,8 @@
<set name="nonCalculatedConsolidations"
cascade="none"
inverse="true"
access="field"
>
<key column="ADVANCE_ASSIGNMENT_ID" />
access="field">
<key column="DIR_ADVANCE_ASSIGNMENT_ID" />
<one-to-many class="org.navalplanner.business.planner.entities.consolidations.NonCalculatedConsolidation" />
</set>
@ -71,7 +70,7 @@
cascade="none"
inverse="true"
access="field">
<key column="ADVANCE_ASSIGNMENT_ID" />
<key column="IND_ADVANCE_ASSIGNMENT_ID" />
<one-to-many class="org.navalplanner.business.planner.entities.consolidations.CalculatedConsolidation" />
</set>

View file

@ -15,30 +15,37 @@
<property name="value" scale="2" access="field" />
<subclass name="NonCalculatedConsolidatedValue" discriminator-value="NonCalculated">
<many-to-one name="consolidation" class="NonCalculatedConsolidation" column="CONSOLIDATION_ID" access="field" />
<many-to-one name="advanceMeasurement" class="org.navalplanner.business.advance.entities.AdvanceMeasurement" column="ADVANCE_MEASUREMENT_ID" access="field" />
</subclass>
<subclass name="CalculatedConsolidatedValue" discriminator-value="Calculated">
<many-to-one name="consolidation" class="CalculatedConsolidation" column="CONSOLIDATION_ID" access="field" />
</subclass>
</class>
<class name="Consolidation">
<id name="id" column="id" type="long" access="property">
<generator class="hilo">
<param name="max_lo">100</param>
<generator class="foreign">
<param name="property">task</param>
</generator>
</id>
<discriminator column="CONSOLIDATION_TYPE" type="string"/>
<version name="version" access="property" type="long" />
<one-to-one name="task" class="org.navalplanner.business.planner.entities.Task" constrained="true"/>
<subclass name="NonCalculatedConsolidation" discriminator-value="NonCalculated">
<many-to-one name="directAdvanceAssignment" column="ADVANCE_ASSIGNMENT_ID" access="field"
<many-to-one name="directAdvanceAssignment" column="DIR_ADVANCE_ASSIGNMENT_ID" access="field"
class="org.navalplanner.business.advance.entities.DirectAdvanceAssignment" />
<set name="consolidatedValues" access="field" cascade="all,delete-orphan"
sort="org.navalplanner.business.planner.entities.consolidations.ConsolidatedValueComparator">
<set name="consolidatedValues"
access="field"
cascade="all,delete-orphan"
inverse="true"
sort="org.navalplanner.business.planner.entities.consolidations.ConsolidatedValueComparator">
<key column="CONSOLIDATION_ID" />
<one-to-many class="org.navalplanner.business.planner.entities.consolidations.NonCalculatedConsolidatedValue" />
</set>
@ -47,9 +54,13 @@
<subclass name="CalculatedConsolidation" discriminator-value="Calculated">
<many-to-one name="indirectAdvanceAssignment" class="org.navalplanner.business.advance.entities.IndirectAdvanceAssignment" column="INADVANCE_ASSIGNMENT_ID" access="field" />
<many-to-one name="indirectAdvanceAssignment" column="IND_ADVANCE_ASSIGNMENT_ID" access="field"
class="org.navalplanner.business.advance.entities.IndirectAdvanceAssignment"/>
<set name="consolidatedValues" access="field" cascade="all,delete-orphan"
<set name="consolidatedValues"
access="field"
cascade="all,delete-orphan"
inverse="true"
sort="org.navalplanner.business.planner.entities.consolidations.ConsolidatedValueComparator">
<key column="CONSOLIDATION_ID" />
<one-to-many class="org.navalplanner.business.planner.entities.consolidations.CalculatedConsolidatedValue" />

View file

@ -108,7 +108,6 @@
<property name="day" type="org.joda.time.contrib.hibernate.PersistentLocalDate" not-null="true"/>
<many-to-one name="resource" class="org.navalplanner.business.resources.entities.Resource"
column="RESOURCE_ID" not-null="true">
</many-to-one>

View file

@ -49,7 +49,7 @@
</component>
<one-to-one name="consolidation" class="org.navalplanner.business.planner.entities.consolidations.Consolidation"
cascade="all" access="field"/>
cascade="all"/>
<set name="resourceAllocations" cascade="all-delete-orphan">
<key column="TASK" />