[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