diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java index d285af5c9a..0bc975ed68 100644 --- a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java +++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java @@ -4,24 +4,17 @@ import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.extensions.markup.html.repeater.data.table.*; import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.RequiredTextField; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.spring.injection.annot.SpringBean; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; -import se.su.dsv.scipro.SciProSession; -import se.su.dsv.scipro.checklists.panels.ChecklistCategoryPanel; import se.su.dsv.scipro.data.dataobjects.CheckListTemplate; import se.su.dsv.scipro.data.dataobjects.ChecklistCategory; import se.su.dsv.scipro.reusable.AjaxDropDown; -import se.su.dsv.scipro.reusable.FilterBooleanPanel; import se.su.dsv.scipro.reusable.FilterStringPanel; import se.su.dsv.scipro.springdata.services.ChecklistTemplateService; -import se.su.dsv.scipro.util.JavascriptEventConfirmation; -import sun.plugin2.message.JavaScriptBaseMessage; import java.util.ArrayList; import java.util.Iterator; @@ -119,17 +112,7 @@ public abstract class CheckListTemplateDataPanel extends Panel { columns[4] = new ClickableDeleteColumn<CheckListTemplate>(Model.of("Delete"), null) { @Override protected void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target) { - //peer templates can be connected to peer requests and cannot be deleted - boolean isPeer = false; - for (ChecklistCategory clc : clicked.getObject().getCategories()){ - if (clc.getCategoryName().equalsIgnoreCase("peer")){ - isPeer = true; - } - } - if (!isPeer){ - checklistTemplateService.lowerTemplateNumbersAbove(clicked.getObject().getTemplateNumber()); - checklistTemplateService.delete(clicked.getObject().getId()); - } + checklistTemplateService.safeDeleteChecklistTemplate(clicked.getObject()); target.addComponent(table); } }; diff --git a/src/main/java/se/su/dsv/scipro/springdata/repos/PeerRequestRepo.java b/src/main/java/se/su/dsv/scipro/springdata/repos/PeerRequestRepo.java index 1962b3459a..8288ba3299 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/repos/PeerRequestRepo.java +++ b/src/main/java/se/su/dsv/scipro/springdata/repos/PeerRequestRepo.java @@ -6,6 +6,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.querydsl.QueryDslPredicateExecutor; import org.springframework.transaction.annotation.Transactional; +import se.su.dsv.scipro.data.dataobjects.CheckListTemplate; import se.su.dsv.scipro.data.dataobjects.Project; import se.su.dsv.scipro.peer.data.dataobjects.PeerRequest; import se.su.dsv.scipro.peer.enums.RequestStatus; @@ -14,6 +15,7 @@ import se.su.dsv.scipro.peer.enums.RequestStatus; public interface PeerRequestRepo extends JpaRepository<PeerRequest, Long>, QueryDslPredicateExecutor<PeerRequest> { List<PeerRequest> findByProjectAndStatus(Project project, RequestStatus status); + List<PeerRequest> findByCheckListTemplate(CheckListTemplate checkListTemplate); } diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java index 7450f5dcb6..701ea9b2db 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java +++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java @@ -11,7 +11,9 @@ import se.su.dsv.scipro.SciProSession; import se.su.dsv.scipro.data.dataobjects.CheckListTemplate; import se.su.dsv.scipro.data.dataobjects.ChecklistCategory; import se.su.dsv.scipro.data.dataobjects.QCheckListTemplate; +import se.su.dsv.scipro.peer.data.dataobjects.PeerRequest; import se.su.dsv.scipro.springdata.repos.ChecklistTemplateRepo; +import se.su.dsv.scipro.springdata.repos.PeerRequestRepo; import se.su.dsv.scipro.springdata.services.ChecklistTemplateService; @@ -29,6 +31,8 @@ public class ChecklistTemplateServiceImpl extends AbstractQueryService<CheckList @Resource private ChecklistTemplateRepo checklistTemplateRepo; + @Resource + private PeerRequestRepo peerRequestRepo; @Autowired public ChecklistTemplateServiceImpl( @@ -110,11 +114,16 @@ public class ChecklistTemplateServiceImpl extends AbstractQueryService<CheckList @Transactional ( readOnly = false ) @Override - public void lowerTemplateNumbersAbove(int templateNumber) { - for (CheckListTemplate clt : checklistTemplateRepo.findAllByTemplateNumberGreaterThan(templateNumber)){ + public void safeDeleteChecklistTemplate(CheckListTemplate checkListTemplate) { + for (CheckListTemplate clt : checklistTemplateRepo.findAllByTemplateNumberGreaterThan(checkListTemplate.getTemplateNumber())){ clt.setTemplateNumber(clt.getTemplateNumber() -1); System.out.println(clt.getName() + " " + clt.getTemplateNumber()); } + for (PeerRequest pr : peerRequestRepo.findByCheckListTemplate(checkListTemplate)){ + pr.setCheckListTemplate(null); + peerRequestRepo.save(pr); + } + checklistTemplateRepo.delete(checkListTemplate); } diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java index 0a3f0700f8..93afa6724f 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java +++ b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java @@ -16,5 +16,5 @@ public interface ChecklistTemplateService extends CrudService<CheckListTemplate, void upChecklistTemplate(CheckListTemplate checkListTemplate); void downChecklistTemplate(CheckListTemplate checkListTemplate); CheckListTemplate prepareNewTemplate(); - void lowerTemplateNumbersAbove(int templateNumber); + void safeDeleteChecklistTemplate(CheckListTemplate checkListTemplate); }