From 9fe8659bfce3e702ae7a91f389ab73495cd2385c Mon Sep 17 00:00:00 2001
From: Tom Vahlman <tom@dsv.su.se>
Date: Fri, 6 Apr 2012 14:17:21 +0200
Subject: [PATCH] Just added a simple test with a JPAQuery.

---
 .../serviceimpls/SupervisorServiceImpl.java    | 18 ++++++++++++++++++
 .../springdata/services/SupervisorService.java |  2 ++
 .../dsv/scipro/springdata/TestSupervisor.java  | 16 ++++++++++++++++
 3 files changed, 36 insertions(+)

diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorServiceImpl.java
index 9041daecb2..183793d694 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorServiceImpl.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorServiceImpl.java
@@ -1,14 +1,21 @@
 package se.su.dsv.scipro.springdata.serviceimpls;
 
+import com.mysema.query.jpa.impl.JPAQuery;
+import com.mysema.query.types.Predicate;
+import com.mysema.query.types.Visitor;
+import com.mysema.query.types.expr.BooleanExpression;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 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.QEmployee;
 import se.su.dsv.scipro.springdata.repos.SupervisorRepo;
 import se.su.dsv.scipro.springdata.services.SupervisorService;
 
 import javax.annotation.Resource;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
 import java.util.List;
 
 
@@ -20,6 +27,11 @@ public class SupervisorServiceImpl extends AbstractQueryService<Employee, Long>
     @Resource
     private SupervisorRepo supervisorRepo;
 
+
+    @PersistenceContext
+    private EntityManager em;
+
+
     @Autowired
     public SupervisorServiceImpl(@Qualifier("supervisorRepo") SupervisorRepo supervisorRepo) {
         super(supervisorRepo, supervisorRepo);
@@ -31,4 +43,10 @@ public class SupervisorServiceImpl extends AbstractQueryService<Employee, Long>
         return supervisorRepo.findAll(orders);
     }
 
+    @Override
+    public List<Employee> findByUsersName() {   QEmployee employee = QEmployee.employee;
+        BooleanExpression lastName = employee.user.lastName.eq("Vahlman");
+        return new JPAQuery(em).from(employee).where(lastName).list(employee);
+    }
+
 }
diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorService.java b/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorService.java
index 439d9e1c97..20347695d6 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorService.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorService.java
@@ -9,4 +9,6 @@ import java.util.List;
  */
 public interface SupervisorService extends CrudService<Employee,Long>, QueryService<Employee, Long> {
     public List<Employee> findAllEmployees(org.springframework.data.domain.Sort orders);
+
+    public List<Employee> findByUsersName();
 }
diff --git a/src/test/java/se/su/dsv/scipro/springdata/TestSupervisor.java b/src/test/java/se/su/dsv/scipro/springdata/TestSupervisor.java
index 609726cba9..476bd29a2e 100644
--- a/src/test/java/se/su/dsv/scipro/springdata/TestSupervisor.java
+++ b/src/test/java/se/su/dsv/scipro/springdata/TestSupervisor.java
@@ -133,6 +133,22 @@ public class TestSupervisor {
         assertTrue(employeeList.get(5).equals(tholerus));
     }
 
+
+    /**
+     *   Test for implementing a supervisorService with Spring Data
+     */
+    @Test
+    @Transactional
+    @Rollback
+    public void findEmployeeByName() {
+        List<Employee> employeeList = new ArrayList<Employee>();
+        Employee vahlman = getEmployee("Tom", "Vahlman", "tom@dsv.su.se");
+        vahlman =  supervisorService.save(vahlman);
+        employeeList.addAll(supervisorService.findByUsersName());
+        assertFalse(employeeList.isEmpty());
+        assertTrue(employeeList.get(0).equals(vahlman));
+    }
+
     /**
      *   Test for implementing a supervisorService with Spring Data
      */