filtering on project class now works at supervisor - project idea datatable
This commit is contained in:
parent
5339de38d2
commit
0e854ff7f1
src/main/java/se/su/dsv/scipro
springdata
supervisor/panels
@ -1,6 +1,7 @@
|
||||
package se.su.dsv.scipro.springdata.serviceimpls;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.SortedSet;
|
||||
|
||||
@ -17,6 +18,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import se.su.dsv.scipro.data.dataobjects.Employee;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
import se.su.dsv.scipro.data.dataobjects.Student;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.match.dataobject.Idea.IdeaStatus;
|
||||
@ -26,6 +28,8 @@ import se.su.dsv.scipro.springdata.repos.SupervisorIdeaRepo;
|
||||
import se.su.dsv.scipro.springdata.services.StudentService;
|
||||
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
||||
|
||||
import com.mysema.query.BooleanBuilder;
|
||||
import com.mysema.query.types.Predicate;
|
||||
import com.mysema.query.types.expr.BooleanExpression;
|
||||
|
||||
@Service ( "supervisorIdeaService" )
|
||||
@ -113,6 +117,15 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
|
||||
return model.getObject().getIdeaStatus().equals(IdeaStatus.WAITING)&&model.getObject().getCreator().getUser().equals(currentUser);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Page<SupervisorIdea> findAll(FilterParams params, Pageable pageable) {
|
||||
if(params!=null)
|
||||
return supervisorIdeaRepo.findAll(predicateFromParams(params), pageable);
|
||||
else
|
||||
return supervisorIdeaRepo.findAll(pageable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<SupervisorIdea> findByStatus(IdeaStatus status, Pageable pageable) {
|
||||
return supervisorIdeaRepo.findAll(byStatus(status), pageable);
|
||||
@ -124,6 +137,29 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
|
||||
return constructList(ideas);
|
||||
}
|
||||
|
||||
private Predicate predicateFromParams(FilterParams params) {
|
||||
return levelFilter(params.getLevels());
|
||||
}
|
||||
|
||||
private BooleanBuilder levelFilter(Collection<ProjectClass> levels){
|
||||
BooleanBuilder e = new BooleanBuilder();
|
||||
if(levels!=null && !levels.isEmpty()){
|
||||
for (ProjectClass level : levels) {
|
||||
e.or(byLevel(level));
|
||||
}
|
||||
return e;
|
||||
}
|
||||
else {
|
||||
e.and(QSupervisorIdea.supervisorIdea.projectClass.isNull());
|
||||
return e;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private BooleanExpression byLevel(ProjectClass pc){
|
||||
return QSupervisorIdea.supervisorIdea.projectClass.eq(pc);
|
||||
}
|
||||
|
||||
private BooleanExpression byStatus(IdeaStatus status){
|
||||
return QSupervisorIdea.supervisorIdea.ideaStatus.eq(status);
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
package se.su.dsv.scipro.springdata.services;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.SortedSet;
|
||||
|
||||
@ -8,6 +10,7 @@ import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import se.su.dsv.scipro.data.dataobjects.Employee;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
import se.su.dsv.scipro.data.dataobjects.Student;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.match.dataobject.Idea.IdeaStatus;
|
||||
@ -15,6 +18,7 @@ import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
|
||||
|
||||
public interface SupervisorIdeaService extends GenericService<SupervisorIdea, Long>, QueryService<SupervisorIdea, Long> {
|
||||
|
||||
Page<SupervisorIdea> findAll(FilterParams params, Pageable pageable);
|
||||
Page<SupervisorIdea> findByStatus(IdeaStatus status, Pageable pageable);
|
||||
List<SupervisorIdea> findByStatusAndAuthor(IdeaStatus status, Student author);
|
||||
|
||||
@ -26,4 +30,19 @@ public interface SupervisorIdeaService extends GenericService<SupervisorIdea, Lo
|
||||
boolean acceptIdea(IModel<SupervisorIdea> model, User mainAuthor, SortedSet<Student> sortedSet);
|
||||
boolean hasUnconfirmedIdea(User authorUser);
|
||||
boolean isIdeaEditable(IModel<SupervisorIdea> model, User currentUser);
|
||||
|
||||
public static class FilterParams implements Serializable {
|
||||
private static final long serialVersionUID = 4981420721152104292L;
|
||||
|
||||
private Collection<ProjectClass> levels;
|
||||
|
||||
public void setLevels(Collection<ProjectClass> levels) {
|
||||
this.levels = levels;
|
||||
}
|
||||
|
||||
public Collection<ProjectClass> getLevels() {
|
||||
return levels;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
package se.su.dsv.scipro.supervisor.panels;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
|
||||
@ -9,7 +11,9 @@ 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 se.su.dsv.scipro.data.dataobjects.Project;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.datatables.ClickableIconColumn;
|
||||
import se.su.dsv.scipro.datatables.project.GenericDataPanel;
|
||||
@ -18,6 +22,7 @@ import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
|
||||
import se.su.dsv.scipro.match.panel.FilterFormProjectClass;
|
||||
import se.su.dsv.scipro.springdata.services.GenericService;
|
||||
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
||||
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService.FilterParams;
|
||||
import se.su.dsv.scipro.supervisor.pages.SupervisorIdeaSubmissionPage;
|
||||
|
||||
public class SupervisorProjectIdeaOverviewPanel extends Panel {
|
||||
@ -25,6 +30,7 @@ public class SupervisorProjectIdeaOverviewPanel extends Panel {
|
||||
@SpringBean
|
||||
private SupervisorIdeaService ideaService;
|
||||
private GenericDataPanel<SupervisorIdea> genericDataPanel;
|
||||
private SupervisorIdeaService.FilterParams params;
|
||||
|
||||
private static final long serialVersionUID = -9010467449322120267L;
|
||||
|
||||
@ -39,6 +45,11 @@ public class SupervisorProjectIdeaOverviewPanel extends Panel {
|
||||
|
||||
private static final long serialVersionUID = -4539188306454725307L;
|
||||
|
||||
@Override
|
||||
public Iterator<SupervisorIdea> getIterator() {
|
||||
return ideaService.findAll(params, new PageRequest(getTable().getCurrentPage(), getTable().getRowsPerPage(), getSort())).iterator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public GenericService<SupervisorIdea, Long> getService() {
|
||||
return ideaService;
|
||||
@ -98,16 +109,24 @@ public class SupervisorProjectIdeaOverviewPanel extends Panel {
|
||||
|
||||
public FilterForm(String id) {
|
||||
super(id);
|
||||
params = new SupervisorIdeaService.FilterParams();
|
||||
final FilterFormProjectClass levelFilter = new FilterFormProjectClass("levelFilter") {
|
||||
private static final long serialVersionUID = -7758850229259608443L;
|
||||
|
||||
@Override
|
||||
public void ajaxUpdate(AjaxRequestTarget target) {
|
||||
System.out.println(getProjectClasses());
|
||||
if(!getProjectClasses().isEmpty()){
|
||||
params.setLevels(getProjectClasses());
|
||||
}
|
||||
target.addComponent(genericDataPanel.getWMC());
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
params.setLevels(levelFilter.getProjectClasses());
|
||||
add(levelFilter);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user