[jboss-cvs] JBossAS SVN: r97915 - in projects/snowdrop/examples/trunk/sportsclub: sportsclub-domain and 8 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Dec 16 16:00:46 EST 2009


Author: marius.bogoevici
Date: 2009-12-16 16:00:45 -0500 (Wed, 16 Dec 2009)
New Revision: 97915

Added:
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Balance.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Payment.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/BalanceRepository.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/PaymentRepository.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernateBalanceRepository.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernatePaymentRepository.java
Modified:
   projects/snowdrop/examples/trunk/sportsclub/pom.xml
   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/BillingType.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Equipment.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Invoice.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Person.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Reservation.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/HibernateInvoiceRepository.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/main/resources/hibernate/hibernate.cfg.xml
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-spring/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingService.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-spring/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingServiceImpl.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-subscriptions-ejb/src/main/java/org/jboss/snowdrop/samples/sportsclub/ejb/SubscriptionServiceImpl.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-subscriptions-web/src/main/webapp/searchForm.xhtml
Log:
add domain and business logic for invoicing.

Modified: projects/snowdrop/examples/trunk/sportsclub/pom.xml
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/pom.xml	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/pom.xml	2009-12-16 21:00:45 UTC (rev 97915)
@@ -56,6 +56,13 @@
                 <scope>provided</scope>
             </dependency>
 
+           <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-annotations</artifactId>
+                <version>3.3.1.GA</version>
+                <scope>provided</scope>
+            </dependency>
+
             <dependency>
                 <groupId>org.hibernate</groupId>
                 <artifactId>hibernate-annotations</artifactId>
@@ -144,6 +151,14 @@
         </dependencies>
     </dependencyManagement>
 
+    <dependencies>
+       <dependency>
+         <groupId>org.hibernate</groupId>
+         <artifactId>hibernate-annotations</artifactId>
+      </dependency>
+       
+    </dependencies>
+
     <build>
         <plugins>
             <plugin>

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/pom.xml
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/pom.xml	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/pom.xml	2009-12-16 21:00:45 UTC (rev 97915)
@@ -17,5 +17,10 @@
             <groupId>org.hibernate</groupId>
             <artifactId>ejb3-persistence</artifactId>
         </dependency>
+
+        <dependency>
+          <groupId>org.hibernate</groupId>
+          <artifactId>hibernate-annotations</artifactId>
+       </dependency>
     </dependencies>
 </project>
\ No newline at end of file

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	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Account.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -1,10 +1,16 @@
 package org.jboss.snowdrop.samples.sportsclub.domain.entity;
 
-import org.jboss.snowdrop.samples.sportsclub.domain.entity.Person;
-
-import javax.persistence.*;
+import java.math.BigDecimal;
 import java.util.Date;
 
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToOne;
+import javax.persistence.PrimaryKeyJoinColumn;
+
 /**
  * @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>
  */
@@ -17,6 +23,10 @@
    @OneToOne(cascade = {CascadeType.ALL})
    private Person subscriber;
 
+   @OneToOne(cascade = {CascadeType.ALL})
+   @PrimaryKeyJoinColumn
+   private Balance balance;
+
    private Date creationDate;
 
    @ManyToOne
@@ -94,6 +104,21 @@
       this.closeDate = closeDate;
    }
 
+   public BigDecimal getFeePerBillingPeriod()
+   {
+      return membership.getAnnualFee().divide(BigDecimal.valueOf(billingType.periodsPerYear()));
+   }
 
+   public Balance getBalance()
+   {
+      return balance;
+   }
+
+   public void resetBalance()
+   {
+      this.balance = new Balance();
+      this.balance.setAccount(this);
+      this.balance.setCurrentBalance(BigDecimal.ZERO);
+   }
 }
 

Added: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Balance.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Balance.java	                        (rev 0)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Balance.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -0,0 +1,64 @@
+package org.jboss.snowdrop.samples.sportsclub.domain.entity;
+
+import java.math.BigDecimal;
+
+import javax.annotation.Generated;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToOne;
+
+import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
+
+ at Entity
+public class Balance
+{
+   @Id   
+   @GeneratedValue(generator = "foreign")
+   @GenericGenerator(
+         name = "foreign", strategy = "foreign", parameters = {@Parameter(name = "property", value = "account")}
+   )
+   private Long id;
+
+   @OneToOne(mappedBy = "balance")
+   private Account account;
+
+   private BigDecimal currentBalance;
+
+
+   public Long getId()
+   {
+      return id;
+   }
+
+   public Account getAccount()
+   {
+      return account;
+   }
+
+   public void setAccount(Account account)
+   {
+      this.account = account;
+   }
+
+   public BigDecimal getCurrentBalance()
+   {
+      return currentBalance;
+   }
+
+   public void setCurrentBalance(BigDecimal currentBalance)
+   {
+      this.currentBalance = currentBalance;
+   }
+
+   public void credit(BigDecimal amount)
+   {
+      this.currentBalance.subtract(amount);
+   }
+
+   public void debit(BigDecimal amount)
+   {
+      this.currentBalance.add(amount);
+   }
+}

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/BillingType.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/BillingType.java	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/BillingType.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -5,9 +5,23 @@
  */
 public enum BillingType
 {
-   MONTHLY,
+   MONTHLY(12),
 
-   BIWEEKLY,
+   SEMIMONTHLY(24),
 
-   WEEKLY
+   BIWEEKLY(26),
+
+   WEEKLY(52);
+
+   private int periods;
+
+   BillingType(int periods)
+   {
+      this.periods = periods;
+   }
+
+   public int periodsPerYear()
+   {
+     return periods;
+   }
 }

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Equipment.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Equipment.java	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Equipment.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -1,6 +1,9 @@
 package org.jboss.snowdrop.samples.sportsclub.domain.entity;
 
-import javax.persistence.*;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
 
 /**
  * @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Invoice.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Invoice.java	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Invoice.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -4,7 +4,7 @@
 import javax.persistence.Id;
 import javax.persistence.ManyToOne;
 import java.math.BigDecimal;
-import java.sql.Date;
+import java.util.Date;
 
 /**
  * @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>

Added: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Payment.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Payment.java	                        (rev 0)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Payment.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -0,0 +1,57 @@
+package org.jboss.snowdrop.samples.sportsclub.domain.entity;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+
+ at Entity
+public class Payment
+{
+   @Id
+   Long id;
+
+   private BigDecimal amount;
+
+   @ManyToOne
+   private Account account;
+
+   private Date date;
+
+   public Long getId()
+   {
+      return id;
+   }
+
+   public BigDecimal getAmount()
+   {
+      return amount;
+   }
+
+   public void setAmount(BigDecimal amount)
+   {
+      this.amount = amount;
+   }
+
+   public Account getAccount()
+   {
+      return account;
+   }
+
+   public void setAccount(Account account)
+   {
+      this.account = account;
+   }
+
+   public Date getDate()
+   {
+      return date;
+   }
+
+   public void setDate(Date date)
+   {
+      this.date = date;
+   }
+}

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Person.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Person.java	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Person.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -1,9 +1,5 @@
 package org.jboss.snowdrop.samples.sportsclub.domain.entity;
 
-import org.jboss.snowdrop.samples.sportsclub.domain.entity.Address;
-import org.jboss.snowdrop.samples.sportsclub.domain.entity.Name;
-
-import javax.persistence.CascadeType;
 import javax.persistence.Embedded;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Reservation.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Reservation.java	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Reservation.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -1,8 +1,13 @@
 package org.jboss.snowdrop.samples.sportsclub.domain.entity;
 
-import javax.persistence.*;
 import java.util.Date;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+
 /**
  * @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>
  */

Added: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/BalanceRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/BalanceRepository.java	                        (rev 0)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/BalanceRepository.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -0,0 +1,17 @@
+package org.jboss.snowdrop.samples.sportsclub.domain.repository;
+
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Balance;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: marius
+ * Date: 16-Dec-2009
+ * Time: 2:27:38 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public interface BalanceRepository extends Repository<Balance, Long>
+{
+
+   Balance findForAccount(Account account);
+}

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	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/InvoiceRepository.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -1,8 +1,12 @@
 package org.jboss.snowdrop.samples.sportsclub.domain.repository;
 
+import java.util.List;
+
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
 import org.jboss.snowdrop.samples.sportsclub.domain.entity.Invoice;
 
 public interface InvoiceRepository extends Repository<Invoice, Long>
 {
 
+   List<Invoice> findForAccount(Account account);
 }

Added: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/PaymentRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/PaymentRepository.java	                        (rev 0)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/repository/PaymentRepository.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -0,0 +1,8 @@
+package org.jboss.snowdrop.samples.sportsclub.domain.repository;
+
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Payment;
+
+public interface PaymentRepository extends Repository<Payment, Long>
+{
+
+}

Added: projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernateBalanceRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernateBalanceRepository.java	                        (rev 0)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernateBalanceRepository.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -0,0 +1,34 @@
+package org.jboss.snowdrop.samples.sportsclub.dao.hibernate;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Balance;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Payment;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.BalanceRepository;
+
+import org.hibernate.Criteria;
+import org.hibernate.criterion.Restrictions;
+
+public class HibernateBalanceRepository extends HibernateRepository<Balance,Long> implements BalanceRepository
+{
+   public HibernateBalanceRepository()
+   {
+      super(Balance.class);
+   }
+
+   public Balance findForAccount(Account account)
+   {
+      Criteria criteria = getCurrentSession().createCriteria(Payment.class);
+      criteria.createCriteria("account").add(Restrictions.eq("id", account.getId()));
+      Balance balance = (Balance) criteria.uniqueResult();
+      if (balance == null)
+      {
+         balance = new Balance();
+         balance.setAccount(account);
+         balance.setCurrentBalance(BigDecimal.ZERO);
+      }
+      return balance;
+   }
+}

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernateInvoiceRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernateInvoiceRepository.java	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernateInvoiceRepository.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -1,14 +1,28 @@
 package org.jboss.snowdrop.samples.sportsclub.dao.hibernate;
 
+import java.util.List;
+
+import javax.swing.plaf.basic.BasicInternalFrameTitlePane;
+
+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.hibernate.Criteria;
+import org.hibernate.criterion.Restrictions;
+
 public class HibernateInvoiceRepository extends HibernateRepository<Invoice, Long> implements InvoiceRepository
 {
    public HibernateInvoiceRepository()
    {
       super(Invoice.class);
    }
-   
+
+   public List<Invoice> findForAccount(Account account)
+   {
+      Criteria criteria = getCurrentSession().createCriteria(Invoice.class);
+      criteria.createCriteria("account").add(Restrictions.eq("id", account.getId()));
+      return ((List<Invoice>) criteria.list());
+   }
 }
 

Added: projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernatePaymentRepository.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernatePaymentRepository.java	                        (rev 0)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/HibernatePaymentRepository.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -0,0 +1,26 @@
+package org.jboss.snowdrop.samples.sportsclub.dao.hibernate;
+
+import java.util.List;
+
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Payment;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.PaymentRepository;
+
+import org.hibernate.Criteria;
+import org.hibernate.criterion.Restrictions;
+
+public class HibernatePaymentRepository extends HibernateRepository<Payment, Long> implements PaymentRepository
+{
+
+   public HibernatePaymentRepository()
+   {
+      super(Payment.class);
+   }
+
+   public List<Payment> findForAccount(Account account)
+   {
+      Criteria criteria = getCurrentSession().createCriteria(Payment.class);
+      criteria.createCriteria("account").add(Restrictions.eq("id", account.getId()));
+      return ((List<Payment>) criteria.list());
+   }
+}

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	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/java/org/jboss/snowdrop/samples/sportsclub/dao/hibernate/initializer/DatabaseInitializer.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -144,6 +144,7 @@
       account.setCreationDate(new Date());
       account.setBillingType(billingType);
       account.setMembership(silverMembership);
+      account.resetBalance();
       account.setClosed(false);
       return account;
    }

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/resources/hibernate/hibernate.cfg.xml
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/resources/hibernate/hibernate.cfg.xml	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-hibernate-dao/src/main/resources/hibernate/hibernate.cfg.xml	2009-12-16 21:00:45 UTC (rev 97915)
@@ -23,6 +23,8 @@
     <mapping class="org.jboss.snowdrop.samples.sportsclub.domain.entity.Equipment"/>
     <!--<mapping class="org.jboss.snowdrop.samples.sportsclub.domain.entity.Name"/>--> <!-- Embedded class -->
     <mapping class="org.jboss.snowdrop.samples.sportsclub.domain.entity.Invoice"/>
+    <mapping class="org.jboss.snowdrop.samples.sportsclub.domain.entity.Balance"/>
+    <mapping class="org.jboss.snowdrop.samples.sportsclub.domain.entity.Payment"/>
     <mapping class="org.jboss.snowdrop.samples.sportsclub.domain.entity.Membership"/>
     <mapping class="org.jboss.snowdrop.samples.sportsclub.domain.entity.Person"/>
     <mapping class="org.jboss.snowdrop.samples.sportsclub.domain.entity.Reservation"/>

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-spring/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingService.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-spring/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingService.java	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-spring/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingService.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -1,8 +1,12 @@
 package org.jboss.spring.samples.sportsclub.invoicing.services;
 
+import java.math.BigDecimal;
+
 import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
 
 public interface BillingService
 {
-   void submitInvoice(Account account);
+   void generateInvoice(Account account);
+
+   void processPayment(Account account, BigDecimal amount);
 }

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-spring/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingServiceImpl.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-spring/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingServiceImpl.java	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-spring/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingServiceImpl.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -1,15 +1,64 @@
 package org.jboss.spring.samples.sportsclub.invoicing.services;
 
+import java.math.BigDecimal;
+import java.util.Date;
+
 import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Balance;
 import org.jboss.snowdrop.samples.sportsclub.domain.entity.Invoice;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Payment;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.BalanceRepository;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.InvoiceRepository;
+import org.jboss.snowdrop.samples.sportsclub.domain.repository.PaymentRepository;
 
 public class BillingServiceImpl implements BillingService
 {
+   private InvoiceRepository invoiceRepository;
+   private BalanceRepository balanceRepository;
+   private PaymentRepository paymentRepository;
 
-   public void submitInvoice(Account account)
+   public void setInvoiceRepository(InvoiceRepository invoiceRepository)
    {
+      this.invoiceRepository = invoiceRepository;
+   }
+
+   public void setBalanceRepository(BalanceRepository balanceRepository)
+   {
+      this.balanceRepository = balanceRepository;
+   }
+
+   public void setPaymentRepository(PaymentRepository paymentRepository)
+   {
+      this.paymentRepository = paymentRepository;
+   }
+
+   public void generateInvoice(Account account)
+   {
       Invoice invoice = new Invoice();
       invoice.setAccount(account);
-      
+      invoice.setAmount(account.getFeePerBillingPeriod());
+      invoice.setDate(new Date());
+      invoiceRepository.save(invoice);
+      Balance balance = balanceRepository.findForAccount(account);
+      balance.debit(invoice.getAmount());
+      balanceRepository.save(balance);
    }
+
+   public void processPayment(Account account, BigDecimal amount)
+   {
+      Payment payment = new Payment();
+      payment.setAccount(account);
+      payment.setAmount(amount);
+      payment.setDate(new Date());
+      paymentRepository.save(payment);
+      Balance balance = balanceRepository.findForAccount(account);
+      balance.credit(amount);
+      balanceRepository.save(balance);
+   }
+
+   public Balance getBalance(Account account)
+   {
+      return balanceRepository.findForAccount(account);
+   }
+
 }

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-subscriptions-ejb/src/main/java/org/jboss/snowdrop/samples/sportsclub/ejb/SubscriptionServiceImpl.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-subscriptions-ejb/src/main/java/org/jboss/snowdrop/samples/sportsclub/ejb/SubscriptionServiceImpl.java	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-subscriptions-ejb/src/main/java/org/jboss/snowdrop/samples/sportsclub/ejb/SubscriptionServiceImpl.java	2009-12-16 21:00:45 UTC (rev 97915)
@@ -4,11 +4,13 @@
 import javax.ejb.TransactionAttribute;
 import javax.interceptor.Interceptors;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
 import org.jboss.annotation.spring.Spring;
 import org.jboss.snowdrop.samples.sportsclub.domain.entity.Account;
+import org.jboss.snowdrop.samples.sportsclub.domain.entity.Balance;
 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.repository.AccountRepository;
@@ -67,6 +69,7 @@
       account.setMembership(membershipRepository.findById(membershipCode));
       account.setBillingType(billingType);
       account.setCreationDate(new Date());
+      account.resetBalance();
       accountRepository.save(account);
       return account;
    }

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-subscriptions-web/src/main/webapp/searchForm.xhtml
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-subscriptions-web/src/main/webapp/searchForm.xhtml	2009-12-16 19:11:40 UTC (rev 97914)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-subscriptions-web/src/main/webapp/searchForm.xhtml	2009-12-16 21:00:45 UTC (rev 97915)
@@ -116,6 +116,9 @@
                             <h:outputLabel value="Annual Fee"/>
                             <h:outputText value="#{accountSearch.currentAccount.membership.annualFee}"/>
 
+                            <h:outputLabel value="Outstanding Balance"/>
+                            <h:outputText value="#{accountSearch.currentAccount.balance.currentBalance}"/>
+
                             <a4j:commandButton id="closeAcctBtn" value="Close" action="#{accountSearch.closeAccount}" reRender="searchResults,accountData" rendered="#{!accountSearch.editing}"/>
                             <a4j:commandButton id="editAcctBtn" value="Edit" reRender="accountData" rendered="#{!accountSearch.editing}">
                                 <f:setPropertyActionListener value="#{true}" target="#{accountSearch.editing}"/>




More information about the jboss-cvs-commits mailing list