From 6a49e776ab51b306f889bae45875ec634e83eaac Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Thu, 17 Sep 2009 10:29:13 +0200 Subject: [PATCH] ItEr26S06RFControlAvancesIncompatiblesEnUnidadesTraballoItEr25S06: Removed DTOs not needed with the new approach of calculate advancements on OrderGorupLines. --- .../advance/entities/AdvanceMeasurement.java | 25 +- .../AdvanceMeasurementComparator.java | 6 + .../business/advance/entities/Advance.hbm.xml | 1 - ...ddAdvanceAssigmentsToOrderElementTest.java | 4 +- .../web/orders/AdvanceAssigmentDTO.java | 153 ---- .../web/orders/AdvanceMeasurementDTO.java | 119 --- .../AdvanceMeasurementDTOComparator.java | 20 - .../IManageOrderElementAdvancesModel.java | 26 +- .../ManageOrderElementAdvancesController.java | 413 ++++++---- .../ManageOrderElementAdvancesModel.java | 727 ++++-------------- .../navalplanner/web/orders/OrderModel.java | 4 +- .../orders/_listOrderElementAdvances.zul | 27 +- 12 files changed, 451 insertions(+), 1074 deletions(-) delete mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AdvanceAssigmentDTO.java delete mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AdvanceMeasurementDTO.java delete mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AdvanceMeasurementDTOComparator.java diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/advance/entities/AdvanceMeasurement.java b/navalplanner-business/src/main/java/org/navalplanner/business/advance/entities/AdvanceMeasurement.java index a0d7c08b2..7f839372b 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/advance/entities/AdvanceMeasurement.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/advance/entities/AdvanceMeasurement.java @@ -8,9 +8,9 @@ import org.navalplanner.business.common.BaseEntity; public class AdvanceMeasurement extends BaseEntity { - public static AdvanceMeasurement create(Date date, BigDecimal value, int numIndirectSons) { + public static AdvanceMeasurement create(Date date, BigDecimal value) { AdvanceMeasurement advanceMeasurement = new AdvanceMeasurement(date, - value, numIndirectSons); + value); advanceMeasurement.setNewObject(true); return advanceMeasurement; } @@ -30,17 +30,13 @@ public class AdvanceMeasurement extends BaseEntity { @NotNull private AdvanceAssigment advanceAssigment; - private int numIndirectSons; - public AdvanceMeasurement() { - this.numIndirectSons = 0; } - private AdvanceMeasurement(Date date, BigDecimal value , int numIndirectSons) { + private AdvanceMeasurement(Date date, BigDecimal value) { this.date = date; this.value = value; this.value.setScale(2,BigDecimal.ROUND_HALF_UP); - this.numIndirectSons = numIndirectSons; } public void setDate(Date date) { @@ -68,19 +64,4 @@ public class AdvanceMeasurement extends BaseEntity { return this.advanceAssigment; } - public int getNumIndirectSons() { - return numIndirectSons; - } - - public void setNumIndirectSons(int numIndirectSons) { - this.numIndirectSons = numIndirectSons; - } - - public void incrementNumIndirectSons() { - this.numIndirectSons = this.numIndirectSons + 1; - } - - public void decrementNumIndirectSons() { - this.numIndirectSons = this.numIndirectSons - 1; - } } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/advance/entities/AdvanceMeasurementComparator.java b/navalplanner-business/src/main/java/org/navalplanner/business/advance/entities/AdvanceMeasurementComparator.java index c916b17f1..6422224bb 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/advance/entities/AdvanceMeasurementComparator.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/advance/entities/AdvanceMeasurementComparator.java @@ -18,6 +18,12 @@ public class AdvanceMeasurementComparator implements Comparator - diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/AddAdvanceAssigmentsToOrderElementTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/AddAdvanceAssigmentsToOrderElementTest.java index 5e3fe8f23..6931c24a0 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/AddAdvanceAssigmentsToOrderElementTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/AddAdvanceAssigmentsToOrderElementTest.java @@ -9,8 +9,8 @@ import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONF import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_TEST_FILE; import java.math.BigDecimal; - import java.util.Date; + import org.hibernate.Session; import org.hibernate.SessionFactory; import org.junit.Test; @@ -94,7 +94,7 @@ public class AddAdvanceAssigmentsToOrderElementTest { private AdvanceMeasurement createValidAdvanceMeasurement() { AdvanceMeasurement advanceMeasurement = AdvanceMeasurement.create( - new Date(), new BigDecimal(0),0); + new Date(), new BigDecimal(0)); return advanceMeasurement; } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AdvanceAssigmentDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AdvanceAssigmentDTO.java deleted file mode 100644 index 9d7bb8131..000000000 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AdvanceAssigmentDTO.java +++ /dev/null @@ -1,153 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package org.navalplanner.web.orders; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.TreeSet; -import java.util.SortedSet; -import org.navalplanner.business.advance.entities.AdvanceAssigment; -import org.navalplanner.business.advance.entities.AdvanceMeasurement; -import org.navalplanner.business.advance.entities.AdvanceMeasurementComparator; -import org.navalplanner.business.advance.entities.AdvanceType; -import org.navalplanner.business.util.ListSorter; - -/** - * - * @author Susana Montes Pedreira - */ -public class AdvanceAssigmentDTO { - - private AdvanceType advanceType; - - private String unitName; - - private SortedSet advanceMeasurements = - new TreeSet(new AdvanceMeasurementComparator()); - - private ListSorter advanceMeasurementDTOs = - ListSorter.create(new ArrayList(), new AdvanceMeasurementDTOComparator()); - - private AdvanceAssigment advanceAssigment; - - private BigDecimal maxValue; - - private boolean reportGlobalAdvance; - - private AdvanceAssigment.Type type; - - private boolean isNewObject = true; - - private boolean isNewDTO = true; - - private boolean selectedRemove = false; - - public AdvanceAssigmentDTO() { - this.reportGlobalAdvance = false; - this.isNewDTO = true; - this.isNewObject = false; - this.type = AdvanceAssigment.Type.DIRECT; - } - - public AdvanceAssigmentDTO(AdvanceType advanceType, - AdvanceAssigment advanceAssigment, - SortedSet advanceMeasurements) { - this.advanceType = advanceType; - this.unitName = advanceType.getUnitName(); - this.advanceMeasurements = advanceMeasurements; - this.advanceAssigment = advanceAssigment; - - this.maxValue = advanceAssigment.getMaxValue(); - this.reportGlobalAdvance = advanceAssigment.getReportGlobalAdvance(); - this.type = advanceAssigment.getType(); - - this.isNewDTO = false; - if(advanceAssigment.getVersion()==null){ - this.isNewObject = true; - }else{ - this.isNewObject = false; - } - } - - public boolean getIsNewObject() { - return this.isNewObject; - } - - public boolean getIsNewDTO() { - return this.isNewDTO; - } - - public void setAdvanceType(AdvanceType advanceType){ - this.advanceType = advanceType; - } - - public AdvanceType getAdvanceType() { - return this.advanceType; - } - - public AdvanceAssigment getAdvanceAssigment() { - return this.advanceAssigment; - } - - public void setAdvanceAssigment(AdvanceAssigment advanceAssigment) { - this.advanceAssigment = advanceAssigment; - } - - public SortedSet getAdvanceMeasurements() { - return this.advanceMeasurements; - } - - public void setAdvanceMeasurements(SortedSet advanceMeasurements) { - this.advanceMeasurements = advanceMeasurements; - } - - public ListSorter getAdvanceMeasurementDTOs() { - return this.advanceMeasurementDTOs; - } - - public void setAdvanceMeasurementDTOs(ListSorter advanceMeasurementDTOs) { - this.advanceMeasurementDTOs = advanceMeasurementDTOs; - } - - public void setReportGlobalAdvance(boolean reportGlobalAdvance) { - this.reportGlobalAdvance = reportGlobalAdvance; - } - - public boolean getReportGlobalAdvance() { - return this.reportGlobalAdvance; - } - - public BigDecimal getMaxValue(){ - return this.maxValue; - } - - public void setMaxValue(BigDecimal maxValue) { - this.maxValue = maxValue; - } - - public AdvanceAssigment.Type getType(){ - return this.type; - } - - public void setType(AdvanceAssigment.Type type) { - this.type = type; - } - - public boolean isSelectedForRemove(){ - return this.selectedRemove; - } - - public void setSelectedForRemove(boolean selectedRemove){ - this.selectedRemove = selectedRemove; - } - - public void setUnitName(String unitName) { - this.unitName = unitName; - } - - public String getUnitName() { - return unitName; - } -} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AdvanceMeasurementDTO.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AdvanceMeasurementDTO.java deleted file mode 100644 index 378b2a907..000000000 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AdvanceMeasurementDTO.java +++ /dev/null @@ -1,119 +0,0 @@ -package org.navalplanner.web.orders; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.Date; -import org.navalplanner.business.advance.entities.AdvanceMeasurement; - -public class AdvanceMeasurementDTO{ - - private AdvanceMeasurement advanceMeasurement; - - private AdvanceAssigmentDTO advanceAssigmentDTO; - - private Date date; - - private BigDecimal value; - - private boolean isNewObject = true; - - private boolean isNewDTO = true; - - private boolean selectedRemove = false; - - private BigDecimal percentage; - - public AdvanceMeasurementDTO() { - this.date = new Date(); - this.percentage = new BigDecimal(0); - this.isNewDTO = true; - this.isNewObject = false; - } - - public AdvanceMeasurementDTO(AdvanceMeasurement advanceMeasurement){ - - this.advanceMeasurement = advanceMeasurement; - this.date = advanceMeasurement.getDate(); - this.value = advanceMeasurement.getValue(); - - this.percentage = new BigDecimal(0); - this.isNewDTO = false; - if(advanceMeasurement.getVersion()==null){ - this.isNewObject = true; - }else{ - this.isNewObject = false; - } - } - - public boolean getIsNewObject(){ - return this.isNewObject; - } - - public boolean getIsNewDTO() { - return this.isNewDTO; - } - - public AdvanceAssigmentDTO getAdvanceAssigmentDTO() { - return this.advanceAssigmentDTO; - } - - public void setAdvanceAssigmentDTO(AdvanceAssigmentDTO advanceAssigmentDTO) { - this.advanceAssigmentDTO = advanceAssigmentDTO; - } - - public AdvanceMeasurement getAdvanceMeasurement() { - return this.advanceMeasurement; - } - - public void setAdvanceMeasurement(AdvanceMeasurement advanceMeasurement) { - this.advanceMeasurement = advanceMeasurement; - } - - public void setPercentage(BigDecimal percentage) { - this.percentage = percentage; - } - - public BigDecimal getPercentage() { - if(advanceAssigmentDTO == null) return new BigDecimal(0); - if(value == null) return new BigDecimal(0); - if(advanceAssigmentDTO.getMaxValue() != null){ - BigDecimal maxValue = advanceAssigmentDTO.getMaxValue(); - BigDecimal _percentage = new BigDecimal(0); - BigDecimal division = (value.divide(maxValue,4,RoundingMode.HALF_UP)); - division.setScale(2, RoundingMode.HALF_UP); - _percentage = division.multiply(new BigDecimal(100)); - this.percentage = _percentage.setScale(2, RoundingMode.HALF_UP); - return this.percentage; - } - return new BigDecimal(0); - } - - public String getPercentage_() { - getPercentage(); - return (this.percentage.toString() + " %"); - } - - public void setDate(Date date) { - this.date = date; - } - - public Date getDate() { - return this.date; - } - - public void setValue(BigDecimal value) { - this.value = value; - } - - public BigDecimal getValue() { - return this.value; - } - - public boolean isSelectedForRemove(){ - return this.selectedRemove; - } - - public void setSelectedForRemove(boolean selectedRemove){ - this.selectedRemove = selectedRemove; - } -} \ No newline at end of file diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AdvanceMeasurementDTOComparator.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AdvanceMeasurementDTOComparator.java deleted file mode 100644 index 2a8a5ea4e..000000000 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AdvanceMeasurementDTOComparator.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.navalplanner.web.orders; -import java.util.Comparator; -/** - * - * @author Susana Montes Pedreira - */ -public class AdvanceMeasurementDTOComparator implements Comparator { - - public AdvanceMeasurementDTOComparator(){ - } - - @Override - public int compare(AdvanceMeasurementDTO arg0, AdvanceMeasurementDTO arg1) { - if((arg1.getDate() == null) && (arg0.getDate() == null)) - return 0; - if(arg1.getDate() == null) return 1; - if(arg0.getDate() == null) return -1; - return arg1.getDate().compareTo(arg0.getDate()); - } -} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/IManageOrderElementAdvancesModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/IManageOrderElementAdvancesModel.java index 56226a0f0..304155782 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/IManageOrderElementAdvancesModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/IManageOrderElementAdvancesModel.java @@ -4,6 +4,8 @@ import java.math.BigDecimal; import java.util.Date; import java.util.List; +import org.navalplanner.business.advance.entities.AdvanceAssigment; +import org.navalplanner.business.advance.entities.AdvanceMeasurement; import org.navalplanner.business.advance.entities.AdvanceType; import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssigmentForOrderElementException; import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException; @@ -15,11 +17,11 @@ import org.navalplanner.business.orders.entities.OrderElement; */ public interface IManageOrderElementAdvancesModel { - public void prepareEditAdvanceMeasurements(AdvanceAssigmentDTO advanceAssigmentDTO); + public void prepareEditAdvanceMeasurements(AdvanceAssigment advanceAssigment); - public List getAdvanceMeasurementDTOs(); + public List getAdvanceMeasurements(); - public List getAdvanceAssigmentDTOs(); + public List getAdvanceAssigments(); public void init(OrderElement orderElement); @@ -27,13 +29,13 @@ public interface IManageOrderElementAdvancesModel { public void addNewLineAdvaceMeasurement(); - public void removeLineAdvanceAssigment(AdvanceAssigmentDTO advanceDTO); + public void removeLineAdvanceAssigment(AdvanceAssigment advance); - public void removeLineAdvanceMeasurement(AdvanceMeasurementDTO advanceDTO); + public void removeLineAdvanceMeasurement(AdvanceMeasurement advance); public List getActivesAdvanceTypes(); - public boolean isReadOnlyAdvanceMeasurementDTOs(); + public boolean isReadOnlyAdvanceMeasurements(); public void cleanAdvance(); @@ -41,17 +43,23 @@ public interface IManageOrderElementAdvancesModel { public boolean greatThanMaxValue(BigDecimal value); - public boolean isDistinctValidDate(Date value,AdvanceMeasurementDTO newAdvanceMeasurementDTO); + public boolean isDistinctValidDate(Date value, + AdvanceMeasurement newAdvanceMeasurement); public BigDecimal getUnitPrecision(); - public AdvanceMeasurementDTO getFirstAdvanceMeasurement(AdvanceAssigmentDTO advanceAssigmentDTO); + public AdvanceMeasurement getFirstAdvanceMeasurement( + AdvanceAssigment advanceAssigment); - public void modifyListAdvanceMeasurement(AdvanceMeasurementDTO advanceMeasurementDTO); + public void sortListAdvanceMeasurement(); public String getInfoAdvanceAssigment(); public void accept()throws InstanceNotFoundException, DuplicateAdvanceAssigmentForOrderElementException, DuplicateValueTrueReportGlobalAdvanceException; + + public BigDecimal getPercentageAdvanceMeasurement( + AdvanceMeasurement advanceMeasurement); + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesController.java index 7981364fc..991917b02 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesController.java @@ -8,6 +8,7 @@ import java.util.Date; import java.util.List; import org.navalplanner.business.advance.entities.AdvanceAssigment; +import org.navalplanner.business.advance.entities.AdvanceMeasurement; import org.navalplanner.business.advance.entities.AdvanceType; import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssigmentForOrderElementException; import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException; @@ -53,6 +54,8 @@ public class ManageOrderElementAdvancesController extends private AdvanceTypeListRenderer advanceTypeListRenderer = new AdvanceTypeListRenderer(); + private AdvanceMeasurementRenderer advanceMeasurementRenderer = new AdvanceMeasurementRenderer(); + @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp.getFellow("listOrderElementAdvances")); @@ -61,12 +64,12 @@ public class ManageOrderElementAdvancesController extends messagesForUser = new MessagesForUser(window.getFellow("listOrderElementAdvances")); } - public List getAdvanceMeasurementDTOs() { - return manageOrderElementAdvancesModel.getAdvanceMeasurementDTOs(); + public List getAdvanceMeasurements() { + return manageOrderElementAdvancesModel.getAdvanceMeasurements(); } - public List getAdvanceAssigmentDTOs() { - return manageOrderElementAdvancesModel.getAdvanceAssigmentDTOs(); + public List getAdvanceAssigments() { + return manageOrderElementAdvancesModel.getAdvanceAssigments(); } public void cancel() { @@ -107,8 +110,9 @@ public class ManageOrderElementAdvancesController extends Util.reloadBindings(window); } - public void prepareEditAdvanceMeasurements(AdvanceAssigmentDTO advanceAssigmentDTO){ - manageOrderElementAdvancesModel.prepareEditAdvanceMeasurements(advanceAssigmentDTO); + public void prepareEditAdvanceMeasurements(AdvanceAssigment advanceAssigment) { + manageOrderElementAdvancesModel + .prepareEditAdvanceMeasurements(advanceAssigment); Listbox listAdvances = ((Listbox) window.getFellow("editAdvances")); this.indexSelectedItem = listAdvances.getIndexOfItem(listAdvances.getSelectedItem()); Util.reloadBindings(window); @@ -131,8 +135,10 @@ public class ManageOrderElementAdvancesController extends Listitem listItem = listAdvances.getItemAtIndex(indexSelectedItem); if(listItem != null){ - AdvanceAssigmentDTO advanceAssigmentDTO = (AdvanceAssigmentDTO) listItem.getValue(); - manageOrderElementAdvancesModel.removeLineAdvanceAssigment(advanceAssigmentDTO); + AdvanceAssigment advanceAssigment = (AdvanceAssigment) listItem + .getValue(); + manageOrderElementAdvancesModel + .removeLineAdvanceAssigment(advanceAssigment); Util.reloadBindings(window); } } @@ -141,9 +147,11 @@ public class ManageOrderElementAdvancesController extends Listbox listAdvancesMeasurement = (Listbox)window.getFellow("editAdvancesMeasurement"); Listitem selectedItem = listAdvancesMeasurement.getSelectedItem(); if(selectedItem != null){ - AdvanceMeasurementDTO advanceMeasurementDTO = (AdvanceMeasurementDTO) selectedItem.getValue(); - if(advanceMeasurementDTO != null){ - manageOrderElementAdvancesModel.removeLineAdvanceMeasurement(advanceMeasurementDTO); + AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) selectedItem + .getValue(); + if (advanceMeasurement != null) { + manageOrderElementAdvancesModel + .removeLineAdvanceMeasurement(advanceMeasurement); Util.reloadBindings(window); } } @@ -157,8 +165,8 @@ public class ManageOrderElementAdvancesController extends return manageOrderElementAdvancesModel.getActivesAdvanceTypes(); } - public boolean isReadOnlyAdvanceMeasurementDTOs(){ - return manageOrderElementAdvancesModel.isReadOnlyAdvanceMeasurementDTOs(); + public boolean isReadOnlyAdvanceMeasurements() { + return manageOrderElementAdvancesModel.isReadOnlyAdvanceMeasurements(); } public AdvanceTypeListRenderer getAdvancesRenderer() { @@ -175,13 +183,12 @@ public class ManageOrderElementAdvancesController extends public class AdvanceTypeListRenderer implements ListitemRenderer { @Override public void render(Listitem listItem, Object data) throws Exception { - final AdvanceAssigmentDTO advanceDTO = (AdvanceAssigmentDTO) data; - listItem.setValue(advanceDTO); + final AdvanceAssigment advance = (AdvanceAssigment) data; + listItem.setValue(advance); listItem.setDraggable("true"); listItem.setDroppable("true"); - if((advanceDTO.getType().equals(AdvanceAssigment.Type.DIRECT)) - && ((advanceDTO.getIsNewObject())||(advanceDTO.getIsNewDTO()))){ + if (advance.getType().equals(AdvanceAssigment.Type.DIRECT)) { appendComboboxAdvancType(listItem); } else { appendLabelAdvanceType(listItem); @@ -196,7 +203,7 @@ public class ManageOrderElementAdvancesController extends } private void appendComboboxAdvancType(final Listitem listItem){ - final AdvanceAssigmentDTO advanceDTO = (AdvanceAssigmentDTO)listItem.getValue(); + final AdvanceAssigment advance = (AdvanceAssigment) listItem.getValue(); final Combobox comboAdvanceTypes = new Combobox(); final List listAdvanceType = manageOrderElementAdvancesModel .getActivesAdvanceTypes(); @@ -206,8 +213,9 @@ public class ManageOrderElementAdvancesController extends comboItem.setLabel(advanceType.getUnitName()); comboItem.setParent(comboAdvanceTypes); - if((advanceDTO.getAdvanceType()!=null)&& - (advanceDTO.getAdvanceType().getId().equals(advanceType.getId()))) + if ((advance.getAdvanceType() != null) + && (advance.getAdvanceType().getId().equals(advanceType + .getId()))) comboAdvanceTypes.setSelectedItem(comboItem); } comboAdvanceTypes.addEventListener(Events.ON_SELECT, @@ -232,9 +240,8 @@ public class ManageOrderElementAdvancesController extends if(((comboItem!=null))&&(comboItem.getValue() != null)&& (comboItem.getValue() instanceof AdvanceType)){ AdvanceType advanceType = (AdvanceType)comboItem.getValue(); - advanceDTO.setAdvanceType(advanceType); - advanceDTO.setUnitName(advanceType.getUnitName()); - advanceDTO.setMaxValue(advanceType.getDefaultMaxValue()); + advance.setAdvanceType(advanceType); + advance.setMaxValue(advanceType.getDefaultMaxValue()); } } }); @@ -244,32 +251,33 @@ public class ManageOrderElementAdvancesController extends } private void appendLabelAdvanceType(final Listitem listItem){ - final AdvanceAssigmentDTO advanceDTO = (AdvanceAssigmentDTO)listItem.getValue(); - Label unitName = new Label(advanceDTO.getUnitName()); + final AdvanceAssigment advance = (AdvanceAssigment) listItem.getValue(); + Label unitName = new Label(advance.getAdvanceType().getUnitName()); Listcell listCell = new Listcell(); listCell.appendChild(unitName); listItem.appendChild(listCell); } private void appendDecimalBoxMaxValue(final Listitem listItem){ - final AdvanceAssigmentDTO advanceAssigmentDTO = (AdvanceAssigmentDTO)listItem.getValue(); + final AdvanceAssigment advanceAssigment = (AdvanceAssigment) listItem + .getValue(); Decimalbox maxValue = new Decimalbox(); maxValue.setScale(2); - if(advanceAssigmentDTO.getType().equals(AdvanceAssigment.Type.CALCULATED)) + if(advanceAssigment.getType().equals(AdvanceAssigment.Type.CALCULATED)) maxValue.setDisabled(true); Util.bind(maxValue, new Util.Getter() { @Override public BigDecimal get() { - return advanceAssigmentDTO.getMaxValue(); + return advanceAssigment.getMaxValue(); } }, new Util.Setter() { @Override public void set(BigDecimal value) { - advanceAssigmentDTO.setMaxValue(value); + advanceAssigment.setMaxValue(value); } }); maxValue.addEventListener(Events.ON_CHANGE, @@ -287,24 +295,25 @@ public class ManageOrderElementAdvancesController extends } private void appendDecimalBoxValue(final Listitem listItem){ - final AdvanceAssigmentDTO advanceAssigmentDTO = (AdvanceAssigmentDTO)listItem.getValue(); + final AdvanceAssigment advanceAssigment = (AdvanceAssigment) listItem + .getValue(); Decimalbox value = new Decimalbox(); value.setScale(2); value.setDisabled(true); - final AdvanceMeasurementDTO advanceMeasurementDTO = - this.manageOrderElementAdvancesModel.getFirstAdvanceMeasurement(advanceAssigmentDTO); - if(advanceMeasurementDTO != null){ + final AdvanceMeasurement advanceMeasurement = this.manageOrderElementAdvancesModel + .getFirstAdvanceMeasurement(advanceAssigment); + if (advanceMeasurement != null) { Util.bind(value, new Util.Getter() { - @Override - public BigDecimal get() { - return advanceMeasurementDTO.getValue(); - } - }, new Util.Setter() { + @Override + public BigDecimal get() { + return advanceMeasurement.getValue(); + } + }, new Util.Setter() { @Override public void set(BigDecimal value) { - advanceMeasurementDTO.setValue(value); + advanceMeasurement.setValue(value); } }); } @@ -314,13 +323,18 @@ public class ManageOrderElementAdvancesController extends } private void appendLabelPercentage(final Listitem listItem){ - final AdvanceAssigmentDTO advanceAssigmentDTO = (AdvanceAssigmentDTO)listItem.getValue(); + final AdvanceAssigment advanceAssigment = (AdvanceAssigment) listItem + .getValue(); Label percentage = new Label(); - final AdvanceMeasurementDTO advanceMeasurementDTO = - this.manageOrderElementAdvancesModel.getFirstAdvanceMeasurement(advanceAssigmentDTO); - if(advanceMeasurementDTO != null){ - percentage.setValue(advanceMeasurementDTO.getPercentage_()); + final AdvanceMeasurement advanceMeasurement = this.manageOrderElementAdvancesModel + .getFirstAdvanceMeasurement(advanceAssigment); + if (advanceMeasurement != null) { + percentage + .setValue(this.manageOrderElementAdvancesModel + .getPercentageAdvanceMeasurement(advanceMeasurement) + .toString() + + " %"); } Listcell listCell = new Listcell(); @@ -329,24 +343,25 @@ public class ManageOrderElementAdvancesController extends } private void appendDateBoxDate(final Listitem listItem){ - final AdvanceAssigmentDTO advanceAssigmentDTO = (AdvanceAssigmentDTO)listItem.getValue(); + final AdvanceAssigment advanceAssigment = (AdvanceAssigment) listItem + .getValue(); Datebox date = new Datebox(); date.setDisabled(true); - final AdvanceMeasurementDTO advanceMeasurementDTO = - this.manageOrderElementAdvancesModel.getFirstAdvanceMeasurement(advanceAssigmentDTO); - if(advanceMeasurementDTO != null){ + final AdvanceMeasurement advanceMeasurement = this.manageOrderElementAdvancesModel + .getFirstAdvanceMeasurement(advanceAssigment); + if (advanceMeasurement != null) { Util.bind(date, new Util.Getter() { @Override public Date get() { - return advanceMeasurementDTO.getDate(); + return advanceMeasurement.getDate(); } - }, new Util.Setter() { + }, new Util.Setter() { @Override public void set(Date value) { - advanceMeasurementDTO.setDate(value); + advanceMeasurement.setDate(value); } }); } @@ -356,11 +371,13 @@ public class ManageOrderElementAdvancesController extends } private void appendRadioSpread(final Listitem listItem){ - final AdvanceAssigmentDTO advanceAssigmentDTO = (AdvanceAssigmentDTO)listItem.getValue(); + final AdvanceAssigment advanceAssigment = (AdvanceAssigment) listItem + .getValue(); Radio reportGlobalAdvance = new Radio(); - reportGlobalAdvance.setChecked(advanceAssigmentDTO.getReportGlobalAdvance()); + reportGlobalAdvance.setChecked(advanceAssigment + .getReportGlobalAdvance()); - if(advanceAssigmentDTO.getType().equals(AdvanceAssigment.Type.CALCULATED)) + if (advanceAssigment.getType().equals(AdvanceAssigment.Type.CALCULATED)) reportGlobalAdvance.setDisabled(true); reportGlobalAdvance.addEventListener(Events.ON_CHECK, @@ -376,9 +393,10 @@ public class ManageOrderElementAdvancesController extends } private void appendCalculatedCheckbox(final Listitem listItem){ - final AdvanceAssigmentDTO advanceDTO = (AdvanceAssigmentDTO)listItem.getValue(); + final AdvanceAssigment advance = (AdvanceAssigment) listItem.getValue(); Checkbox calculated = new Checkbox(); - boolean isCalculated = advanceDTO.getType().equals(AdvanceAssigment.Type.CALCULATED); + boolean isCalculated = advance.getType().equals( + AdvanceAssigment.Type.CALCULATED); calculated.setChecked(isCalculated); calculated.setDisabled(true); @@ -394,8 +412,8 @@ public class ManageOrderElementAdvancesController extends if(selectedItem != null){ AdvanceType advanceType = ((AdvanceType) selectedItem.getValue()); if(advanceType != null){ - AdvanceAssigmentDTO advanceDTO = (AdvanceAssigmentDTO)item.getValue(); - advanceDTO.setMaxValue(advanceType.getDefaultMaxValue()); + AdvanceAssigment advance = (AdvanceAssigment) item.getValue(); + advance.setMaxValue(advanceType.getDefaultMaxValue()); miBox.setValue(advanceType.getDefaultMaxValue()); } } @@ -406,15 +424,19 @@ public class ManageOrderElementAdvancesController extends if ((this.indexSelectedItem < listAdvances.getItemCount()) && (this.indexSelectedItem >= 0)) { Listitem selectedItem = listAdvances.getItemAtIndex(indexSelectedItem); - AdvanceAssigmentDTO advanceAssigmentDTO = - (AdvanceAssigmentDTO) selectedItem.getValue(); + AdvanceAssigment advanceAssigment = (AdvanceAssigment) selectedItem + .getValue(); - final AdvanceMeasurementDTO greatAdvanceMeasurementDTO = - this.manageOrderElementAdvancesModel.getFirstAdvanceMeasurement(advanceAssigmentDTO); - if(greatAdvanceMeasurementDTO != null){ + final AdvanceMeasurement greatAdvanceMeasurement = this.manageOrderElementAdvancesModel + .getFirstAdvanceMeasurement(advanceAssigment); + if (greatAdvanceMeasurement != null) { Listcell percentage = (Listcell) selectedItem.getChildren() .get(3); - ((Label)percentage.getFirstChild()).setValue(greatAdvanceMeasurementDTO.getPercentage_()); + ((Label) percentage.getFirstChild()) + .setValue(this.manageOrderElementAdvancesModel + .getPercentageAdvanceMeasurement( + greatAdvanceMeasurement).toString() + + " %"); } } } @@ -423,21 +445,21 @@ public class ManageOrderElementAdvancesController extends if(this.indexSelectedItem >= 0){ Listbox listAdvances = ((Listbox) window.getFellow("editAdvances")); Listitem selectedItem = listAdvances.getItemAtIndex(indexSelectedItem); - AdvanceAssigmentDTO advanceAssigmentDTO = - (AdvanceAssigmentDTO) selectedItem.getValue(); - final AdvanceMeasurementDTO greatAdvanceMeasurementDTO = - this.manageOrderElementAdvancesModel.getFirstAdvanceMeasurement(advanceAssigmentDTO); - if(greatAdvanceMeasurementDTO != null){ + AdvanceAssigment advanceAssigment = (AdvanceAssigment) selectedItem + .getValue(); + final AdvanceMeasurement greatAdvanceMeasurement = this.manageOrderElementAdvancesModel + .getFirstAdvanceMeasurement(advanceAssigment); + if (greatAdvanceMeasurement != null) { Listcell value = (Listcell)selectedItem.getChildren().get(2); - ((Decimalbox)value.getFirstChild()).setValue(greatAdvanceMeasurementDTO.getValue()); + ((Decimalbox) value.getFirstChild()) + .setValue(greatAdvanceMeasurement.getValue()); } } } public void setCurrentDate(Listitem item){ - this.manageOrderElementAdvancesModel.modifyListAdvanceMeasurement( - (AdvanceMeasurementDTO)item.getValue()); + this.manageOrderElementAdvancesModel.sortListAdvanceMeasurement(); Util.reloadBindings(window.getFellow("editAdvancesMeasurement")); this.setCurrentDate(); @@ -449,20 +471,23 @@ public class ManageOrderElementAdvancesController extends if(this.indexSelectedItem >= 0){ Listbox listAdvances = ((Listbox) window.getFellow("editAdvances")); Listitem selectedItem = listAdvances.getItemAtIndex(indexSelectedItem); - AdvanceAssigmentDTO advanceAssigmentDTO = - (AdvanceAssigmentDTO) selectedItem.getValue(); - final AdvanceMeasurementDTO greatAdvanceMeasurementDTO = - this.manageOrderElementAdvancesModel.getFirstAdvanceMeasurement(advanceAssigmentDTO); - if(greatAdvanceMeasurementDTO != null){ - Listcell date = (Listcell)selectedItem.getChildren().get(4); - ((Datebox)date.getFirstChild()).setValue(greatAdvanceMeasurementDTO.getDate()); + AdvanceAssigment advanceAssigment = (AdvanceAssigment) selectedItem + .getValue(); + final AdvanceMeasurement greatAdvanceMeasurement = + this.manageOrderElementAdvancesModel + .getFirstAdvanceMeasurement(advanceAssigment); + if(greatAdvanceMeasurement != null){ + Listcell date = (Listcell) selectedItem.getChildren().get(4); + ((Datebox) date.getFirstChild()) + .setValue(greatAdvanceMeasurement.getDate()); } } } private void cleanDate(final Listitem item){ - final AdvanceMeasurementDTO advanceMeasurementDTO = (AdvanceMeasurementDTO) item.getValue(); - advanceMeasurementDTO.setDate(null); + final AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) item + .getValue(); + advanceMeasurement.setDate(null); Listcell celdaDate = (Listcell)item.getChildren().get(2); ((Datebox)celdaDate.getFirstChild()).setValue(null); } @@ -481,58 +506,17 @@ public class ManageOrderElementAdvancesController extends Radio radioSpread = ((Radio)celdaSpread.getFirstChild()); if(!radioSpread.isDisabled()){ radioSpread.setChecked(false); - ((AdvanceAssigmentDTO)listItem.getValue()).setReportGlobalAdvance(false); + ((AdvanceAssigment) listItem.getValue()) + .setReportGlobalAdvance(false); } } } Listcell celdaSpread = (Listcell) item.getChildren().get(5); ((Radio)celdaSpread.getFirstChild()).setChecked(true); - ((AdvanceAssigmentDTO)item.getValue()).setReportGlobalAdvance(true); + ((AdvanceAssigment) item.getValue()).setReportGlobalAdvance(true); } - public Constraint checkValidValue() { - Constraint newConstraint = new Constraint() { - @Override - public void validate(Component comp, Object value) - throws WrongValueException { - if (((BigDecimal) value) != null){ - if(manageOrderElementAdvancesModel.greatThanMaxValue((BigDecimal)value)){ - throw new WrongValueException( - comp, - _("Value is not valid, the current value must be less than max value")); - } - if (!(manageOrderElementAdvancesModel.isPrecisionValid((BigDecimal)value))) { - throw new WrongValueException( - comp, - _("Value is not valid, the Precision value must be exact " - +manageOrderElementAdvancesModel.getUnitPrecision())); - } - } - } - }; - return newConstraint; - } - - public Constraint checkValidDate() { - Constraint newConstraint = new Constraint() { - @Override - public void validate(Component comp, Object value) - throws WrongValueException { - if (((Date) value) != null) { - Listitem listitem = (Listitem)comp.getParent().getParent(); - AdvanceMeasurementDTO advanceMeasurementDTO =(AdvanceMeasurementDTO) listitem.getValue(); - if(!manageOrderElementAdvancesModel.isDistinctValidDate((Date)value,advanceMeasurementDTO)){ - throw new WrongValueException( - comp, - _("The date is not valid, the date must be unique for this advance assigment")); - } - } - } - }; - return newConstraint; - } - private boolean validateDataForm(){ return ((validateListAdvanceAssigment()) &&(validateListAdvanceMeasurement())); @@ -543,9 +527,12 @@ public class ManageOrderElementAdvancesController extends for(int i=0; i< listAdvances.getChildren().size(); i++){ if(listAdvances.getChildren().get(i) instanceof Listitem){ Listitem listItem = (Listitem) listAdvances.getChildren().get(i); - AdvanceAssigmentDTO advanceDTO = (AdvanceAssigmentDTO) listItem.getValue(); - if(advanceDTO.getAdvanceType() == null)return false; - if(advanceDTO.getMaxValue() == null)return false; + AdvanceAssigment advance = (AdvanceAssigment) listItem + .getValue(); + if (advance.getAdvanceType() == null) + return false; + if (advance.getMaxValue() == null) + return false; } } return true; @@ -556,9 +543,12 @@ public class ManageOrderElementAdvancesController extends for(int i=0; i< listAdvances.getChildren().size(); i++){ if(listAdvances.getChildren().get(i) instanceof Listitem){ Listitem listItem = (Listitem) listAdvances.getChildren().get(i); - AdvanceMeasurementDTO advanceDTO = (AdvanceMeasurementDTO) listItem.getValue(); - if(advanceDTO.getValue() == null)return false; - if(advanceDTO.getDate() == null)return false; + AdvanceMeasurement advance = (AdvanceMeasurement) listItem + .getValue(); + if (advance.getValue() == null) + return false; + if (advance.getDate() == null) + return false; } } return true; @@ -570,10 +560,12 @@ public class ManageOrderElementAdvancesController extends for(int i=0; i< listAdvances.getChildren().size(); i++){ if(listAdvances.getChildren().get(i) instanceof Listitem){ Listitem listItem = (Listitem) listAdvances.getChildren().get(i); - AdvanceAssigmentDTO advanceAssigmentDTO = (AdvanceAssigmentDTO) listItem.getValue(); - if(advanceAssigmentDTO.getType().equals(AdvanceAssigment.Type.DIRECT)){ + AdvanceAssigment advanceAssigment = (AdvanceAssigment) listItem + .getValue(); + if (advanceAssigment.getType().equals( + AdvanceAssigment.Type.DIRECT)) { existItems = true; - if(advanceAssigmentDTO.getReportGlobalAdvance()){ + if (advanceAssigment.getReportGlobalAdvance()) { return true; } } @@ -582,4 +574,155 @@ public class ManageOrderElementAdvancesController extends if(!existItems) return true; return false; } -} \ No newline at end of file + + public AdvanceMeasurementRenderer getAdvanceMeasurementRenderer() { + return advanceMeasurementRenderer; + } + + private class AdvanceMeasurementRenderer implements ListitemRenderer { + + @Override + public void render(Listitem item, Object data) throws Exception { + AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) data; + + item.setValue(advanceMeasurement); + + appendDecimalBoxValue(item); + appendLabelPercentage(item); + appendDateboxDate(item); + } + + private void appendDecimalBoxValue(final Listitem listitem) { + final AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) listitem + .getValue(); + final Decimalbox value = new Decimalbox(); + + Listcell listcell = new Listcell(); + listcell.appendChild(value); + listitem.appendChild(listcell); + + value.setScale(2); + value.setDisabled(isReadOnlyAdvanceMeasurements()); + value.addEventListener(Events.ON_CHANGE, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + updatesValue(value); + } + }); + value.setConstraint(checkValidValue()); + + Util.bind(value, new Util.Getter() { + + @Override + public BigDecimal get() { + return advanceMeasurement.getValue(); + } + }, new Util.Setter() { + + @Override + public void set(BigDecimal value) { + advanceMeasurement.setValue(value); + } + }); + } + + private void appendLabelPercentage(final Listitem listitem) { + final AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) listitem + .getValue(); + + BigDecimal percentage = manageOrderElementAdvancesModel + .getPercentageAdvanceMeasurement(advanceMeasurement); + Label percentageLabel = new Label(percentage.toString() + " %"); + + Listcell listcell = new Listcell(); + listcell.appendChild(percentageLabel); + listitem.appendChild(listcell); + } + + private void appendDateboxDate(final Listitem listitem) { + final AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) listitem + .getValue(); + Datebox date = new Datebox(); + + Listcell listcell = new Listcell(); + listcell.appendChild(date); + listitem.appendChild(listcell); + + date.setDisabled(isReadOnlyAdvanceMeasurements()); + date.addEventListener(Events.ON_CHANGE, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + setCurrentDate(listitem); + } + }); + date.setConstraint(checkValidDate()); + + Util.bind(date, new Util.Getter() { + + @Override + public Date get() { + return advanceMeasurement.getDate(); + } + }, new Util.Setter() { + + @Override + public void set(Date value) { + advanceMeasurement.setDate(value); + } + }); + } + + private Constraint checkValidValue() { + Constraint newConstraint = new Constraint() { + @Override + public void validate(Component comp, Object value) + throws WrongValueException { + if (((BigDecimal) value) != null) { + if (manageOrderElementAdvancesModel + .greatThanMaxValue((BigDecimal) value)) { + throw new WrongValueException( + comp, + _("Value is not valid, the current value must be less than max value")); + } + if (!(manageOrderElementAdvancesModel + .isPrecisionValid((BigDecimal) value))) { + throw new WrongValueException( + comp, + _("Value is not valid, the Precision value must be exact " + + manageOrderElementAdvancesModel + .getUnitPrecision())); + } + } + } + }; + return newConstraint; + } + + private Constraint checkValidDate() { + Constraint newConstraint = new Constraint() { + @Override + public void validate(Component comp, Object value) + throws WrongValueException { + if (((Date) value) != null) { + Listitem listitem = (Listitem) comp.getParent() + .getParent(); + AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) listitem + .getValue(); + if (!manageOrderElementAdvancesModel + .isDistinctValidDate((Date) value, + advanceMeasurement)) { + throw new WrongValueException( + comp, + _("The date is not valid, the date must be unique for this advance assigment")); + } + } + } + }; + return newConstraint; + } + + } + +} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java index 6103dfdbf..c5b8635c1 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java @@ -5,6 +5,7 @@ import static org.navalplanner.web.I18nHelper._; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.List; import java.util.SortedSet; @@ -45,9 +46,7 @@ public class ManageOrderElementAdvancesModel implements private OrderElement orderElement; - private AdvanceAssigmentDTO advanceAssigmentDTO; - - private List advanceAssigmentDTOs; + private AdvanceAssigment advanceAssigment; private List listAdvanceAssigments; @@ -68,51 +67,60 @@ public class ManageOrderElementAdvancesModel implements @Override public String getInfoAdvanceAssigment(){ - if((this.advanceAssigmentDTO == null) || + if ((this.advanceAssigment == null) || (this.orderElement == null)) { return ""; } - if((this.advanceAssigmentDTO.getUnitName() == null) || - this.advanceAssigmentDTO.getMaxValue() == null){ + if ((this.advanceAssigment.getAdvanceType() == null) + || this.advanceAssigment.getMaxValue() == null) { return ""; } - return " "+this.advanceAssigmentDTO.getUnitName()+_(". Max value: ")+ - this.advanceAssigmentDTO.getMaxValue(); + return " " + this.advanceAssigment.getAdvanceType().getUnitName() + + _(". Max value: ") + this.advanceAssigment.getMaxValue(); } @Override @Transactional(readOnly = true) - public List getAdvanceMeasurementDTOs() { - if((this.advanceAssigmentDTO == null) || + public List getAdvanceMeasurements() { + if ((this.advanceAssigment == null) || (this.orderElement == null)) { - return new ArrayList(); + return new ArrayList(); } - return this.advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView(); + return new ArrayList(this.advanceAssigment + .getAdvanceMeasurements()); } @Override @Transactional(readOnly = true) - public List getAdvanceAssigmentDTOs(){ - if(this.orderElement == null){ - return new ArrayList(); + public List getAdvanceAssigments() { + if (orderElement == null) { + return new ArrayList(); } - return this.advanceAssigmentDTOs; + return listAdvanceAssigments; } @Override - public void prepareEditAdvanceMeasurements(AdvanceAssigmentDTO advanceAssigmentDTO){ - this.advanceAssigmentDTO = advanceAssigmentDTO; + public void prepareEditAdvanceMeasurements(AdvanceAssigment advanceAssigment) { + this.advanceAssigment = advanceAssigment; } @Override @Transactional(readOnly = true) public void init(OrderElement orderElement) { this.orderElement = orderElement; - this.advanceAssigmentDTO = null; + this.advanceAssigment = null; if (orderElement != null){ loadAdvanceTypes(); reattachmentOrderElement(); - createAdvanceDTOs(); + forceLoadAdvanceAssigmentsAndMeasurements(); + fillVariables(); + } + } + + private void forceLoadAdvanceAssigmentsAndMeasurements() { + for (AdvanceAssigment advanceAssigment : orderElement + .getAdvanceAssigments()) { + advanceAssigment.getAdvanceMeasurements().size(); } } @@ -120,54 +128,48 @@ public class ManageOrderElementAdvancesModel implements orderElementDAO.save(orderElement); } - public void createAdvanceDTOs() { - this.advanceAssigmentDTOs = new ArrayList(); + private void fillVariables() { this.listAdvanceAssigments = new ArrayList(); - this.listAdvanceMeasurements = new TreeSet(new AdvanceMeasurementComparator()); + this.listAdvanceMeasurements = new TreeSet( + new AdvanceMeasurementComparator()); for (AdvanceAssigment advanceAssigment : this.orderElement - .getAdvanceAssigments()) { - AdvanceAssigmentDTO advanceAssigmentDTO = new AdvanceAssigmentDTO( - advanceAssigment.getAdvanceType(), advanceAssigment, - advanceAssigment.getAdvanceMeasurements()); - - for (AdvanceMeasurement advanceMeasurement : advanceAssigment. - getAdvanceMeasurements()) { - AdvanceMeasurementDTO advanceMeasurementDTO = new AdvanceMeasurementDTO( - advanceMeasurement); - - advanceAssigmentDTO.getAdvanceMeasurementDTOs().add(advanceMeasurementDTO); - advanceMeasurementDTO.setAdvanceAssigmentDTO(advanceAssigmentDTO); + .getAdvanceAssigments()) { + this.listAdvanceAssigments.add(advanceAssigment); + for (AdvanceMeasurement advanceMeasurement : advanceAssigment + .getAdvanceMeasurements()) { this.listAdvanceMeasurements.add(advanceMeasurement); } - this.advanceAssigmentDTOs.add(advanceAssigmentDTO); - this.listAdvanceAssigments.add(advanceAssigment); } } @Override public void addNewLineAdvaceAssigment() { - AdvanceAssigmentDTO newAdvance = new AdvanceAssigmentDTO(); - this.advanceAssigmentDTOs.add(newAdvance); + AdvanceAssigment newAdvance = AdvanceAssigment.create(); + newAdvance.setType(AdvanceAssigment.Type.DIRECT); + newAdvance.setOrderElement(this.orderElement); + + listAdvanceAssigments.add(newAdvance); } @Override public void addNewLineAdvaceMeasurement() { - if(this.advanceAssigmentDTO != null){ - AdvanceMeasurementDTO newAdvance = new AdvanceMeasurementDTO(); - newAdvance.setAdvanceAssigmentDTO(advanceAssigmentDTO); - this.advanceAssigmentDTO.getAdvanceMeasurementDTOs().add(newAdvance); + if (this.advanceAssigment != null) { + AdvanceMeasurement newMeasurement = AdvanceMeasurement.create(); + newMeasurement.setDate(new Date()); + newMeasurement.setAdvanceAssigment(this.advanceAssigment); + this.advanceAssigment.getAdvanceMeasurements().add(newMeasurement); } } @Override - public void removeLineAdvanceAssigment(AdvanceAssigmentDTO advanceDTO) { - this.advanceAssigmentDTOs.remove(advanceDTO); - this.advanceAssigmentDTO = null; + public void removeLineAdvanceAssigment(AdvanceAssigment advance) { + this.listAdvanceAssigments.remove(advance); + this.advanceAssigment = null; } @Override - public void removeLineAdvanceMeasurement(AdvanceMeasurementDTO advanceDTO) { - this.advanceAssigmentDTO.getAdvanceMeasurementDTOs().remove(advanceDTO); + public void removeLineAdvanceMeasurement(AdvanceMeasurement advance) { + this.advanceAssigment.getAdvanceMeasurements().remove(advance); } @Override @@ -184,20 +186,22 @@ public class ManageOrderElementAdvancesModel implements } @Override - public boolean isReadOnlyAdvanceMeasurementDTOs(){ - if(this.advanceAssigmentDTO == null) return true; - return this.advanceAssigmentDTO.getType().equals(AdvanceAssigment.Type.CALCULATED); + public boolean isReadOnlyAdvanceMeasurements(){ + if (this.advanceAssigment == null) + return true; + return this.advanceAssigment.getType().equals( + AdvanceAssigment.Type.CALCULATED); } @Override public void cleanAdvance(){ - if(this.advanceAssigmentDTO != null){ - this.advanceAssigmentDTO.setReportGlobalAdvance(false); - List listAdvanceMeasurementDTOs = - this.advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView(); - for(AdvanceMeasurementDTO advanceMeasurementDTO : listAdvanceMeasurementDTOs){ - advanceMeasurementDTO.setValue(BigDecimal.ZERO); - advanceMeasurementDTO.setDate(null); + if (this.advanceAssigment != null) { + this.advanceAssigment.setReportGlobalAdvance(false); + List listAdvanceMeasurements = new ArrayList( + this.advanceAssigment.getAdvanceMeasurements()); + for (AdvanceMeasurement advanceMeasurement : listAdvanceMeasurements) { + advanceMeasurement.setValue(BigDecimal.ZERO); + advanceMeasurement.setDate(null); } } } @@ -216,23 +220,20 @@ public class ManageOrderElementAdvancesModel implements DuplicateAdvanceAssigmentForOrderElementException, DuplicateValueTrueReportGlobalAdvanceException{ updateRemoveAdvances(); - for(AdvanceAssigmentDTO advanceAssigmentDTO : this.advanceAssigmentDTOs){ - if(advanceAssigmentDTO.getType().equals(AdvanceAssigment.Type.DIRECT)) - validateBasicData(advanceAssigmentDTO); + for (AdvanceAssigment advanceAssigment : this.listAdvanceAssigments) { + if(advanceAssigment.getType().equals(AdvanceAssigment.Type.DIRECT)) + validateBasicData(advanceAssigment); } } private void updateRemoveAdvances(){ for(AdvanceAssigment advanceAssigment : this.listAdvanceAssigments){ - AdvanceAssigmentDTO advanceAssigmentDTO = yetExistAdvanceAssigment(advanceAssigment); - if(advanceAssigmentDTO == null){ - updateRemoveCalculatedAdvanceAssigment(orderElement,advanceAssigment); - removeAdvanceAssigment(advanceAssigment); + AdvanceAssigment advance = yetExistAdvanceAssigment(advanceAssigment); + if (advance == null) { + removeAdvanceAssigment(advance); }else{ for(AdvanceMeasurement advanceMeasurement : this.listAdvanceMeasurements){ - if(!yetExistAdvanceMeasurement(advanceAssigmentDTO,advanceMeasurement)){ - updateRemoveCalculatedAdvanceMeasurement(orderElement, - advanceAssigment,advanceMeasurement); + if (!yetExistAdvanceMeasurement(advance, advanceMeasurement)) { removeAdvanceMeasurement(advanceMeasurement); } } @@ -240,118 +241,40 @@ public class ManageOrderElementAdvancesModel implements } } - private void validateBasicData(AdvanceAssigmentDTO advanceAssigmentDTO) + private void validateBasicData(AdvanceAssigment advanceAssigment) throws InstanceNotFoundException,DuplicateAdvanceAssigmentForOrderElementException, DuplicateValueTrueReportGlobalAdvanceException{ - if(advanceAssigmentDTO.getIsNewDTO()){ - AdvanceAssigment newAdvanceAssigment = createNewAdvance(advanceAssigmentDTO); - addCalculatedAdvanceAssigmentToAncestors(this.orderElement, - advanceAssigmentDTO,newAdvanceAssigment); - addAdvanceAssigment(newAdvanceAssigment); - }else{ - AdvanceAssigment newAdvanceAssigment = advanceAssigmentDTO.getAdvanceAssigment(); - addCalculatedAdvanceAssigmentToAncestors(this.orderElement, - advanceAssigmentDTO,newAdvanceAssigment); - updateAdvanceAssigment(advanceAssigmentDTO); + if (advanceAssigment.getVersion() == null) { + addAdvanceAssigment(advanceAssigment); } } - private void updateAdvanceAssigment(AdvanceAssigmentDTO advanceAssigmentDTO){ - //Removed the advance and add a new advanceAssigment - AdvanceAssigment advanceAssigment = advanceAssigmentDTO.getAdvanceAssigment(); - for(AdvanceMeasurementDTO advanceMeasurementDTO : - advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView()){ - if(advanceMeasurementDTO.getIsNewDTO()){ - AdvanceMeasurement newAdvanceMeasurement = - createAdvanceMeasurement(advanceMeasurementDTO); - advanceAssigment.getAdvanceMeasurements().add(newAdvanceMeasurement); - }else{ - AdvanceMeasurement newAdvanceMeasurement = - createAdvanceMeasurement(advanceMeasurementDTO); - removeAdvanceMeasurement(advanceMeasurementDTO.getAdvanceMeasurement()); - advanceAssigment.getAdvanceMeasurements().add(newAdvanceMeasurement); - } - } - //Update changes in AdvanceAssigment - advanceAssigment.setReportGlobalAdvance(advanceAssigmentDTO.getReportGlobalAdvance()); - advanceAssigment.setMaxValue(advanceAssigmentDTO.getMaxValue()); - advanceAssigment.setAdvanceType(advanceAssigmentDTO.getAdvanceType()); - } - - private AdvanceMeasurement createAdvanceMeasurement(AdvanceMeasurementDTO advanceMeasurementDTO){ - AdvanceMeasurement newAdvanceMeasurement = AdvanceMeasurement.create( - advanceMeasurementDTO.getDate(),advanceMeasurementDTO.getValue(),0); - AdvanceAssigment advanceAssigment = advanceMeasurementDTO.getAdvanceAssigmentDTO(). - getAdvanceAssigment(); - newAdvanceMeasurement.setAdvanceAssigment(advanceAssigment); - return newAdvanceMeasurement; - } - - private AdvanceAssigmentDTO yetExistAdvanceAssigment(AdvanceAssigment advanceAssigment){ - for(AdvanceAssigmentDTO advanceDTO : this.advanceAssigmentDTOs){ - if((!advanceDTO.getIsNewDTO()) && - (advanceDTO.getAdvanceAssigment().getId() == advanceAssigment.getId())) - return advanceDTO; + private AdvanceAssigment yetExistAdvanceAssigment( + AdvanceAssigment advanceAssigment) { + for (AdvanceAssigment advance : this.orderElement + .getAdvanceAssigments()) { + if ((advance.getId() == advanceAssigment.getId())) + return advance; } return null; } - private boolean yetExistAdvanceMeasurement(AdvanceAssigmentDTO advanceAssigmentDTO, + private boolean yetExistAdvanceMeasurement(AdvanceAssigment advanceAssigment, AdvanceMeasurement advanceMeasurement){ - if(belongsToAdvanceAssigment(advanceAssigmentDTO,advanceMeasurement)){ - for(AdvanceMeasurementDTO advanceDTO : - advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView()){ - if((!advanceDTO.getIsNewDTO()) && - (advanceDTO.getAdvanceMeasurement().getId() == advanceMeasurement.getId())){ - return true; - } - } - return false; - } - return true; - } - - private boolean belongsToAdvanceAssigment(AdvanceAssigmentDTO advanceAssigmentDTO, - AdvanceMeasurement advanceMeasurement){ - AdvanceAssigment advanceAssigment = advanceAssigmentDTO.getAdvanceAssigment(); - if(advanceAssigment != null){ - if(advanceAssigment.getId() == advanceMeasurement.getAdvanceAssigment().getId()) + for (AdvanceMeasurement advance : advanceAssigment + .getAdvanceMeasurements()) { + if (advance.getId() == advanceMeasurement.getId()) { return true; - else return false; + } } return false; } - @Transactional(readOnly = true) - private AdvanceAssigment createNewAdvance(AdvanceAssigmentDTO advanceAssigmentDTO) - throws InstanceNotFoundException{ - //create AdvanceAssigment - AdvanceAssigment newAdvanceAssigment = AdvanceAssigment.create( - advanceAssigmentDTO.getReportGlobalAdvance(), - advanceAssigmentDTO.getMaxValue()); - newAdvanceAssigment.setAdvanceType(advanceAssigmentDTO.getAdvanceType()); - newAdvanceAssigment.setOrderElement(this.orderElement); - newAdvanceAssigment.setType(AdvanceAssigment.Type.DIRECT); - - //create AdvanceMeasurement - for(AdvanceMeasurementDTO advanceMeasurementDTO - :advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView()){ - AdvanceMeasurement newAdvanceMeasurement = AdvanceMeasurement.create( - advanceMeasurementDTO.getDate(),advanceMeasurementDTO.getValue(),0); - - //link AdvanceMeasurement to AdvanceAssigment - newAdvanceMeasurement.setAdvanceAssigment(newAdvanceAssigment); - newAdvanceAssigment.getAdvanceMeasurements().add(newAdvanceMeasurement); - } - advanceAssigmentDTO.setAdvanceAssigment(newAdvanceAssigment); - return newAdvanceAssigment; - } - @Transactional(readOnly = true) private void addAdvanceAssigment(AdvanceAssigment newAdvanceAssigment) throws DuplicateAdvanceAssigmentForOrderElementException, DuplicateValueTrueReportGlobalAdvanceException{ - this.orderElement.addAdvanceAssigment(newAdvanceAssigment); + this.orderElement.addAdvanceAssigment(newAdvanceAssigment); } private void removeAdvanceAssigment(AdvanceAssigment advanceAssigment){ @@ -363,410 +286,12 @@ public class ManageOrderElementAdvancesModel implements advanceAssigment.getAdvanceMeasurements().remove(advanceMeasurement); } - private void updateRemoveCalculatedAdvanceAssigment(OrderElement orderElement, - AdvanceAssigment advanceAssigment){ - OrderElement parent = orderElement.getParent(); - if(parent != null){ - removeCalculatedAdvanceAssigment(parent,advanceAssigment); - updateRemoveCalculatedAdvanceAssigment(parent,advanceAssigment); - } - } - - private void updateRemoveCalculatedAdvanceMeasurement(OrderElement orderElement, - AdvanceAssigment advanceAssigment,AdvanceMeasurement advanceMeasurement){ - OrderElement parent = orderElement.getParent(); - if(parent != null){ - AdvanceAssigment indirectAdvanceAssigment = - findCalculatedAdvanceInParent(parent,advanceAssigment.getAdvanceType().getId()); - if(indirectAdvanceAssigment != null){ - removeCalculatedAdvanceMeasurement(advanceMeasurement,indirectAdvanceAssigment); - updateRemoveCalculatedAdvanceMeasurement(parent,advanceAssigment,advanceMeasurement); - } - } - } - - public void addCalculatedAdvanceAssigmentToAncestors(OrderElement orderElement, - AdvanceAssigmentDTO newAdvanceAssigmentDTO,AdvanceAssigment newAdvanceAssigment) - throws DuplicateAdvanceAssigmentForOrderElementException, - DuplicateValueTrueReportGlobalAdvanceException{ - - if (orderElement.getParent() != null) { - OrderElement parent = orderElement.getParent(); - if(checkChangeTheAdvanceType(newAdvanceAssigmentDTO)){ - removeCalculatedAdvanceAssigment(parent,newAdvanceAssigment); - } - - AdvanceAssigment indirectAdvanceAssigment = - findCalculatedAdvanceInParent(parent,newAdvanceAssigmentDTO.getAdvanceType().getId()); - if(indirectAdvanceAssigment == null){ - indirectAdvanceAssigment = initNewCalculatedAdvanceAssigment(parent,newAdvanceAssigmentDTO); - parent.addAdvanceAssigment(indirectAdvanceAssigment); - } - addIncrementMaxValueToAdvanceAssigment(newAdvanceAssigmentDTO,indirectAdvanceAssigment); - addCalculatedAdvanceMeasurements(newAdvanceAssigmentDTO,indirectAdvanceAssigment); - addCalculatedAdvanceAssigmentToAncestors(parent,newAdvanceAssigmentDTO,newAdvanceAssigment); - } - } - - private void addIncrementMaxValueToAdvanceAssigment( - AdvanceAssigmentDTO newAdvanceAssigmentDTO, - AdvanceAssigment indirectAdvanceAssigment){ - BigDecimal incrementMaxValue = getIncrementMaxValue(newAdvanceAssigmentDTO); - BigDecimal currentMaxValue = indirectAdvanceAssigment.getMaxValue().add(incrementMaxValue); - indirectAdvanceAssigment.setMaxValue(currentMaxValue); - } - - private void addCalculatedAdvanceMeasurements( - AdvanceAssigmentDTO advanceAssigmentDTO, AdvanceAssigment indirectAdvanceAssigment){ - for(AdvanceMeasurementDTO advanceMeasurementDTO - :advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView()){ - if((advanceMeasurementDTO.getIsNewDTO()) - || (checkChangeTheAdvanceType(advanceAssigmentDTO))){ - addNewCalculatedAdvanceMeasurement(advanceMeasurementDTO,indirectAdvanceAssigment); - }else{ - _removeCalculatedAdvanceMeasurement(advanceMeasurementDTO,indirectAdvanceAssigment); - addNewCalculatedAdvanceMeasurement(advanceMeasurementDTO,indirectAdvanceAssigment); - } - } - } - - private void addNewCalculatedAdvanceMeasurement( - AdvanceMeasurementDTO advanceMeasurementDTO, - AdvanceAssigment indirectAdvanceAssigment){ - - AdvanceMeasurementDTO greatNeighbor = this.getGreatNeighborDTO(advanceMeasurementDTO); - AdvanceMeasurement lessNeighbor = this.getLessNeighbor(advanceMeasurementDTO); - - incrementLaterCalculatedAdvances(lessNeighbor,greatNeighbor, - advanceMeasurementDTO,indirectAdvanceAssigment); - - AdvanceMeasurement previousAdvanceMeasurement = - findPreviousIndirectAdvanceMeasurement( - advanceMeasurementDTO.getDate(),indirectAdvanceAssigment); - if(previousAdvanceMeasurement == null){ - //create and add a new indirect AdvanceMeasurement - AdvanceMeasurement newIndirectAdvanceMeasurement = AdvanceMeasurement.create( - advanceMeasurementDTO.getDate(),advanceMeasurementDTO.getValue(),0); - newIndirectAdvanceMeasurement.setAdvanceAssigment(indirectAdvanceAssigment); - newIndirectAdvanceMeasurement.incrementNumIndirectSons(); - indirectAdvanceAssigment.getAdvanceMeasurements().add(newIndirectAdvanceMeasurement); - }else{ - if(previousAdvanceMeasurement.getDate().compareTo(advanceMeasurementDTO.getDate()) < 0){ - //create and add a new indirect AdvanceMeasurement - BigDecimal incrementValue = calculateIncrementValue(lessNeighbor,advanceMeasurementDTO); - BigDecimal currentValue = previousAdvanceMeasurement.getValue().add(incrementValue); - AdvanceMeasurement newIndirectAdvanceMeasurement = AdvanceMeasurement.create( - advanceMeasurementDTO.getDate(),currentValue,0); - newIndirectAdvanceMeasurement.setAdvanceAssigment(indirectAdvanceAssigment); - newIndirectAdvanceMeasurement.incrementNumIndirectSons(); - indirectAdvanceAssigment.getAdvanceMeasurements().add(newIndirectAdvanceMeasurement); - } - if(previousAdvanceMeasurement.getDate().compareTo(advanceMeasurementDTO.getDate()) == 0){ - previousAdvanceMeasurement.incrementNumIndirectSons(); - } - } - } - - private void removeCalculatedAdvanceMeasurement(AdvanceMeasurement advanceMeasurement, - AdvanceAssigment indirectAdvanceAssigment){ - //find the indirect advanceMeasurement - AdvanceMeasurement indirectAdvanceMeasurement = - findIndirectAdvanceMeasurement(advanceMeasurement.getDate(),indirectAdvanceAssigment); - //check if the indirect advanceMeasurement is the adding of several sons. - indirectAdvanceMeasurement.decrementNumIndirectSons(); - if(indirectAdvanceMeasurement.getNumIndirectSons() == 0){ - indirectAdvanceAssigment.getAdvanceMeasurements().remove(indirectAdvanceMeasurement); - } - //update post indirect advanceMeasurement (substract the increment) - AdvanceMeasurement[] neighbors = getOldNeighborsAdvanceMeasurement(advanceMeasurement); - decrementLaterCalculatedAdvances(neighbors,advanceMeasurement,indirectAdvanceAssigment); - } - - private void _removeCalculatedAdvanceMeasurement(AdvanceMeasurementDTO advanceMeasurementDTO, - AdvanceAssigment indirectAdvanceAssigment){ - //find the indirect advanceMeasurement - AdvanceMeasurement advanceMeasurement = advanceMeasurementDTO.getAdvanceMeasurement(); - AdvanceMeasurement indirectAdvanceMeasurement = - findIndirectAdvanceMeasurement(advanceMeasurement.getDate(),indirectAdvanceAssigment); - //check if the indirect advanceMeasurement is the adding of several sons. - indirectAdvanceMeasurement.decrementNumIndirectSons(); - if(indirectAdvanceMeasurement.getNumIndirectSons() == 0){ - indirectAdvanceAssigment.getAdvanceMeasurements().remove(indirectAdvanceMeasurement); - } - //update post indirect advanceMeasurement (substract the increment) - AdvanceMeasurement lessNeighbor = getLessNeighbor(advanceMeasurementDTO); - AdvanceMeasurementDTO greatNeighbor = getGreatNeighborDTO(advanceMeasurementDTO); - _decrementLaterCalculatedAdvances(lessNeighbor,greatNeighbor,advanceMeasurement,indirectAdvanceAssigment); - } - - private void removeCalculatedAdvanceAssigment(OrderElement parent, - AdvanceAssigment newAdvanceAssigment){ - AdvanceAssigment indirectAdvanceAssigment = - findCalculatedAdvanceInParent(parent,newAdvanceAssigment.getAdvanceType().getId()); - if(indirectAdvanceAssigment != null){ - if(decrementMaxValue(newAdvanceAssigment,indirectAdvanceAssigment)){ - parent.removeAdvanceAssigment(indirectAdvanceAssigment); - }else{ - for(AdvanceMeasurement advanceMeasurement : - newAdvanceAssigment.getAdvanceMeasurements()){ - removeCalculatedAdvanceMeasurement(advanceMeasurement,indirectAdvanceAssigment); - } - } - } - } - - private boolean decrementMaxValue(AdvanceAssigment newAdvanceAssigment, - AdvanceAssigment indirectAdvanceAssigment){ - BigDecimal maxValue = newAdvanceAssigment.getMaxValue(); - BigDecimal currentMaxValue = indirectAdvanceAssigment.getMaxValue().subtract(maxValue); - indirectAdvanceAssigment.setMaxValue(currentMaxValue); - if(currentMaxValue.compareTo(new BigDecimal(0)) == 0){ - return true; - } - return false; - } - - private boolean isAddingOfSeveralSons(AdvanceMeasurement previousAdvanceMeasurement){ - previousAdvanceMeasurement.decrementNumIndirectSons(); - if(previousAdvanceMeasurement.getNumIndirectSons() == 0) - return false; - else return true; - } - - private AdvanceMeasurementDTO getGreatNeighborDTO( - AdvanceMeasurementDTO advanceMeasurementDTO){ - AdvanceMeasurementDTO neighbor = null; - AdvanceAssigmentDTO advanceAssigmentDTO = - advanceMeasurementDTO.getAdvanceAssigmentDTO(); - List advanceMeasurementDTOs = - advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView(); - - for(int i=0; i < advanceMeasurementDTOs.size() ; i++){ - AdvanceMeasurementDTO advance = - (AdvanceMeasurementDTO) advanceMeasurementDTOs.get(i); - if(advance.equals(advanceMeasurementDTO)){ - if(i > 0){ - neighbor =((AdvanceMeasurementDTO) - advanceMeasurementDTOs.get(i-1)); - } - return neighbor; - } - } - return neighbor; - } - - private AdvanceMeasurement getLessNeighbor( - AdvanceMeasurementDTO advanceMeasurementDTO){ - AdvanceMeasurement neighbor = null; - - AdvanceAssigmentDTO advanceAssigmentDTO = advanceMeasurementDTO.getAdvanceAssigmentDTO(); - AdvanceAssigment advanceAssigment = advanceAssigmentDTO.getAdvanceAssigment(); - if((advanceAssigment == null) || (advanceAssigmentDTO.getIsNewDTO())) return neighbor; - - Object[] advanceMeasurements = advanceAssigment.getAdvanceMeasurements().toArray(); - for(int i=0; i < advanceMeasurements.length;i++){ - AdvanceMeasurement advance = (AdvanceMeasurement) advanceMeasurements[i]; - if(advance.getDate().compareTo(advanceMeasurementDTO.getDate()) < 0){ - neighbor=advance; - return neighbor; - } - } - return neighbor; - } - - private AdvanceMeasurement[] getOldNeighborsAdvanceMeasurement( - AdvanceMeasurement advanceMeasurement){ - AdvanceMeasurement neighbors[] = {null,null}; - AdvanceAssigment advanceAssigment = advanceMeasurement.getAdvanceAssigment(); - Object[] advanceMeasurements = advanceAssigment.getAdvanceMeasurements().toArray(); - - for(int i=0; i < advanceMeasurements.length;i++){ - AdvanceMeasurement advance = (AdvanceMeasurement) advanceMeasurements[i]; - if(advance.equals(advanceMeasurement)){ - if(i > 0){ - neighbors[1]=((AdvanceMeasurement) advanceMeasurements[i-1]); - } - if(i < advanceMeasurements.length-1){ - neighbors[0]=((AdvanceMeasurement) advanceMeasurements[i+1]); - } - return neighbors; - } - } - return neighbors; - } - - private void incrementLaterCalculatedAdvances(AdvanceMeasurement lessNeighbor, - AdvanceMeasurementDTO greatNeighbor, - AdvanceMeasurementDTO advanceMeasurementDTO, - AdvanceAssigment indirectAdvanceAssigment){ - - BigDecimal incrementValue = calculateIncrementValue(lessNeighbor,advanceMeasurementDTO); - - Date dateIni = advanceMeasurementDTO.getDate(); - Date dateFin = advanceMeasurementDTO.getDate(); - - for(AdvanceMeasurement indirectAdvanceMeasurement : - indirectAdvanceAssigment.getAdvanceMeasurements()){ - if((indirectAdvanceMeasurement.getDate().compareTo(dateIni) >= 0) - && (isIntoIntervalDateFin(greatNeighbor,dateFin,indirectAdvanceMeasurement))){ - indirectAdvanceMeasurement.setValue(indirectAdvanceMeasurement. - getValue().add(incrementValue)); - } - } - } - - private void _decrementLaterCalculatedAdvances(AdvanceMeasurement lessNeighbor, - AdvanceMeasurementDTO greatNeighbor, - AdvanceMeasurement advanceMeasurement, - AdvanceAssigment indirectAdvanceAssigment){ - - BigDecimal decrementValue = calculateDecrementValue(lessNeighbor,advanceMeasurement); - - Date dateFin = advanceMeasurement.getDate(); - Date dateIni = advanceMeasurement.getDate(); - - for(AdvanceMeasurement indirectAdvanceMeasurement : - indirectAdvanceAssigment.getAdvanceMeasurements()){ - if((indirectAdvanceMeasurement.getDate().compareTo(dateIni) >= 0) - && (isIntoIntervalDateFin(greatNeighbor,dateFin,indirectAdvanceMeasurement))){ - indirectAdvanceMeasurement.setValue( - indirectAdvanceMeasurement.getValue().subtract(decrementValue)); - } - } - } - - private void decrementLaterCalculatedAdvances(AdvanceMeasurement[] neighbors - ,AdvanceMeasurement advanceMeasurement, - AdvanceAssigment indirectAdvanceAssigment){ - - BigDecimal decrementValue = calculateDecrementValue(neighbors[0],advanceMeasurement); - - Date dateFin = advanceMeasurement.getDate(); - Date dateIni = advanceMeasurement.getDate(); - - for(AdvanceMeasurement indirectAdvanceMeasurement : - indirectAdvanceAssigment.getAdvanceMeasurements()){ - if((indirectAdvanceMeasurement.getDate().compareTo(dateIni) >= 0) - && (isIntoIntervalDateFin(neighbors[1],dateFin,indirectAdvanceMeasurement))){ - indirectAdvanceMeasurement.setValue(indirectAdvanceMeasurement.getValue().subtract(decrementValue)); - } - } - } - - private boolean isIntoIntervalDateFin(AdvanceMeasurementDTO neighbor, - Date dateFin,AdvanceMeasurement advanceMeasurement){ - if(neighbor != null){ - dateFin = neighbor.getDate(); - if(advanceMeasurement.getDate().compareTo(dateFin) < 0) return true; - else return false; - } - return true; - } - - private boolean isIntoIntervalDateFin(AdvanceMeasurement neighbor, - Date dateFin,AdvanceMeasurement advanceMeasurement){ - if(neighbor != null){ - dateFin = neighbor.getDate(); - if(advanceMeasurement.getDate().compareTo(dateFin) < 0) return true; - else return false; - } - return true; - } - - private BigDecimal calculateIncrementValue(AdvanceMeasurement neighbor - ,AdvanceMeasurementDTO advanceMeasurementDTO){ - //Calculate the increment value - BigDecimal incrementValue = advanceMeasurementDTO.getValue(); - if(neighbor != null){ - BigDecimal previousValue = neighbor.getValue(); - incrementValue = incrementValue.subtract(previousValue); - } - return incrementValue; - } - - private BigDecimal calculateDecrementValue(AdvanceMeasurement neighbor - ,AdvanceMeasurement advanceMeasurement){ - //Calculate the decrement value - BigDecimal decrementValue = advanceMeasurement.getValue(); - if(neighbor != null){ - BigDecimal previousValue = neighbor.getValue(); - decrementValue = decrementValue.subtract(previousValue); - } - return decrementValue; - - } - - private BigDecimal getIncrementMaxValue(AdvanceAssigmentDTO advanceAssigmentDTO){ - BigDecimal incrementMaxValue= new BigDecimal(0); - if((advanceAssigmentDTO.getIsNewDTO()) - || (checkChangeTheAdvanceType(advanceAssigmentDTO))){ - incrementMaxValue = advanceAssigmentDTO.getMaxValue(); - }else{ - AdvanceAssigment advanceAssigment = advanceAssigmentDTO.getAdvanceAssigment(); - incrementMaxValue = advanceAssigmentDTO.getMaxValue().subtract(advanceAssigment.getMaxValue()); - } - return incrementMaxValue; - } - - private AdvanceAssigment initNewCalculatedAdvanceAssigment( - OrderElement orderElement,AdvanceAssigmentDTO advanceAssigmentDTO){ - //create AdvanceAssigment - AdvanceAssigment newAdvanceAssigment = AdvanceAssigment.create( - advanceAssigmentDTO.getReportGlobalAdvance(),new BigDecimal(0)); - newAdvanceAssigment.setAdvanceType(advanceAssigmentDTO.getAdvanceType()); - newAdvanceAssigment.setOrderElement(orderElement); - newAdvanceAssigment.setType(AdvanceAssigment.Type.CALCULATED); - - return newAdvanceAssigment; - } - - private AdvanceMeasurement findPreviousIndirectAdvanceMeasurement( - Date date,AdvanceAssigment indirectAdvanceAssigment){ - Object[] arrayAdvanceMeasurements = indirectAdvanceAssigment.getAdvanceMeasurements().toArray(); - for(int i=0; i < arrayAdvanceMeasurements.length; i++){ - AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement)arrayAdvanceMeasurements[i]; - if(advanceMeasurement.getDate().compareTo(date) <= 0){ - return advanceMeasurement; - } - } - return null; - } - - private AdvanceMeasurement findIndirectAdvanceMeasurement( - Date date,AdvanceAssigment indirectAdvanceAssigment){ - Object[] arrayAdvanceMeasurements = indirectAdvanceAssigment.getAdvanceMeasurements().toArray(); - for(int i=0; i < arrayAdvanceMeasurements.length; i++){ - AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement)arrayAdvanceMeasurements[i]; - if(advanceMeasurement.getDate().compareTo(date) == 0){ - return advanceMeasurement; - } - } - return null; - } - - private AdvanceAssigment findCalculatedAdvanceInParent( - OrderElement orderElement, Long id){ - for(AdvanceAssigment oldAdvanceAssigment : orderElement.getAdvanceAssigments()){ - if(oldAdvanceAssigment.getAdvanceType().getId().equals(id)) - return oldAdvanceAssigment; - } - return null; - } - - private boolean checkChangeTheAdvanceType(AdvanceAssigmentDTO newAdvanceAssigmentDTO){ - AdvanceAssigment advanceAssigment = newAdvanceAssigmentDTO.getAdvanceAssigment(); - AdvanceType advanceType = advanceAssigment.getAdvanceType(); - AdvanceType advanceTypeDTO = newAdvanceAssigmentDTO.getAdvanceType(); - if((newAdvanceAssigmentDTO.getIsNewObject()) - && (!advanceType.equals(advanceTypeDTO))) return true; - return false; - } - @Override public boolean isPrecisionValid(BigDecimal value){ - if((this.advanceAssigmentDTO != null) - && (this.advanceAssigmentDTO.getAdvanceType() != null)){ - BigDecimal precision = this.advanceAssigmentDTO.getAdvanceType().getUnitPrecision(); + if ((this.advanceAssigment != null) + && (this.advanceAssigment.getAdvanceType() != null)) { + BigDecimal precision = this.advanceAssigment.getAdvanceType() + .getUnitPrecision(); BigDecimal result[] = value.divideAndRemainder(precision); if(result[1].compareTo(BigDecimal.ZERO) == 0) return true; return false; @@ -776,50 +301,42 @@ public class ManageOrderElementAdvancesModel implements @Override public boolean greatThanMaxValue(BigDecimal value){ - if((this.advanceAssigmentDTO == null) - ||(this.advanceAssigmentDTO.getMaxValue() == null)) + if ((this.advanceAssigment == null) + || (this.advanceAssigment.getMaxValue() == null)) return false; - if(value.compareTo(this.advanceAssigmentDTO.getMaxValue())>0) + if (value.compareTo(this.advanceAssigment.getMaxValue()) > 0) return true; return false; } @Override - public boolean isDistinctValidDate(Date value,AdvanceMeasurementDTO newAdvanceMeasurementDTO){ - if(this.advanceAssigmentDTO == null) return true; - int equalsDates = 0; - for(AdvanceMeasurementDTO advanceMeasurementDTO - : advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView()){ - Date oldDate = advanceMeasurementDTO.getDate(); - if((oldDate != null) && (!newAdvanceMeasurementDTO.equals(advanceMeasurementDTO)) - && (oldDate.compareTo(value) == 0)) - return false; + public boolean isDistinctValidDate(Date value, + AdvanceMeasurement newAdvanceMeasurement) { + if (this.advanceAssigment == null) + return true; + for (AdvanceMeasurement advanceMeasurement : advanceAssigment + .getAdvanceMeasurements()) { + Date oldDate = advanceMeasurement.getDate(); + if ((oldDate != null) + && (!newAdvanceMeasurement.equals(advanceMeasurement)) + && (oldDate.compareTo(value) == 0)) + return false; } return true; } @Override public BigDecimal getUnitPrecision(){ - if(this.advanceAssigmentDTO == null){ + if (this.advanceAssigment == null) { return new BigDecimal(0); } - return this.advanceAssigmentDTO.getAdvanceType().getUnitPrecision(); + return this.advanceAssigment.getAdvanceType().getUnitPrecision(); } @Override - public AdvanceMeasurementDTO getFirstAdvanceMeasurement(AdvanceAssigmentDTO advanceAssigmentDTO){ - if((advanceAssigmentDTO != null) && - (advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView().size()>0)){ - final AdvanceMeasurementDTO advanceMeasurementDTO = - (AdvanceMeasurementDTO) advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView().get(0); - return advanceMeasurementDTO; - } - return null; - } - public AdvanceMeasurement getFirstAdvanceMeasurement(AdvanceAssigment advanceAssigment){ if((advanceAssigment != null) && - (advanceAssigmentDTO.getAdvanceMeasurements().size()>0)){ + (advanceAssigment.getAdvanceMeasurements().size() > 0)) { SortedSet listAM = (SortedSet) advanceAssigment.getAdvanceMeasurements(); final AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) listAM.first(); return advanceMeasurement; @@ -828,7 +345,37 @@ public class ManageOrderElementAdvancesModel implements } @Override - public void modifyListAdvanceMeasurement(AdvanceMeasurementDTO advanceMeasurementDTO){ - this.advanceAssigmentDTO.getAdvanceMeasurementDTOs().modified(advanceMeasurementDTO); + public void sortListAdvanceMeasurement() { + ArrayList advanceMeasurements = new ArrayList( + this.advanceAssigment.getAdvanceMeasurements()); + Collections.sort(advanceMeasurements, + new AdvanceMeasurementComparator()); + TreeSet measurements = new TreeSet( + new AdvanceMeasurementComparator()); + measurements.addAll(advanceMeasurements); + this.advanceAssigment + .setAdvanceMeasurements(measurements); } + + @Override + public BigDecimal getPercentageAdvanceMeasurement( + AdvanceMeasurement advanceMeasurement) { + if (advanceMeasurement.getAdvanceAssigment() == null) { + return BigDecimal.ZERO; + } + + BigDecimal maxValue = advanceMeasurement.getAdvanceAssigment() + .getMaxValue(); + if (maxValue.compareTo(BigDecimal.ZERO) <= 0) { + return BigDecimal.ZERO; + } + + BigDecimal value = advanceMeasurement.getValue(); + if (value == null) { + return BigDecimal.ZERO; + } + + return value.divide(maxValue).multiply(new BigDecimal(100)); + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java index e8e19741a..f47bfa15c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java @@ -1,5 +1,7 @@ package org.navalplanner.web.orders; +import static org.navalplanner.web.I18nHelper._; + import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -32,8 +34,6 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import static org.navalplanner.web.I18nHelper._; - /** * Model for UI operations related to {@link Order}.
* diff --git a/navalplanner-webapp/src/main/webapp/orders/_listOrderElementAdvances.zul b/navalplanner-webapp/src/main/webapp/orders/_listOrderElementAdvances.zul index aa5483980..b676a43bc 100644 --- a/navalplanner-webapp/src/main/webapp/orders/_listOrderElementAdvances.zul +++ b/navalplanner-webapp/src/main/webapp/orders/_listOrderElementAdvances.zul @@ -8,13 +8,13 @@ @@ -37,38 +37,23 @@ - - - - - - - - -