[jboss-cvs] JBossAS SVN: r100441 - in projects/snowdrop/examples/trunk/sportsclub: sportsclub-domain/src and 15 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Feb 4 16:25:31 EST 2010
Author: marius.bogoevici
Date: 2010-02-04 16:25:28 -0500 (Thu, 04 Feb 2010)
New Revision: 100441
Added:
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/test/
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/test/java/
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/test/java/org/
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/test/java/org/jboss/
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/test/java/org/jboss/snowdrop/
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/test/java/org/jboss/snowdrop/samples/
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/test/java/org/jboss/snowdrop/samples/sportsclub/
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/test/java/org/jboss/snowdrop/samples/sportsclub/domain/
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/test/java/org/jboss/snowdrop/samples/sportsclub/domain/TestAccount.java
Modified:
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/pom.xml
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Account.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/TimeInterval.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/InvoiceRepository.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/initializer/DatabaseInitializer.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/test/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/TestHibernateAccountRepository.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/JpaInvoiceRepository.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/initializer/DatabaseInitializer.java
projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/test/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/TestJpaAccountRepository.java
Log:
Fix Invoice generation. Fix DatabaseInitializer. Add tests for Account and AccountRepositories (for invoices).
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/pom.xml
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/pom.xml 2010-02-04 21:08:02 UTC (rev 100440)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/pom.xml 2010-02-04 21:25:28 UTC (rev 100441)
@@ -22,6 +22,11 @@
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
</dependencies>
<build>
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Account.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Account.java 2010-02-04 21:08:02 UTC (rev 100440)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Account.java 2010-02-04 21:25:28 UTC (rev 100441)
@@ -37,7 +37,7 @@
private Date closeDate;
private static final TimeZone TIME_ZONE = TimeZone.getTimeZone("EST");
- private static final int TWO_WEEKS = (14 * 24 * 3600 * 1000);
+ private static final long TWO_WEEKS = (14 * 24 * 3600 * 1000);
public Account()
@@ -99,14 +99,12 @@
case WEEKLY:
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
timeInterval.setStartDate(calendar.getTime());
- calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+ calendar.add(Calendar.DAY_OF_MONTH, 6);
timeInterval.setEndDate(calendar.getTime());
break;
case BIWEEKLY:
long duration = normalizedDate.getTime() - getCreationDate().getTime();
long intervals = duration / TWO_WEEKS;
- if (duration % TWO_WEEKS != 0)
- intervals ++;
calendar.setTime(getCreationDate());
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
calendar.add(Calendar.DAY_OF_MONTH, (int)intervals * 14);
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/TimeInterval.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/TimeInterval.java 2010-02-04 21:08:02 UTC (rev 100440)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/TimeInterval.java 2010-02-04 21:25:28 UTC (rev 100441)
@@ -32,4 +32,9 @@
{
this.startDate = startDate;
}
+
+ public boolean contains(Date someDate)
+ {
+ return someDate.compareTo(startDate) >= 0 && someDate.compareTo(endDate)<=0;
+ }
}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/InvoiceRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/InvoiceRepository.java 2010-02-04 21:08:02 UTC (rev 100440)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/InvoiceRepository.java 2010-02-04 21:25:28 UTC (rev 100441)
@@ -4,9 +4,11 @@
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Invoice;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.InvoiceSearchCriteria;
public interface InvoiceRepository extends Repository<Invoice, Long>
{
List<Invoice> findForAccount(Account account);
+
}
Added: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/test/java/org/jboss/snowdrop/samples/sportsclub/domain/TestAccount.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/test/java/org/jboss/snowdrop/samples/sportsclub/domain/TestAccount.java (rev 0)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/test/java/org/jboss/snowdrop/samples/sportsclub/domain/TestAccount.java 2010-02-04 21:25:28 UTC (rev 100441)
@@ -0,0 +1,126 @@
+package org.jboss.snowdrop.samples.sportsclub.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import org.hamcrest.Description;
+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.Membership;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Name;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Person;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.TimeInterval;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.matchers.TypeSafeMatcher;
+
+/**
+ * @author Marius Bogoevici
+ */
+public class TestAccount
+{
+
+ @Test
+ public void testTimeInterval()
+ {
+ Date currentDate = new Date();
+
+ TimeInterval ti1 = new TimeInterval();
+ ti1.setStartDate(new Date(currentDate.getTime() - 1));
+ ti1.setEndDate(new Date(currentDate.getTime() + 1));
+ Assert.assertTrue(ti1.contains(currentDate));
+
+ TimeInterval ti2 = new TimeInterval();
+ ti2.setStartDate(new Date(currentDate.getTime()));
+ ti2.setEndDate(new Date(currentDate.getTime() + 1));
+ Assert.assertTrue(ti2.contains(currentDate));
+
+ TimeInterval ti3 = new TimeInterval();
+ ti3.setStartDate(new Date(currentDate.getTime()-1));
+ ti3.setEndDate(new Date(currentDate.getTime()));
+ Assert.assertTrue(ti3.contains(currentDate));
+
+ TimeInterval ti4 = new TimeInterval();
+ ti4.setStartDate(new Date(currentDate.getTime()));
+ ti4.setEndDate(new Date(currentDate.getTime()));
+ Assert.assertTrue(ti4.contains(currentDate));
+
+ TimeInterval ti5 = new TimeInterval();
+ ti5.setStartDate(new Date(currentDate.getTime()+1));
+ ti5.setEndDate(new Date(currentDate.getTime()+2));
+ Assert.assertTrue(!ti5.contains(currentDate));
+
+ TimeInterval ti6 = new TimeInterval();
+ ti6.setStartDate(new Date(currentDate.getTime()-2));
+ ti6.setEndDate(new Date(currentDate.getTime()-1));
+ Assert.assertTrue(!ti6.contains(currentDate));
+ }
+
+ @Test
+ public void testMonthly()
+ {
+ Account account = createAccount(BillingType.MONTHLY, BigDecimal.valueOf(120l));
+
+ Date currentDate = new Date();
+ final TimeInterval timeInterval = account.getBillingPeriodFor(currentDate);
+ Assert.assertThat(currentDate, new IsWithinTimeInterval(timeInterval));
+ }
+
+ @Test
+ public void testWeekly()
+ {
+ Account account = createAccount(BillingType.WEEKLY, BigDecimal.valueOf(520l));
+
+ Date currentDate = new Date();
+ final TimeInterval timeInterval = account.getBillingPeriodFor(currentDate);
+ Assert.assertThat(currentDate, new IsWithinTimeInterval(timeInterval));
+ }
+
+ @Test
+ public void testBiweekly()
+ {
+ Account account = createAccount(BillingType.BIWEEKLY, BigDecimal.valueOf(260l));
+
+ Date currentDate = new Date();
+ final TimeInterval timeInterval = account.getBillingPeriodFor(currentDate);
+ Assert.assertThat(currentDate, new IsWithinTimeInterval(timeInterval));
+ }
+
+ private Account createAccount(BillingType billingType, BigDecimal amount)
+ {
+ Account account = new Account();
+ account.setBillingType(billingType);
+ account.setClosed(false);
+ account.setCreationDate(new Date());
+ Membership membership = new Membership("GOLD");
+ membership.setActive(true);
+ membership.setAnnualFee(amount);
+ account.setMembership(membership);
+ account.setSubscriber(new Person());
+ account.getSubscriber().setName(new Name());
+ account.getSubscriber().getName().setFirstName("Samuel");
+ account.getSubscriber().getName().setLastName("Vimes");
+ return account;
+ }
+
+ private static class IsWithinTimeInterval extends TypeSafeMatcher<Date>
+ {
+ private final TimeInterval timeInterval;
+
+ public IsWithinTimeInterval(TimeInterval timeInterval)
+ {
+ this.timeInterval = timeInterval;
+ }
+
+ public void describeTo(Description description)
+ {
+ description.appendText("TimeInterval from: " + timeInterval.getStartDate() + " to " + timeInterval.getEndDate());
+ }
+
+ @Override
+ public boolean matchesSafely(Date item)
+ {
+ return timeInterval.contains(item);
+ }
+ }
+}
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/initializer/DatabaseInitializer.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/initializer/DatabaseInitializer.java 2010-02-04 21:08:02 UTC (rev 100440)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/initializer/DatabaseInitializer.java 2010-02-04 21:25:28 UTC (rev 100441)
@@ -157,7 +157,7 @@
private Invoice createInvoice(Account account)
{
- Date date = createDate(2009, 02, 01);
+ Date date = createDate(2010, 02, 01);
Invoice invoice = new Invoice();
invoice.setAccount(account);
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/test/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/TestHibernateAccountRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/test/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/TestHibernateAccountRepository.java 2010-02-04 21:08:02 UTC (rev 100440)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/test/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/TestHibernateAccountRepository.java 2010-02-04 21:25:28 UTC (rev 100441)
@@ -6,6 +6,7 @@
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
import org.jboss.snowdrop.samples.sportsclub.domain.repository.AccountRepository;
import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.AccountSearchCriteria;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.InvoiceSearchCriteria;
import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.PersonSearchCriteria;
import org.junit.Assert;
import org.junit.Test;
@@ -41,4 +42,31 @@
Account account = accountList.get(0);
Assert.assertNotNull(account.getBalance());
}
+
+ @Test
+ public void testAccountRepositoryWithInvoices()
+ {
+ AccountSearchCriteria criteria = new AccountSearchCriteria();
+ criteria.setInvoiceSearchCriteria(new InvoiceSearchCriteria());
+ criteria.getInvoiceSearchCriteria().setCurrentInvoice(true);
+ List<Account> accountList = accountRepository.findByCriteria(criteria);
+ Assert.assertEquals(1, accountList.size());
+ Account account = accountList.get(0);
+ Assert.assertEquals(2l, account.getId());
+ Assert.assertNotNull(account.getBalance());
+ }
+
+ @Test
+ public void testAccountRepositoryWithoutInvoices()
+ {
+ AccountSearchCriteria criteria = new AccountSearchCriteria();
+ criteria.setInvoiceSearchCriteria(new InvoiceSearchCriteria());
+ criteria.getInvoiceSearchCriteria().setCurrentInvoice(false);
+ List<Account> accountList = accountRepository.findByCriteria(criteria);
+ Assert.assertEquals(11, accountList.size());
+ for (Account account : accountList)
+ {
+ Assert.assertFalse(2l == account.getId());
+ }
+ }
}
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-04 21:08:02 UTC (rev 100440)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaAccountRepository.java 2010-02-04 21:25:28 UTC (rev 100441)
@@ -62,9 +62,9 @@
}
if (criteria.getInvoiceSearchCriteria() != null)
{
- String not = (criteria.getInvoiceSearchCriteria().isCurrentInvoice() ? "NOT" : "");
+ 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 )";
+ " i WHERE :now between i.billingPeriod.startDate and i.billingPeriod.endDate )";
}
Query query = entityManager.createQuery(q);
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaInvoiceRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaInvoiceRepository.java 2010-02-04 21:08:02 UTC (rev 100440)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/JpaInvoiceRepository.java 2010-02-04 21:25:28 UTC (rev 100441)
@@ -3,6 +3,8 @@
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
import org.jboss.snowdrop.samples.sportsclub.domain.entity.Invoice;
import org.jboss.snowdrop.samples.sportsclub.domain.repository.InvoiceRepository;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.InvoiceSearchCriteria;
+
import org.springframework.stereotype.Repository;
import javax.persistence.Query;
Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/initializer/DatabaseInitializer.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/initializer/DatabaseInitializer.java 2010-02-04 21:08:02 UTC (rev 100440)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/initializer/DatabaseInitializer.java 2010-02-04 21:25:28 UTC (rev 100441)
@@ -156,14 +156,14 @@
private Invoice createInvoice(Account account)
{
- Date date = createDate(2009, 02, 01);
+ Date date = createDate(2010, 02, 01);
Invoice invoice = new Invoice();
invoice.setAccount(account);
invoice.setAmount(account.getFeePerBillingPeriod());
invoice.setIssueDate(date);
invoice.setBillingPeriod(account.getBillingPeriodFor(date));
-
+ account.getBalance().debit(invoice.getAmount());
return invoice;
}
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-04 21:08:02 UTC (rev 100440)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-jpa-dao/src/test/java/org/jboss/snowdrop/samples/sportsclub/dao/jpa/TestJpaAccountRepository.java 2010-02-04 21:25:28 UTC (rev 100441)
@@ -3,6 +3,10 @@
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.beans.factory.annotation.Autowired;
+
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Invoice;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.InvoiceRepository;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.criteria.InvoiceSearchCriteria;
import org.junit.runner.RunWith;
import org.junit.Test;
import org.junit.Assert;
@@ -26,6 +30,9 @@
@Autowired
AccountRepository accountRepository;
+ @Autowired
+ InvoiceRepository invoiceRepository;
+
@Test
public void testAccountRepository()
{
@@ -40,4 +47,31 @@
Account account = accountList.get(0);
Assert.assertNotNull(account.getBalance());
}
+
+ @Test
+ public void testAccountRepositoryWithInvoices()
+ {
+ AccountSearchCriteria criteria = new AccountSearchCriteria();
+ criteria.setInvoiceSearchCriteria(new InvoiceSearchCriteria());
+ criteria.getInvoiceSearchCriteria().setCurrentInvoice(true);
+ List<Account> accountList = accountRepository.findByCriteria(criteria);
+ Assert.assertEquals(1, accountList.size());
+ Account account = accountList.get(0);
+ Assert.assertEquals(2l, account.getId());
+ Assert.assertNotNull(account.getBalance());
+ }
+
+ @Test
+ public void testAccountRepositoryWithoutInvoices()
+ {
+ AccountSearchCriteria criteria = new AccountSearchCriteria();
+ criteria.setInvoiceSearchCriteria(new InvoiceSearchCriteria());
+ criteria.getInvoiceSearchCriteria().setCurrentInvoice(false);
+ List<Account> accountList = accountRepository.findByCriteria(criteria);
+ Assert.assertEquals(11, accountList.size());
+ for (Account account : accountList)
+ {
+ Assert.assertFalse(2l == account.getId());
+ }
+ }
}
More information about the jboss-cvs-commits
mailing list