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())));
+            }
+
+        });
+
+    }
 }