ItEr34S08ValidacionEProbasFuncionaisItEr33S08: [Bug #86] Remove of work report type causes exception
This commit is contained in:
parent
83bba9ec17
commit
03e15dd68a
6 changed files with 75 additions and 49 deletions
|
|
@ -20,8 +20,11 @@
|
|||
|
||||
package org.navalplanner.business.workreports.daos;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.navalplanner.business.common.daos.IGenericDAO;
|
||||
import org.navalplanner.business.workreports.entities.WorkReport;
|
||||
import org.navalplanner.business.workreports.entities.WorkReportType;
|
||||
|
||||
/**
|
||||
* Dao for {@link WorkReport}
|
||||
|
|
@ -30,4 +33,6 @@ import org.navalplanner.business.workreports.entities.WorkReport;
|
|||
*/
|
||||
public interface IWorkReportDAO extends IGenericDAO<WorkReport, Long> {
|
||||
|
||||
List<WorkReport> getAllByWorkReportType(WorkReportType workReportType);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,8 +20,13 @@
|
|||
|
||||
package org.navalplanner.business.workreports.daos;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.hibernate.Criteria;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
import org.navalplanner.business.common.daos.GenericDAOHibernate;
|
||||
import org.navalplanner.business.workreports.entities.WorkReport;
|
||||
import org.navalplanner.business.workreports.entities.WorkReportType;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
|
@ -36,4 +41,11 @@ import org.springframework.stereotype.Repository;
|
|||
public class WorkReportDAO extends GenericDAOHibernate<WorkReport, Long>
|
||||
implements IWorkReportDAO {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public List<WorkReport> getAllByWorkReportType(WorkReportType workReportType) {
|
||||
final Criteria criteria = getSession().createCriteria(WorkReport.class);
|
||||
return criteria.add(Restrictions.eq("workReportType", workReportType)).list();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import java.util.Set;
|
|||
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.resources.entities.CriterionType;
|
||||
import org.navalplanner.business.workreports.entities.WorkReport;
|
||||
import org.navalplanner.business.workreports.entities.WorkReportType;
|
||||
|
||||
/**
|
||||
|
|
@ -62,7 +63,7 @@ public interface IWorkReportTypeModel {
|
|||
* @param workReportType
|
||||
* The object to be removed
|
||||
*/
|
||||
void remove(WorkReportType workReportType);
|
||||
void confirmRemove(WorkReportType workReportType);
|
||||
|
||||
/**
|
||||
* Makes some operations needed before create a new {@link WorkReportType}.
|
||||
|
|
@ -108,4 +109,12 @@ public interface IWorkReportTypeModel {
|
|||
*/
|
||||
boolean isEditing();
|
||||
|
||||
/**
|
||||
* Check if there is any {@link WorkReport} bound to {@link WorkReportType}
|
||||
*
|
||||
* @param workReportType
|
||||
* @return
|
||||
*/
|
||||
boolean thereAreWorkReportsFor(WorkReportType workReportType);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,10 +20,13 @@
|
|||
|
||||
package org.navalplanner.web.workreports;
|
||||
|
||||
import static org.navalplanner.web.I18nHelper._;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.resources.entities.CriterionType;
|
||||
import org.navalplanner.business.workreports.entities.WorkReportType;
|
||||
|
|
@ -37,10 +40,10 @@ import org.navalplanner.web.common.entrypoints.IURLHandlerRegistry;
|
|||
import org.navalplanner.web.common.entrypoints.URLHandler;
|
||||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.util.GenericForwardComposer;
|
||||
import org.zkoss.zul.Grid;
|
||||
import org.zkoss.zul.Messagebox;
|
||||
import org.zkoss.zul.api.Window;
|
||||
|
||||
import static org.navalplanner.web.I18nHelper._;
|
||||
|
||||
/**
|
||||
* Controller for CRUD actions over a {@link WorkReportType}
|
||||
*
|
||||
|
|
@ -49,16 +52,15 @@ import static org.navalplanner.web.I18nHelper._;
|
|||
public class WorkReportTypeCRUDController extends GenericForwardComposer
|
||||
implements IWorkReportTypeCRUDControllerEntryPoints {
|
||||
|
||||
private static final org.apache.commons.logging.Log LOG = LogFactory
|
||||
.getLog(WorkReportTypeCRUDController.class);
|
||||
|
||||
private Window listWindow;
|
||||
|
||||
private Window createWindow;
|
||||
|
||||
private Window editWindow;
|
||||
|
||||
private Window confirmRemove;
|
||||
|
||||
private boolean confirmingRemove = false;
|
||||
|
||||
private IWorkReportTypeModel workReportTypeModel;
|
||||
|
||||
private OnlyOneVisible visibility;
|
||||
|
|
@ -154,38 +156,39 @@ public class WorkReportTypeCRUDController extends GenericForwardComposer
|
|||
}
|
||||
|
||||
public void confirmRemove(WorkReportType workReportType) {
|
||||
workReportTypeModel.prepareForRemove(workReportType);
|
||||
showConfirmingWindow();
|
||||
}
|
||||
if (thereAreWorkReportsFor(workReportType)) {
|
||||
try {
|
||||
Messagebox.show(_("Cannot delete work report type. There are some work reports bound to it."),
|
||||
_("Warning"), Messagebox.OK, Messagebox.EXCLAMATION);
|
||||
} catch (InterruptedException e) {
|
||||
LOG.error(_("Error on showing warning message removing workReportType: ", workReportType.getId()), e);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
public void cancelRemove() {
|
||||
confirmingRemove = false;
|
||||
confirmRemove.setVisible(false);
|
||||
Util.reloadBindings(confirmRemove);
|
||||
}
|
||||
|
||||
public boolean isConfirmingRemove() {
|
||||
return confirmingRemove;
|
||||
}
|
||||
|
||||
private void hideConfirmingWindow() {
|
||||
confirmingRemove = false;
|
||||
Util.reloadBindings(confirmRemove);
|
||||
}
|
||||
|
||||
private void showConfirmingWindow() {
|
||||
confirmingRemove = true;
|
||||
// Show remove confirming window
|
||||
try {
|
||||
Util.reloadBindings(confirmRemove);
|
||||
confirmRemove.doModal();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
if (Messagebox.show(_("Delete item. Are you sure?"), _("Confirm"),
|
||||
Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION) == Messagebox.OK) {
|
||||
workReportTypeModel.confirmRemove(workReportType);
|
||||
final Grid workReportTypes = (Grid) listWindow.getFellowIfAny("listing");
|
||||
if (workReportTypes != null) {
|
||||
Util.reloadBindings(workReportTypes);
|
||||
}
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
messagesForUser.showMessage(
|
||||
Level.ERROR, e.getMessage());
|
||||
LOG.error(_("Error on removing workReportType: ", workReportType.getId()), e);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean thereAreWorkReportsFor(WorkReportType workReportType) {
|
||||
return workReportTypeModel.thereAreWorkReportsFor(workReportType);
|
||||
}
|
||||
|
||||
public void remove(WorkReportType workReportType) {
|
||||
workReportTypeModel.remove(workReportType);
|
||||
hideConfirmingWindow();
|
||||
workReportTypeModel.confirmRemove(workReportType);
|
||||
Util.reloadBindings(listWindow);
|
||||
messagesForUser.showMessage(
|
||||
Level.INFO, _("Removed {0}", workReportType.getName()));
|
||||
|
|
|
|||
|
|
@ -29,7 +29,9 @@ import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
|||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.resources.daos.ICriterionTypeDAO;
|
||||
import org.navalplanner.business.resources.entities.CriterionType;
|
||||
import org.navalplanner.business.workreports.daos.IWorkReportDAO;
|
||||
import org.navalplanner.business.workreports.daos.IWorkReportTypeDAO;
|
||||
import org.navalplanner.business.workreports.entities.WorkReport;
|
||||
import org.navalplanner.business.workreports.entities.WorkReportType;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
|
|
@ -53,6 +55,9 @@ public class WorkReportTypeModel implements IWorkReportTypeModel {
|
|||
@Autowired
|
||||
private IWorkReportTypeDAO workReportTypeDAO;
|
||||
|
||||
@Autowired
|
||||
private IWorkReportDAO workReportDAO;
|
||||
|
||||
private WorkReportType workReportType;
|
||||
|
||||
private boolean editing = false;
|
||||
|
|
@ -62,6 +67,13 @@ public class WorkReportTypeModel implements IWorkReportTypeModel {
|
|||
return this.workReportType;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public boolean thereAreWorkReportsFor(WorkReportType workReportType) {
|
||||
final List<WorkReport> workReports = workReportDAO.getAllByWorkReportType(workReportType);
|
||||
return (workReports != null && !workReports.isEmpty());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public List<WorkReportType> getWorkReportTypes() {
|
||||
|
|
@ -117,7 +129,7 @@ public class WorkReportTypeModel implements IWorkReportTypeModel {
|
|||
|
||||
@Override
|
||||
@Transactional
|
||||
public void remove(WorkReportType workReportType) {
|
||||
public void confirmRemove(WorkReportType workReportType) {
|
||||
try {
|
||||
workReportTypeDAO.remove(workReportType.getId());
|
||||
} catch (InstanceNotFoundException e) {
|
||||
|
|
|
|||
|
|
@ -36,20 +36,5 @@
|
|||
save_button_label="${i18n:_('Save')}" cancel_button_label="${i18n:_('Cancel')}" />
|
||||
<edition top_id="editWindow" title="${i18n:_('Edit')}"
|
||||
save_button_label="${i18n:_('Save')}" cancel_button_label="${i18n:_('Cancel')}" />
|
||||
<window visible="@{controller.confirmingRemove}"
|
||||
id="confirmRemove" title="${i18n:_('Confirm')}" width="500px"
|
||||
position="center">
|
||||
<vbox>
|
||||
<hbox>
|
||||
¿Do you want to delete <label value="@{controller.workReportType.name}"/>?
|
||||
</hbox>
|
||||
<hbox>
|
||||
<button label="${i18n:_('Yes')}"
|
||||
onClick="controller.remove(controller.workReportType);" />
|
||||
<button label="${i18n:_('No')}"
|
||||
onClick="controller.cancelRemove();" />
|
||||
</hbox>
|
||||
</vbox>
|
||||
</window>
|
||||
</window>
|
||||
</zk>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue