[Bug #1143] A quality form cannot be deleted if it is associated to any task
FEA: ItEr75S04BugFixing
This commit is contained in:
parent
0063dd5e74
commit
b2a1c2f307
5 changed files with 57 additions and 0 deletions
|
|
@ -26,6 +26,7 @@ import java.util.List;
|
|||
import org.hibernate.NonUniqueResultException;
|
||||
import org.navalplanner.business.common.daos.IGenericDAO;
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.qualityforms.entities.QualityForm;
|
||||
import org.navalplanner.business.qualityforms.entities.QualityFormType;
|
||||
|
||||
|
|
@ -52,4 +53,6 @@ public interface IQualityFormDAO extends IGenericDAO<QualityForm, Long> {
|
|||
boolean existsOtherWorkReportTypeByName(QualityForm qualityForm);
|
||||
|
||||
boolean existsByNameAnotherTransaction(QualityForm qualityForm);
|
||||
|
||||
void checkHasTasks(QualityForm qualityForm) throws ValidationException;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,11 +22,13 @@
|
|||
package org.navalplanner.business.qualityforms.daos;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.hibernate.Criteria;
|
||||
import org.hibernate.NonUniqueResultException;
|
||||
import org.hibernate.Query;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
import org.navalplanner.business.advance.daos.IAdvanceTypeDAO;
|
||||
import org.navalplanner.business.advance.entities.AdvanceType;
|
||||
|
|
@ -150,4 +152,16 @@ public class QualityFormDAO extends GenericDAOHibernate<QualityForm, Long>
|
|||
super.save(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkHasTasks(QualityForm qualityForm) throws ValidationException {
|
||||
Query query = getSession().createQuery(
|
||||
"FROM TaskQualityForm taskQualityForm JOIN taskQualityForm.qualityForm tq WHERE tq IN (:qualityForms)");
|
||||
query.setParameterList("qualityForms", Collections.singleton(qualityForm));
|
||||
if (!query.list().isEmpty()) {
|
||||
throw ValidationException
|
||||
.invalidValue(
|
||||
"Cannot delete quality form. It is being used at this moment by some task.",
|
||||
qualityForm);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -132,4 +132,6 @@ public interface IQualityFormModel {
|
|||
* @param qualityFormItem
|
||||
*/
|
||||
Boolean isTotalPercentage(QualityFormItem item);
|
||||
|
||||
void checkHasTasks(QualityForm qualityForm) throws ValidationException;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,15 +27,18 @@ import java.math.BigDecimal;
|
|||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.hibernate.validator.InvalidValue;
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.qualityforms.entities.QualityForm;
|
||||
import org.navalplanner.business.qualityforms.entities.QualityFormItem;
|
||||
import org.navalplanner.business.qualityforms.entities.QualityFormType;
|
||||
import org.navalplanner.business.users.entities.Profile;
|
||||
import org.navalplanner.web.common.BaseCRUDController;
|
||||
import org.navalplanner.web.common.Level;
|
||||
import org.navalplanner.web.common.Util;
|
||||
import org.navalplanner.web.users.ProfileCRUDController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.WrongValueException;
|
||||
|
|
@ -58,6 +61,8 @@ import org.zkoss.zul.impl.InputElement;
|
|||
*/
|
||||
public class QualityFormCRUDController extends BaseCRUDController<QualityForm> {
|
||||
|
||||
private static final org.apache.commons.logging.Log LOG = LogFactory.getLog(QualityFormCRUDController.class);
|
||||
|
||||
@Autowired
|
||||
private IQualityFormModel qualityFormModel;
|
||||
|
||||
|
|
@ -465,4 +470,31 @@ public class QualityFormCRUDController extends BaseCRUDController<QualityForm> {
|
|||
Util.reloadBindings(qualityForms);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean beforeDeleting(QualityForm qualityForm){
|
||||
return !isReferencedByOtherEntities(qualityForm);
|
||||
}
|
||||
|
||||
private boolean isReferencedByOtherEntities(QualityForm qualityForm) {
|
||||
try {
|
||||
qualityFormModel.checkHasTasks(qualityForm);
|
||||
return false;
|
||||
} catch (ValidationException e) {
|
||||
showCannotDeleteQualityFormDialog(e.getInvalidValue().getMessage(),
|
||||
qualityForm);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void showCannotDeleteQualityFormDialog(String message, QualityForm qualityForm) {
|
||||
try {
|
||||
Messagebox.show(_(message), _("Warning"), Messagebox.OK,
|
||||
Messagebox.EXCLAMATION);
|
||||
} catch (InterruptedException e) {
|
||||
LOG.error(
|
||||
_("Error on showing warning message removing qualityForm: ",
|
||||
qualityForm.getId()), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ import org.navalplanner.business.common.exceptions.ValidationException;
|
|||
import org.navalplanner.business.qualityforms.daos.IQualityFormDAO;
|
||||
import org.navalplanner.business.qualityforms.entities.QualityForm;
|
||||
import org.navalplanner.business.qualityforms.entities.QualityFormItem;
|
||||
import org.navalplanner.business.users.entities.Profile;
|
||||
import org.navalplanner.web.common.concurrentdetection.OnConcurrentModification;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
|
|
@ -217,4 +218,9 @@ public class QualityFormModel implements IQualityFormModel {
|
|||
.equals(totalPercentage)) : false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public void checkHasTasks(QualityForm qualityForm) throws ValidationException {
|
||||
qualityFormDAO.checkHasTasks(qualityForm);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue