[jboss-cvs] JBossAS SVN: r100333 - in projects/snowdrop/examples/trunk/sportsclub: sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Feb 3 05:01:33 EST 2010


Author: lvlcek at redhat.com
Date: 2010-02-03 05:01:32 -0500 (Wed, 03 Feb 2010)
New Revision: 100333

Modified:
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/AccountRepository.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernateAccountRepository.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaAccountRepository.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaReservationRepository.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/test/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/TestJpaAccountRepository.java
Log:
AccountRepository implementation(s)

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/AccountRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/AccountRepository.java	2010-02-03 09:29:36 UTC (rev 100332)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/AccountRepository.java	2010-02-03 10:01:32 UTC (rev 100333)
@@ -10,7 +10,7 @@
  */
 public interface AccountRepository extends Repository<Account, Long>
 {
-   int countByCriteria(AccountSearchCriteria accountSearchCriteria);
+   long countByCriteria(AccountSearchCriteria accountSearchCriteria);
 
    List<Account> findByCriteria(AccountSearchCriteria accountSearchCriteria);
 }

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernateAccountRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernateAccountRepository.java	2010-02-03 09:29:36 UTC (rev 100332)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernateAccountRepository.java	2010-02-03 10:01:32 UTC (rev 100333)
@@ -9,7 +9,7 @@
 import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.AccountSearchCriteria;
 import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.PersonSearchCriteria;
 
