safe deletion of checklist templates implemented

This commit is contained in:
fred-fri 2012-05-11 16:03:53 +09:00
parent dafed310d3
commit 90c8ffbd6d
4 changed files with 15 additions and 21 deletions
src/main/java/se/su/dsv/scipro

@ -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);
}
};

@ -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);
}

@ -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);
}

@ -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);
}