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