Changed to BigDecimal units attribute in MaterialInfo class.

FEA: ItEr65S05DatabaseUpgradeItEr64S07
This commit is contained in:
Manuel Rego Casasnovas 2010-12-10 09:52:24 +01:00
parent 1cf39af380
commit 00fcf6f173
17 changed files with 76 additions and 60 deletions

View file

@ -91,15 +91,15 @@ public class MaterialAssignment extends BaseEntity implements Comparable {
getMaterialInfo().setMaterial(material);
}
public Double getUnits() {
public BigDecimal getUnits() {
return getMaterialInfo().getUnits();
}
public void setUnits(Double units) {
public void setUnits(BigDecimal units) {
getMaterialInfo().setUnits(units);
}
public void setUnitsWithoutNullCheck(Double units) {
public void setUnitsWithoutNullCheck(BigDecimal units) {
this.materialInfo.setUnitsWithoutNullCheck(units);
}

View file

@ -95,11 +95,11 @@ public class MaterialAssignmentTemplate extends BaseEntity implements
getMaterialInfo().setMaterial(material);
}
public Double getUnits() {
public BigDecimal getUnits() {
return getMaterialInfo().getUnits();
}
public void setUnits(Double units) {
public void setUnits(BigDecimal units) {
getMaterialInfo().setUnits(units);
}

View file

@ -31,7 +31,7 @@ public class MaterialInfo {
private Material material;
private Double units = 0.0;
private BigDecimal units = BigDecimal.ZERO;
private BigDecimal unitPrice = BigDecimal.ZERO;
@ -45,15 +45,15 @@ public class MaterialInfo {
}
@NotNull(message = "units not specified")
public Double getUnits() {
public BigDecimal getUnits() {
return units;
}
public void setUnits(Double units) {
this.units = units != null ? units : 0;
public void setUnits(BigDecimal units) {
this.units = units != null ? units : BigDecimal.ZERO;
}
public void setUnitsWithoutNullCheck(Double units) {
public void setUnitsWithoutNullCheck(BigDecimal units) {
this.units = units;
}
@ -79,8 +79,7 @@ public class MaterialInfo {
}
public BigDecimal getTotalPrice() {
BigDecimal result = new BigDecimal(getUnits());
return result.multiply(getUnitPrice());
return getUnits().multiply(getUnitPrice());
}
}

View file

@ -920,12 +920,12 @@ public abstract class OrderElement extends IntegrationEntity implements
materialAssignments.remove(materialAssignment);
}
public double getTotalMaterialAssigmentUnits() {
double result = 0;
public BigDecimal getTotalMaterialAssigmentUnits() {
BigDecimal result = BigDecimal.ZERO;
final Set<MaterialAssignment> materialAssigments = getMaterialAssignments();
for (MaterialAssignment each: materialAssigments) {
result += each.getUnits();
result = result.add(each.getUnits());
}
return result;
}

View file

@ -45,7 +45,7 @@ public class TimeLineRequiredMaterialDTO{
private String name;
private Double units = 0.0;
private BigDecimal units = BigDecimal.ZERO;
private BigDecimal unitPrice = BigDecimal.ZERO;
@ -145,11 +145,11 @@ public class TimeLineRequiredMaterialDTO{
this.name = name;
}
public Double getUnits() {
public BigDecimal getUnits() {
return units;
}
public void setUnits(Double units) {
public void setUnits(BigDecimal units) {
this.units = units;
}

View file

@ -409,11 +409,11 @@ public abstract class OrderElementTemplate extends BaseEntity implements
return result;
}
public double getTotalMaterialAssigmentUnits() {
double result = 0;
public BigDecimal getTotalMaterialAssigmentUnits() {
BigDecimal result = BigDecimal.ZERO;
for (MaterialAssignmentTemplate each : materialAssignments) {
if (each.getUnits() != null) {
result += each.getUnits();
result = result.add(each.getUnits());
}
}
return result;

View file

@ -31,4 +31,16 @@
</update>
</changeSet>
<changeSet id="changed-type-of-units-in-material-info-to-big-decimal" author="mrego">
<comment>MaterialInfo was using Double for units instead of BigDecimal</comment>
<dropColumn tableName="material_assigment" columnName="units"/>
<addColumn tableName="material_assigment">
<column name="units" type="DECIMAL(19,2)"></column>
</addColumn>
<dropColumn tableName="material_assigment_template" columnName="units"/>
<addColumn tableName="material_assigment_template">
<column name="units" type="DECIMAL(19,2)"></column>
</addColumn>
</changeSet>
</databaseChangeLog>

View file

@ -42,7 +42,6 @@ import org.zkoss.zk.ui.SuspendNotAllowedException;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Doublebox;
import org.zkoss.zul.Grid;
import org.zkoss.zul.Label;
import org.zkoss.zul.Listbox;
@ -60,6 +59,7 @@ import org.zkoss.zul.Treeitem;
import org.zkoss.zul.TreeitemRenderer;
import org.zkoss.zul.Treerow;
import org.zkoss.zul.Vbox;
import org.zkoss.zul.api.Decimalbox;
import org.zkoss.zul.api.Textbox;
import org.zkoss.zul.impl.MessageboxDlg;
@ -132,7 +132,7 @@ public abstract class AssignedMaterialsController<T, A> extends GenericForwardCo
public abstract TreeModel getAllMaterialCategories();
public abstract double getTotalUnits();
public abstract BigDecimal getTotalUnits();
public abstract BigDecimal getTotalPrice();
@ -336,7 +336,7 @@ public abstract class AssignedMaterialsController<T, A> extends GenericForwardCo
final MaterialCategory materialCategory = (MaterialCategory) node;
Label lblName = new Label(materialCategory.getName());
Label lblUnits = new Label(new Double(getUnits(materialCategory)).toString());
Label lblUnits = new Label(getUnits(materialCategory).toString());
Label lblPrice = new Label(getPrice(materialCategory).toString());
Treerow tr = null;
@ -365,7 +365,7 @@ public abstract class AssignedMaterialsController<T, A> extends GenericForwardCo
cellPrice.setParent(tr);
}
private double getUnits(MaterialCategory materialCategory) {
private BigDecimal getUnits(MaterialCategory materialCategory) {
return getModel().getUnits(materialCategory);
}
@ -467,7 +467,8 @@ public abstract class AssignedMaterialsController<T, A> extends GenericForwardCo
dialogSplitAssignment = (MessageboxDlg) Executions
.createComponents("/orders/_splitMaterialAssignmentDlg.zul",
self, args);
Doublebox dbUnits = (Doublebox) dialogSplitAssignment.getFellowIfAny("dbUnits");
Decimalbox dbUnits = (Decimalbox) dialogSplitAssignment
.getFellowIfAny("dbUnits");
dbUnits.setValue(getUnits(materialAssignment));
try {
dialogSplitAssignment.doModal();
@ -491,14 +492,14 @@ public abstract class AssignedMaterialsController<T, A> extends GenericForwardCo
* @param materialAssignment
* @param units
*/
private void splitMaterialAssignment(A materialAssignment, double units) {
private void splitMaterialAssignment(A materialAssignment, BigDecimal units) {
A newAssignment = copyFrom(materialAssignment);
double currentUnits = getUnits(materialAssignment);
if (units > currentUnits) {
BigDecimal currentUnits = getUnits(materialAssignment);
if (units.compareTo(currentUnits) > 0) {
units = currentUnits;
currentUnits = 0;
currentUnits = BigDecimal.ZERO;
} else {
currentUnits -= units;
currentUnits = currentUnits.subtract(units);
}
setUnits(newAssignment, units);
setUnits(materialAssignment, currentUnits);
@ -506,11 +507,11 @@ public abstract class AssignedMaterialsController<T, A> extends GenericForwardCo
reloadGridMaterials();
}
protected abstract void setUnits(A assignment, double units);
protected abstract void setUnits(A assignment, BigDecimal units);
protected abstract A copyFrom(A assignment);
protected abstract double getUnits(A assignment);
protected abstract BigDecimal getUnits(A assignment);
private UnitTypeListRenderer unitTypeListRenderer = new UnitTypeListRenderer();

View file

@ -223,20 +223,21 @@ public abstract class AssignedMaterialsModel<T, A> implements
}
}
public double getUnits(MaterialCategory materialCategory) {
double result = 0;
@Override
public BigDecimal getUnits(MaterialCategory materialCategory) {
BigDecimal result = BigDecimal.ZERO;
if (isInitialized()) {
for (A each : getAssignments()) {
final Material material = getMaterial(each);
if (materialCategory.equals(material.getCategory())) {
result += getUnits(each);
result = result.add(getUnits(each));
}
}
}
return result;
}
protected abstract Double getUnits(A assigment);
protected abstract BigDecimal getUnits(A assigment);
public BigDecimal getPrice(MaterialCategory category) {
BigDecimal result = new BigDecimal(0);

View file

@ -66,12 +66,13 @@ public class AssignedMaterialsToOrderElementController extends
return assignedMaterialsToOrderElementModel.getAllMaterialCategories();
}
public double getTotalUnits() {
double result = 0;
@Override
public BigDecimal getTotalUnits() {
BigDecimal result = BigDecimal.ZERO;
final OrderElement orderElement = getOrderElement();
if (orderElement != null) {
result = orderElement.getTotalMaterialAssigmentUnits();
result = result.add(orderElement.getTotalMaterialAssigmentUnits());
}
return result;
}
@ -106,12 +107,11 @@ public class AssignedMaterialsToOrderElementController extends
}
@Override
protected double getUnits(MaterialAssignment assignment) {
protected BigDecimal getUnits(MaterialAssignment assignment) {
return assignment.getUnits();
}
@Override
protected void setUnits(MaterialAssignment assignment, double units) {
protected void setUnits(MaterialAssignment assignment, BigDecimal units) {
assignment.setUnits(units);
}

View file

@ -111,7 +111,7 @@ public class AssignedMaterialsToOrderElementModel extends
}
@Override
protected Double getUnits(MaterialAssignment assigment) {
protected BigDecimal getUnits(MaterialAssignment assigment) {
return assigment.getUnits();
}

View file

@ -51,7 +51,7 @@ public interface IAssignedMaterialsModel<T, A> {
BigDecimal getPrice(MaterialCategory materialCategory);
double getUnits(MaterialCategory materialCategory);
BigDecimal getUnits(MaterialCategory materialCategory);
void removeMaterialAssignment(A materialAssignment);

View file

@ -90,7 +90,7 @@ public class AssignedMaterialsToOrderElementTemplateModel extends
}
@Override
protected Double getUnits(MaterialAssignmentTemplate assigment) {
protected BigDecimal getUnits(MaterialAssignmentTemplate assigment) {
return assigment.getUnits();
}

View file

@ -91,19 +91,19 @@ public class TemplateMaterialsController extends
}
@Override
public double getTotalUnits() {
public BigDecimal getTotalUnits() {
OrderElementTemplate template = assignedMaterialsToOrderElementTemplateModel
.getTemplate();
if (template == null) {
return 0;
return BigDecimal.ZERO;
}
return template.getTotalMaterialAssigmentUnits();
}
@Override
protected double getUnits(MaterialAssignmentTemplate assignment) {
protected BigDecimal getUnits(MaterialAssignmentTemplate assignment) {
if (assignment.getUnits() == null) {
return 0;
return BigDecimal.ZERO;
}
return assignment.getUnits();
}
@ -114,7 +114,8 @@ public class TemplateMaterialsController extends
}
@Override
protected void setUnits(MaterialAssignmentTemplate assignment, double units) {
protected void setUnits(MaterialAssignmentTemplate assignment,
BigDecimal units) {
assignment.setUnits(units);
}

View file

@ -38,7 +38,7 @@ public class MaterialAssignmentDTO {
public String materialCode;
@XmlAttribute
public Double units;
public BigDecimal units;
@XmlAttribute(name = "unit-price")
public BigDecimal unitPrice;
@ -49,7 +49,7 @@ public class MaterialAssignmentDTO {
public MaterialAssignmentDTO() {
}
public MaterialAssignmentDTO(String materialCode, Double units,
public MaterialAssignmentDTO(String materialCode, BigDecimal units,
BigDecimal unitPrice, XMLGregorianCalendar estimatedAvailability) {
this.materialCode = materialCode;
this.units = units;

View file

@ -35,7 +35,7 @@
<rows>
<row>
<label style="font-weight: bold" value="${i18n:_('Units')}:" width="150px" />
<doublebox id="dbUnits" width="200px" />
<decimalbox id="dbUnits" width="200px" />
</row>
</rows>
</grid>

View file

@ -629,7 +629,7 @@ public class OrderElementServiceTest {
materialAssignmentDTO.materialCode = "material-code "
+ UUID.randomUUID().toString();
materialAssignmentDTO.unitPrice = BigDecimal.TEN;
materialAssignmentDTO.units = 100.0;
materialAssignmentDTO.units = BigDecimal.valueOf(100.0);
orderDTO.materialAssignments.add(materialAssignmentDTO);
OrderListDTO orderListDTO = createOrderListDTO(orderDTO);
@ -763,7 +763,7 @@ public class OrderElementServiceTest {
orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date());
MaterialAssignmentDTO materialAssignmentDTO = new MaterialAssignmentDTO(
materialcode1, 100.0, BigDecimal.TEN, null);
materialcode1, BigDecimal.valueOf(100.0), BigDecimal.TEN, null);
orderDTO.materialAssignments.add(materialAssignmentDTO);
OrderListDTO orderListDTO = createOrderListDTO(orderDTO);
@ -778,10 +778,11 @@ public class OrderElementServiceTest {
orderElementDAO.flush();
sessionFactory.getCurrentSession().evict(orderElement);
orderDTO.materialAssignments.iterator().next().units = 150.0;
orderDTO.materialAssignments.iterator().next().units = BigDecimal
.valueOf(150.0);
MaterialAssignmentDTO materialAssignmentDTO2 = new MaterialAssignmentDTO(
materialcode2, 200.0, BigDecimal.ONE, null);
materialcode2, BigDecimal.valueOf(200.0), BigDecimal.ONE, null);
orderDTO.materialAssignments.add(materialAssignmentDTO);
orderDTO.materialAssignments.add(materialAssignmentDTO2);
@ -797,8 +798,9 @@ public class OrderElementServiceTest {
.getMaterialAssignments()) {
assertThat(materialAssignment.getMaterial().getCode(), anyOf(
equalTo(materialcode1), equalTo(materialcode2)));
assertThat(materialAssignment.getUnits(), anyOf(equalTo(150.0),
equalTo(200.0)));
assertThat(materialAssignment.getUnits(), anyOf(equalTo(BigDecimal
.valueOf(150.0).setScale(2)), equalTo(BigDecimal.valueOf(
200.0).setScale(2))));
assertThat(materialAssignment.getUnitPrice(), anyOf(
equalTo(BigDecimal.TEN.setScale(2)), equalTo(BigDecimal.ONE
.setScale(2))));