From 0387f61010867ac5c9bb4c16fe1bbe0ba0983cae Mon Sep 17 00:00:00 2001 From: fred-fri <fred-fri@dsv.su.se> Date: Wed, 1 Aug 2012 14:09:23 +0900 Subject: [PATCH] made new accepted student project idea datapanel --- .../serviceimpls/ProjectIdeaServiceImpl.java | 15 +++++ .../services/ProjectIdeaService.java | 11 +++- .../pages/SupervisorMyProjectIdeasPage.html | 9 +-- .../pages/SupervisorMyProjectIdeasPage.java | 66 +++++++++++++++++-- 4 files changed, 88 insertions(+), 13 deletions(-) diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectIdeaServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectIdeaServiceImpl.java index 39d6f67b69..c05feae225 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectIdeaServiceImpl.java +++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectIdeaServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; 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.match.dataobject.Match; import se.su.dsv.scipro.match.dataobject.ProjectIdea; @@ -55,6 +56,11 @@ public class ProjectIdeaServiceImpl extends AbstractQueryService<ProjectIdea, Lo return projectIdeaRepo.findAll(isMatchStatus(status), pageable); } + @Override + public Page<ProjectIdea> findByMatchedTo(Employee employee, Pageable pageable) { + return projectIdeaRepo.findAll(isMatchStatus(Match.Status.CONFIRMED).and(isMatchedTo(employee)), pageable); + } + @Override public Long countProjectIdeaByMatchStatus(Match.Status status) { return projectIdeaRepo.count(isMatchStatus(status)); @@ -65,6 +71,11 @@ public class ProjectIdeaServiceImpl extends AbstractQueryService<ProjectIdea, Lo return projectIdeaRepo.count(isMatchStatus(status).and(isProjectClass(projectClass))); } + @Override + public Long countByMatchedTo(Employee employee) { + return projectIdeaRepo.count(isMatchStatus(Match.Status.CONFIRMED).and(isMatchedTo(employee))); + } + private BooleanExpression isMatchStatus(Match.Status status){ return QProjectIdea.projectIdea.match.status.eq(status); } @@ -115,4 +126,8 @@ public class ProjectIdeaServiceImpl extends AbstractQueryService<ProjectIdea, Lo } + private BooleanExpression isMatchedTo(Employee employee){ + return QProjectIdea.projectIdea.match.supervisor.eq(employee); + } + } diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/ProjectIdeaService.java b/src/main/java/se/su/dsv/scipro/springdata/services/ProjectIdeaService.java index c6e733172d..e63aa365b1 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/services/ProjectIdeaService.java +++ b/src/main/java/se/su/dsv/scipro/springdata/services/ProjectIdeaService.java @@ -6,6 +6,7 @@ import java.util.Set; 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.match.dataobject.Match; import se.su.dsv.scipro.match.dataobject.ProjectIdea; @@ -17,10 +18,14 @@ import se.su.dsv.scipro.match.dataobject.ProjectIdea; public interface ProjectIdeaService extends GenericService<ProjectIdea,Long>, QueryService<ProjectIdea, Long> { public Page<ProjectIdea> find(Set<Match.Status> statusSet, String filterString, Date fromDate, Date toDate, Pageable pageable); - public Long count(Set<Match.Status> statusSet, String filterString, Date fromDate, Date toDate); - public Page<ProjectIdea> find(Match.Status status, Pageable pageable); - public Long countProjectIdeaByMatchStatus(Match.Status status); + public Page<ProjectIdea> findByMatchedTo(Employee employee, Pageable pageable); + + + public Long count(Set<Match.Status> statusSet, String filterString, Date fromDate, Date toDate); + public Long countProjectIdeaByMatchStatus(Match.Status status); public Long countProjectIdeaByMatchStatusAndProjectClass(Match.Status status, ProjectClass projectClass); + public Long countByMatchedTo(Employee employee); + } diff --git a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.html b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.html index 161611a5c1..cf7a666600 100644 --- a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.html +++ b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.html @@ -3,10 +3,11 @@ xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"> <body> <wicket:extend> - <div class="prepend-top span-24 last"> - <div wicket:id="feedBackPanel" /> - <div wicket:id="matchedThesisPanel"></div> - </div> + <!--<div class="prepend-top span-24 last">--> + <!--<div wicket:id="feedBackPanel" />--> + <!--<div wicket:id="matchedThesisPanel"></div> --> + <!--</div>--> + <div wicket:id="dp"></div> </wicket:extend> </body> </html> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.java b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.java index 9b8cc2756c..5bf2e7f173 100644 --- a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.java +++ b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.java @@ -3,20 +3,74 @@ package se.su.dsv.scipro.supervisor.pages; import org.apache.wicket.Component; import org.apache.wicket.PageParameters; +import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; +import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; import org.apache.wicket.markup.html.panel.FeedbackPanel; +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.SciProSession; +import se.su.dsv.scipro.data.dataobjects.Project; +import se.su.dsv.scipro.datatables.GenericDataPanel; +import se.su.dsv.scipro.match.dataobject.ProjectIdea; +import se.su.dsv.scipro.reusable.SafeLongToIntService; +import se.su.dsv.scipro.springdata.services.EmployeeService; +import se.su.dsv.scipro.springdata.services.GenericService; +import se.su.dsv.scipro.springdata.services.ProjectIdeaService; import se.su.dsv.scipro.supervisor.panels.SupervisorMatchedThesisPanel; +import java.util.Iterator; + public class SupervisorMyProjectIdeasPage extends AbstractSupervisorProjectIdeaPage { public static final String MAIN_MENU_LABEL = "Supervisor"; private static final long serialVersionUID = -6146389373527384427L; + @SpringBean + private ProjectIdeaService projectIdeaService; + @SpringBean + private SafeLongToIntService safeLongToIntService; + @SpringBean + private EmployeeService employeeService; + public SupervisorMyProjectIdeasPage(PageParameters pp) { - super(pp); - Component feedBackPanel = new FeedbackPanel("feedBackPanel"); - feedBackPanel.setOutputMarkupId(true); - add(feedBackPanel); - add(new SupervisorMatchedThesisPanel("matchedThesisPanel", SciProSession.get().getUser(), "Supervisor", feedBackPanel)); - } + super(pp); +// Component feedBackPanel = new FeedbackPanel("feedBackPanel"); +// feedBackPanel.setOutputMarkupId(true); +// add(feedBackPanel); +// add(new SupervisorMatchedThesisPanel("matchedThesisPanel", SciProSession.get().getUser(), "Supervisor", feedBackPanel)); + + + add(new GenericDataPanel<ProjectIdea>("dp") { + + @Override + public GenericService getService() { + return projectIdeaService; + } + + @Override + public String getSortString() { + return "dateCreated"; + } + + @Override + public IColumn[] getColumns() { + IColumn[] columns = new IColumn[1]; + columns[0] = new PropertyColumn<ProjectIdea>(Model.of("Title"), "title", "title"); + return columns; + } + + @Override + public Iterator<ProjectIdea> getIterator() { + return projectIdeaService.findByMatchedTo(employeeService.findByUser(SciProSession.get().getUser()), new PageRequest(getTable().getCurrentPage(), getTable().getRowsPerPage(), getSort())).iterator(); + } + + @Override + public int getSize() { + return safeLongToIntService.safeLongToInt(projectIdeaService.countByMatchedTo(employeeService.findByUser(SciProSession.get().getUser()))); + } + + }); + + } }