ItEr40S05ValidacionEProbasFuncionaisItEr39S05 : It adds validations to the criteria assigned to the machines and it sorts satisfaction criteria.
This commit is contained in:
parent
9e19be2018
commit
bb5a1927ea
7 changed files with 86 additions and 37 deletions
|
|
@ -124,17 +124,17 @@ public class AssignedMachineCriterionsModel implements IAssignedMachineCriterion
|
|||
}
|
||||
|
||||
@Override
|
||||
public Set<CriterionSatisfactionDTO> getAllCriterionSatisfactions() {
|
||||
public List<CriterionSatisfactionDTO> getAllCriterionSatisfactions() {
|
||||
if (resource == null) {
|
||||
return new HashSet<CriterionSatisfactionDTO>();
|
||||
return new ArrayList<CriterionSatisfactionDTO>();
|
||||
}
|
||||
return allSatisfactionsDTO();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<CriterionSatisfactionDTO> getFilterCriterionSatisfactions() {
|
||||
public List<CriterionSatisfactionDTO> getFilterCriterionSatisfactions() {
|
||||
if (resource == null) {
|
||||
return new HashSet<CriterionSatisfactionDTO>();
|
||||
return new ArrayList<CriterionSatisfactionDTO>();
|
||||
}
|
||||
return filterSatisfactionsDTO();
|
||||
}
|
||||
|
|
@ -145,8 +145,8 @@ public class AssignedMachineCriterionsModel implements IAssignedMachineCriterion
|
|||
this.criterionSatisfactionDTOs.add(criterionSatisfactionDTO);
|
||||
}
|
||||
|
||||
private Set<CriterionSatisfactionDTO> allSatisfactionsDTO() {
|
||||
Set<CriterionSatisfactionDTO> satisfactions = new HashSet<CriterionSatisfactionDTO>();
|
||||
private List<CriterionSatisfactionDTO> allSatisfactionsDTO() {
|
||||
List<CriterionSatisfactionDTO> satisfactions = new ArrayList<CriterionSatisfactionDTO>();
|
||||
for (CriterionSatisfactionDTO criterionSatisfactionDTO : criterionSatisfactionDTOs) {
|
||||
if (!criterionSatisfactionDTO.isIsDeleted()) {
|
||||
satisfactions.add(criterionSatisfactionDTO);
|
||||
|
|
@ -155,8 +155,8 @@ public class AssignedMachineCriterionsModel implements IAssignedMachineCriterion
|
|||
return satisfactions;
|
||||
}
|
||||
|
||||
private Set<CriterionSatisfactionDTO> filterSatisfactionsDTO() {
|
||||
Set<CriterionSatisfactionDTO> satisfactions = new HashSet<CriterionSatisfactionDTO>();
|
||||
private List<CriterionSatisfactionDTO> filterSatisfactionsDTO() {
|
||||
List<CriterionSatisfactionDTO> satisfactions = new ArrayList<CriterionSatisfactionDTO>();
|
||||
for (CriterionSatisfactionDTO criterionSatisfactionDTO : criterionSatisfactionDTOs) {
|
||||
if ((!criterionSatisfactionDTO.isIsDeleted())
|
||||
&& (criterionSatisfactionDTO.isCurrent())) {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@
|
|||
package org.navalplanner.web.resources.machine;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.resources.entities.CriterionWithItsType;
|
||||
|
|
@ -44,13 +43,13 @@ public interface IAssignedMachineCriterionsModel {
|
|||
public boolean checkSameCriterionAndSameInterval(
|
||||
CriterionSatisfactionDTO satisfaction);
|
||||
|
||||
Set<CriterionSatisfactionDTO> getAllCriterionSatisfactions();
|
||||
List<CriterionSatisfactionDTO> getAllCriterionSatisfactions();
|
||||
|
||||
List<CriterionWithItsType> getCriterionWithItsType();
|
||||
|
||||
List<CriterionWithItsType> getCriterionWorkersWithItsType();
|
||||
|
||||
Set<CriterionSatisfactionDTO> getFilterCriterionSatisfactions();
|
||||
List<CriterionSatisfactionDTO> getFilterCriterionSatisfactions();
|
||||
|
||||
void prepareForEdit(Resource resource);
|
||||
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ import org.navalplanner.business.common.exceptions.ValidationException;
|
|||
import org.navalplanner.business.resources.entities.Machine;
|
||||
import org.navalplanner.web.calendars.BaseCalendarEditionController;
|
||||
import org.navalplanner.web.calendars.IBaseCalendarModel;
|
||||
import org.navalplanner.web.common.ConstraintChecker;
|
||||
import org.navalplanner.web.common.IMessagesForUser;
|
||||
import org.navalplanner.web.common.Level;
|
||||
import org.navalplanner.web.common.MessagesForUser;
|
||||
|
|
@ -203,9 +204,12 @@ public class MachineCRUDController extends GenericForwardComposer {
|
|||
}
|
||||
|
||||
public void save() {
|
||||
validateConstraints();
|
||||
try {
|
||||
saveCalendar();
|
||||
saveCriterions();
|
||||
if (!confirmCriterions()) {
|
||||
return;
|
||||
}
|
||||
machineModel.confirmSave();
|
||||
goToList();
|
||||
messagesForUser.showMessage(Level.INFO, _("Machine saved"));
|
||||
|
|
@ -215,9 +219,12 @@ public class MachineCRUDController extends GenericForwardComposer {
|
|||
}
|
||||
|
||||
public void saveAndContinue() {
|
||||
validateConstraints();
|
||||
try {
|
||||
saveCalendar();
|
||||
saveCriterions();
|
||||
if (!confirmCriterions()) {
|
||||
return;
|
||||
}
|
||||
machineModel.confirmSave();
|
||||
goToEditForm(machineModel.getMachine());
|
||||
messagesForUser.showMessage(Level.INFO,_("Machine saved"));
|
||||
|
|
@ -227,6 +234,26 @@ public class MachineCRUDController extends GenericForwardComposer {
|
|||
}
|
||||
}
|
||||
|
||||
private void validateConstraints() {
|
||||
Tab tab = (Tab) editWindow.getFellowIfAny("tbMachineData");
|
||||
try {
|
||||
validateMachineDataTab();
|
||||
tab = (Tab) editWindow.getFellowIfAny("assignedCriteriaTab");
|
||||
criterionsController.validateConstraints();
|
||||
tab = (Tab) editWindow.getFellowIfAny("costCategoryAssignmentTab");
|
||||
resourcesCostCategoryAssignmentController.validateConstraints();
|
||||
// TODO: check 'calendar' tab
|
||||
} catch (WrongValueException e) {
|
||||
tab.setSelected(true);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
private void validateMachineDataTab() {
|
||||
ConstraintChecker.isValid(editWindow
|
||||
.getFellowIfAny("machineDataTabpanel"));
|
||||
}
|
||||
|
||||
private String showInvalidValues(ValidationException e) {
|
||||
String result = "";
|
||||
for (InvalidValue each : e.getInvalidValues())
|
||||
|
|
@ -243,11 +270,14 @@ public class MachineCRUDController extends GenericForwardComposer {
|
|||
}
|
||||
}
|
||||
|
||||
private void saveCriterions() throws ValidationException {
|
||||
private boolean confirmCriterions() throws ValidationException {
|
||||
if (criterionsController != null) {
|
||||
criterionsController.validate();
|
||||
if (!criterionsController.validate()) {
|
||||
return false;
|
||||
}
|
||||
criterionsController.save();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void goToList() {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ import org.zkoss.zul.Row;
|
|||
import org.zkoss.zul.Rows;
|
||||
|
||||
/**
|
||||
*
|
||||
* Controller for {@link Criterion} worker <br />
|
||||
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
|
||||
*/
|
||||
public class CriterionsController extends GenericForwardComposer {
|
||||
|
|
@ -194,8 +194,9 @@ public class CriterionsController extends GenericForwardComposer {
|
|||
throw new WrongValueException(comp,
|
||||
_("Start date is not valid, the new start date must be lower than the end date"));
|
||||
}else if(!criterionSatisfactionDTO.isPreviousStartDate((Date) value)){
|
||||
throw new WrongValueException(comp,
|
||||
_("End date is not valid, the new end date must be later the current end date"));
|
||||
throw new WrongValueException(
|
||||
comp,
|
||||
_("Start date is not valid, the new start date must be previous the current start date"));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ import static org.navalplanner.web.common.InvalidInputsChecker.thereAreInvalidIn
|
|||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.hibernate.validator.InvalidValue;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
|
|
@ -18,6 +17,7 @@ import org.navalplanner.business.resources.entities.CriterionSatisfaction;
|
|||
import org.navalplanner.business.resources.entities.CriterionWithItsType;
|
||||
import org.navalplanner.business.resources.entities.Machine;
|
||||
import org.navalplanner.business.workreports.entities.WorkReportLine;
|
||||
import org.navalplanner.web.common.ConstraintChecker;
|
||||
import org.navalplanner.web.common.IMessagesForUser;
|
||||
import org.navalplanner.web.common.Level;
|
||||
import org.navalplanner.web.common.MessagesForUser;
|
||||
|
|
@ -27,12 +27,14 @@ import org.zkoss.zk.ui.Component;
|
|||
import org.zkoss.zk.ui.WrongValueException;
|
||||
import org.zkoss.zk.ui.util.GenericForwardComposer;
|
||||
import org.zkoss.zul.Bandbox;
|
||||
import org.zkoss.zul.Column;
|
||||
import org.zkoss.zul.Combobox;
|
||||
import org.zkoss.zul.Comboitem;
|
||||
import org.zkoss.zul.Constraint;
|
||||
import org.zkoss.zul.Datebox;
|
||||
import org.zkoss.zul.Grid;
|
||||
import org.zkoss.zul.Hbox;
|
||||
import org.zkoss.zul.ListModelExt;
|
||||
import org.zkoss.zul.Listitem;
|
||||
import org.zkoss.zul.Row;
|
||||
import org.zkoss.zul.Rows;
|
||||
|
|
@ -67,13 +69,14 @@ public class CriterionsMachineController extends GenericForwardComposer {
|
|||
public void prepareForEdit(Machine machine) {
|
||||
machine.getConfigurationUnits();
|
||||
assignedMachineCriterionsModel.prepareForEdit(machine);
|
||||
reload();
|
||||
}
|
||||
|
||||
public void prepareForCreate(Machine machine) {
|
||||
assignedMachineCriterionsModel.prepareForCreate(machine);
|
||||
}
|
||||
|
||||
public Set<CriterionSatisfactionDTO> getCriterionSatisfactionDTOs() {
|
||||
public List<CriterionSatisfactionDTO> getCriterionSatisfactionDTOs() {
|
||||
Comboitem comboitem = comboboxFilter.getSelectedItem();
|
||||
if((comboitem != null) && (comboitem.getLabel().equals("in force"))) {
|
||||
return assignedMachineCriterionsModel
|
||||
|
|
@ -98,6 +101,18 @@ public class CriterionsMachineController extends GenericForwardComposer {
|
|||
|
||||
public void reload() {
|
||||
Util.reloadBindings(listingCriterions);
|
||||
forceSortGridSatisfaction();
|
||||
}
|
||||
|
||||
public void forceSortGridSatisfaction() {
|
||||
Column column = (Column) listingCriterions.getColumns().getFirstChild();
|
||||
ListModelExt model = (ListModelExt) listingCriterions.getModel();
|
||||
if ("ascending".equals(column.getSortDirection())) {
|
||||
model.sort(column.getSortAscending(), true);
|
||||
}
|
||||
if ("descending".equals(column.getSortDirection())) {
|
||||
model.sort(column.getSortDescending(), false);
|
||||
}
|
||||
}
|
||||
|
||||
public void remove(CriterionSatisfactionDTO criterionSatisfactionDTO){
|
||||
|
|
@ -195,7 +210,7 @@ public class CriterionsMachineController extends GenericForwardComposer {
|
|||
} else if (!criterionSatisfactionDTO.isPreviousStartDate((Date) value)) {
|
||||
throw new WrongValueException(
|
||||
comp,
|
||||
_("End date is not valid, the new end date must be later the current end date"));
|
||||
_("Start date is not valid, the new start date must be previous the current start date"));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -364,4 +379,8 @@ public class CriterionsMachineController extends GenericForwardComposer {
|
|||
private Bandbox getBandType(Row row) {
|
||||
return (Bandbox) ((Hbox) row.getChildren().get(0)).getChildren().get(0);
|
||||
}
|
||||
|
||||
public void validateConstraints() {
|
||||
ConstraintChecker.isValid(self);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,13 +26,13 @@
|
|||
<tabbox>
|
||||
<tabs>
|
||||
<tab id="tbMachineData" label="${i18n:_('Machine data')}"></tab>
|
||||
<tab label="${i18n:_('Assigned criteria')}"></tab>
|
||||
<tab id="assignedCriteriaTab" label="${i18n:_('Assigned criteria')}"></tab>
|
||||
<tab label="${i18n:_('Calendar')}"></tab>
|
||||
<tab label="${i18n:_('Configuration')}"></tab>
|
||||
<tab label="${i18n:_('Cost category assignment')}"></tab>
|
||||
<tab id="costCategoryAssignmentTab" label="${i18n:_('Cost category assignment')}"></tab>
|
||||
</tabs>
|
||||
<tabpanels>
|
||||
<tabpanel>
|
||||
<tabpanel id="machineDataTabpanel">
|
||||
<grid fixedLayout="true">
|
||||
<columns>
|
||||
<column width="200px" />
|
||||
|
|
|
|||
|
|
@ -15,25 +15,25 @@
|
|||
</combobox>
|
||||
<separator bar="false" spacing="20px" orient="vertical"/>
|
||||
</hbox>
|
||||
<grid id="listingCriterions"
|
||||
model="@{assignedCriterionsController.criterionSatisfactionDTOs}"
|
||||
mold="paging" pageSize="10">
|
||||
<newdatasortablegrid id="listingCriterions" mold="paging" pageSize="10" fixedLayout="true"
|
||||
model="@{assignedCriterionsController.criterionSatisfactionDTOs}">
|
||||
<columns>
|
||||
<column label="${i18n:_('Criterion name')}" sort="auto(criterionAndType)" sortDirection="ascending" />
|
||||
<column label="${i18n:_('Starting date')}" width="200px" align="center"/>
|
||||
<column label="${i18n:_('Ending date')}" width="200px" align="center"/>
|
||||
<column label="${i18n:_('State')}" width="70px" align="center"/>
|
||||
<column label="${i18n:_('Operations')}" width="70px" align="center"/>
|
||||
<newdatasortablecolumn label="${i18n:_('Criterion name')}" sort="auto(criterionAndType)" sortDirection="ascending" />
|
||||
<newdatasortablecolumn label="${i18n:_('Starting date')}" sort="auto(startDate)" width="200px" align="center"/>
|
||||
<newdatasortablecolumn label="${i18n:_('Ending date')}" sort="auto(endDate)" width="200px" align="center"/>
|
||||
<newdatasortablecolumn label="${i18n:_('State')}" sort="auto(state)" width="70px" align="center"/>
|
||||
<newdatasortablecolumn label="${i18n:_('Operations')}" width="70px" align="center"/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row self="@{each='criterionSatisfactionDTO'}" value="@{criterionSatisfactionDTO}">
|
||||
<hbox>
|
||||
<!-- Select criterion -->
|
||||
<bandbox width="500px"
|
||||
visible="@{criterionSatisfactionDTO.isNewObject}"
|
||||
<bandbox width="300px"
|
||||
constraint="no empty"
|
||||
visible="@{criterionSatisfactionDTO.newObject}"
|
||||
value = "@{criterionSatisfactionDTO.criterionAndType}">
|
||||
<bandpopup>
|
||||
<listbox id="lbCriterions" width="500px" height="150px" fixedLayout="true"
|
||||
<listbox width="500px" height="150px" fixedLayout="true"
|
||||
model="@{assignedCriterionsController.criterionWithItsTypes}"
|
||||
onSelect="assignedCriterionsController.selectCriterionAndType(self.selectedItem,
|
||||
self.parent.parent,self.parent.parent.parent.parent.value);">
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
</listbox>
|
||||
</bandpopup>
|
||||
</bandbox>
|
||||
<label visible="@{criterionSatisfactionDTO.isOldObject}"
|
||||
<label visible="@{criterionSatisfactionDTO.oldObject}"
|
||||
value="@{criterionSatisfactionDTO.criterionAndType}"/>
|
||||
</hbox>
|
||||
<datebox id="startDate" value="@{criterionSatisfactionDTO.startDate}"
|
||||
|
|
@ -68,7 +68,7 @@
|
|||
</button>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
</newdatasortablegrid>
|
||||
</panelchildren>
|
||||
</panel>
|
||||
</vbox>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue