[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