-import java.util.Date;
+import java.sql.Timestamp;
 import java.util.List;
 
 /**
@@ -23,11 +23,11 @@
       super(Account.class);
    }
 
-   public int countByCriteria(AccountSearchCriteria accountSearchCriteria)
+   public long countByCriteria(AccountSearchCriteria accountSearchCriteria)
    {
       Criteria criteria = convert(accountSearchCriteria);
       criteria.setProjection(Projections.count("id"));
-      return (Integer) criteria.uniqueResult();
+      return new Long((Integer) criteria.uniqueResult());
    }
 
    private Criteria convert(AccountSearchCriteria accountSearchCriteria)
@@ -55,10 +55,10 @@
       }
       if (accountSearchCriteria.getInvoiceSearchCriteria() != null)
       {
-         Date now = new Date();
+         Timestamp now = new Timestamp(System.currentTimeMillis());
          DetachedCriteria invcEntries = DetachedCriteria.forClass(Invoice.class)
-               .setProjection(Property.forName("id"));
-         invcEntries.add(and(ge("billingPeriod.startDate", now), le("billingPeriod.endDate", now)));
+               .setProjection(Property.forName("account.id"));
+         invcEntries.add(and(le("billingPeriod.startDate", now), ge("billingPeriod.endDate", now)));
 
          if (accountSearchCriteria.getInvoiceSearchCriteria().isCurrentInvoice())
             criteria.add(Subqueries.propertyIn("id", invcEntries));

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaAccountRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaAccountRepository.java	2010-02-03 09:29:36 UTC (rev 100332)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaAccountRepository.java	2010-02-03 10:01:32 UTC (rev 100333)
@@ -1,16 +1,14 @@
 package org.jboss.snowdrop.samples.sportsclub.dao.jpa;
 
 import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
-import org.jboss.snowdrop.samples.sportsclub.domain.entity.BillingType;
-import org.jboss.snowdrop.samples.sportsclub.domain.entity.Person;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Invoice;
 import org.jboss.snowdrop.samples.sportsclub.domain.repository.AccountRepository;
 import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.AccountSearchCriteria;
 import org.springframework.stereotype.Repository;
 
 import javax.persistence.Query;
-import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
+import java.sql.Timestamp;
 
 /**
  * @author Marius Bogoevici
@@ -24,27 +22,66 @@
       super(Account.class);
    }
 
-//   public List<Account> findByPersonName(String name)
-//   {
-//      Query query = entityManager.createQuery(" from " + Account.class.getSimpleName() + " a " +
-//            "where a.subscriber.name.firstName like :name " +
-//            "or a.subscriber.name.lastName like :name " +
-//            "or a.subscriber.name.middleName like :name");
-//      query.setParameter("name", "%" + name + "%");
-//      return query.getResultList();
-//   }
+   public long countByCriteria(AccountSearchCriteria accountSearchCriteria)
+   {
+      Query query = getQuery(accountSearchCriteria, "SELECT count(a.id) ");
+      return (Long)query.getSingleResult();
+   }
 
-   public int countByCriteria(AccountSearchCriteria accountSearchCriteria)
+   public List<Account> findByCriteria(AccountSearchCriteria criteria)
    {
-      return this.findAll().size(); // TODO create real implementation
+      Query query = getQuery(criteria, null);
+      return (criteria.getRange() != null ?
+            query.getResultList().subList(criteria.getRange().getMinIndex(), criteria.getRange().getMaxIndex()) :
+            query.getResultList());
    }
 
-   public List<Account> findByCriteria(AccountSearchCriteria accountSearchCriteria)
+   private Query getQuery(AccountSearchCriteria criteria, String select)
    {
-      // TODO create real implementation
-      if (accountSearchCriteria.getRange() != null)
-         return this.findAll().subList(accountSearchCriteria.getRange().getMinIndex(), accountSearchCriteria.getRange().getMaxIndex());
-      else
-         return this.findAll();
+      String q = (select != null ? select : "");
+
+      q += "FROM " + Account.class.getSimpleName() + " a WHERE 1 = 1";
+
+      if (criteria.isActiveOnly())
+      {
+         q += " AND a.closed = :active";
+      }
+      if (criteria.getPersonSearchCriteria() != null && criteria.getPersonSearchCriteria().getName() != null)
+      {
+         q += " AND a.subscriber.name.firstName like :name" +
+              " OR a.subscriber.name.lastName like :name" +
+              " OR a.subscriber.name.middleName like :name";
+      }
+      if (criteria.getPersonSearchCriteria() != null && criteria.getPersonSearchCriteria().getCity() != null)
+      {
+         q += " AND a.subscriber.address.city like :city";
+      }
+      if (criteria.getInvoiceSearchCriteria() != null)
+      {
+         String not = (criteria.getInvoiceSearchCriteria().isCurrentInvoice() ? "NOT" : "");
+         q += " AND a.id "+not+" IN (SELECT i.account.id FROM " + Invoice.class.getSimpleName() +
+               " i WHERE i.billingPeriod.startDate <= :now AND i.billingPeriod.endDate >= :now )";
+      }
+
+      Query query = entityManager.createQuery(q);
+
+      if (criteria.isActiveOnly())
+      {
+         query.setParameter("active", false);
+      }
+      if (criteria.getPersonSearchCriteria() != null && criteria.getPersonSearchCriteria().getName() != null)
+      {
+         query.setParameter("name", "%" + criteria.getPersonSearchCriteria().getName() + "%");
+      }
+      if (criteria.getPersonSearchCriteria() != null && criteria.getPersonSearchCriteria().getCity() != null)
+      {
+         query.setParameter("city", "%" + criteria.getPersonSearchCriteria().getCity() + "%");
+      }
+      if (criteria.getInvoiceSearchCriteria() != null)
+      {
+         query.setParameter("now", new Timestamp(System.currentTimeMillis()));
+      }
+
+      return query;
    }
 }

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaReservationRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaReservationRepository.java	2010-02-03 09:29:36 UTC (rev 100332)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaReservationRepository.java	2010-02-03 10:01:32 UTC (rev 100333)
@@ -1,13 +1,11 @@
 package org.jboss.snowdrop.samples.sportsclub.dao.jpa;
 
 import org.jboss.snowdrop.samples.sportsclub.domain.entity.Reservation;
-import org.jboss.snowdrop.samples.sportsclub.domain.entity.EquipmentType;
 import org.jboss.snowdrop.samples.sportsclub.domain.repository.ReservationRepository;
 import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.ReservationSearchCriteria;
 import org.springframework.stereotype.Repository;
 
 import javax.persistence.Query;
-import java.util.Collections;
 import java.util.List;
 
 /**
@@ -31,7 +29,9 @@
    public List<Reservation> getByCriteria(ReservationSearchCriteria criteria)
    {
       Query query = getQuery(criteria, null);
-      return query.getResultList();
+      return (criteria.getRange() != null ?
+            query.getResultList().subList(criteria.getRange().getMinIndex(), criteria.getRange().getMaxIndex()) :
+            query.getResultList());
    }
 
    private Query getQuery(ReservationSearchCriteria criteria, String select)

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/test/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/TestJpaAccountRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/test/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/TestJpaAccountRepository.java	2010-02-03 09:29:36 UTC (rev 100332)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/test/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/TestJpaAccountRepository.java	2010-02-03 10:01:32 UTC (rev 100333)
@@ -32,12 +32,12 @@
       Collection<Account> accounts = accountRepository.findAll();
       Assert.assertEquals(12, accounts.size());
 
-//      AccountSearchCriteria criteria = new AccountSearchCriteria();
-//      PersonSearchCriteria personCriteria = new PersonSearchCriteria();
-//      personCriteria.setName("Vetinari");
-//      criteria.setPersonSearchCriteria(personCriteria);
-//      List<Account> accountList = accountRepository.findByCriteria(criteria);
-//      Account account = accountList.get(0);
-//      Assert.assertNotNull(account.getBalance());
+      AccountSearchCriteria criteria = new AccountSearchCriteria();
+      PersonSearchCriteria personCriteria = new PersonSearchCriteria();
+      personCriteria.setName("Vetinari");
+      criteria.setPersonSearchCriteria(personCriteria);
+      List<Account> accountList = accountRepository.findByCriteria(criteria);
+      Account account = accountList.get(0);
+      Assert.assertNotNull(account.getBalance());
    }
 }




More information about the jboss-cvs-commits mailing list