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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jan 21 18:27:24 EST 2010


Author: marius.bogoevici
Date: 2010-01-21 18:27:24 -0500 (Thu, 21 Jan 2010)
New Revision: 99789

Added:
   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/utils/
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/utils/DateUtils.java
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/Invoice.java
   projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingServiceImpl.java
Log:
Add time interval to invoice

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-01-21 23:00:09 UTC (rev 99788)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Account.java	2010-01-21 23:27:24 UTC (rev 99789)
@@ -3,8 +3,13 @@
 import javax.persistence.*;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.util.Calendar;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+import org.jboss.snowdrop.samples.sportsclub.utils.DateUtils;
+
 /**
  * @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>
  */
@@ -31,8 +36,10 @@
    private boolean closed;
 
    private Date closeDate;
+   private static final TimeZone TIME_ZONE = TimeZone.getTimeZone("EST");
+   private static final int TWO_WEEKS = (14 * 24 * 3600 * 1000);
 
-   
+
    public Account()
    {
       this.balance = new Balance();
@@ -72,9 +79,47 @@
 
    public void setCreationDate(Date creationDate)
    {
-      this.creationDate = creationDate;
+      this.creationDate = DateUtils.normalizeDate(creationDate, TIME_ZONE);
    }
 
+   public TimeInterval getBillingPeriodFor(Date date)
+   {
+      Date normalizedDate = DateUtils.normalizeDate(date, TIME_ZONE);
+      Calendar calendar = new GregorianCalendar(TIME_ZONE);
+      calendar.setTime(normalizedDate);
+      TimeInterval timeInterval = new TimeInterval();
+      switch (billingType)
+      {
+         case MONTHLY:
+            calendar.set(Calendar.DAY_OF_MONTH, 1);
+            timeInterval.setStartDate(calendar.getTime());
+            calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
+            timeInterval.setEndDate(calendar.getTime());
+            break;
+         case WEEKLY:
+            calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
+            timeInterval.setStartDate(calendar.getTime());
+            calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+            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);
+            timeInterval.setStartDate(calendar.getTime());
+            calendar.add(Calendar.DAY_OF_MONTH, 13);
+            timeInterval.setEndDate(calendar.getTime());
+            break;
+         default:
+            throw new IllegalArgumentException("Invalid BillingType value for account:" + billingType);
+      }
+     return timeInterval;
+   }
+
    public Membership getMembership()
    {
       return membership;
@@ -102,7 +147,7 @@
 
    public void setCloseDate(Date closeDate)
    {
-      this.closeDate = closeDate;
+      this.closeDate = DateUtils.normalizeDate(closeDate, TIME_ZONE);
    }
 
    public BigDecimal getFeePerBillingPeriod()

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	2010-01-21 23:00:09 UTC (rev 99788)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/Invoice.java	2010-01-21 23:27:24 UTC (rev 99789)
@@ -19,8 +19,10 @@
    @ManyToOne
    private Account account;
 
-   private Date date;
+   private Date issueDate;
 
+   private TimeInterval billingPeriod;
+
    private BigDecimal amount;
 
    public long getId()
@@ -48,13 +50,24 @@
       this.amount = amount;
    }
 
-   public Date getDate()
+   public Date getIssueDate()
    {
-      return date;
+      return issueDate;
    }
 
-   public void setDate(Date date)
+   public void setIssueDate(Date issueDate)
    {
-      this.date = date;
+      this.issueDate = issueDate;
    }
+
+   public TimeInterval getBillingPeriod()
+   {
+      return billingPeriod;
+   }
+
+   public void setBillingPeriod(TimeInterval billingPeriod)
+   {
+      this.billingPeriod = billingPeriod;
+   }
 }
+

Added: 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	                        (rev 0)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/domain/entity/TimeInterval.java	2010-01-21 23:27:24 UTC (rev 99789)
@@ -0,0 +1,35 @@
+package org.jboss.snowdrop.samples.sportsclub.domain.entity;
+
+import javax.persistence.Embeddable;
+import java.util.Date;
+
+/**
+ * @author Marius Bogoevici
+ */
+ at Embeddable
+public class TimeInterval
+{
+   private Date startDate;
+
+   private Date endDate;
+
+   public Date getEndDate()
+   {
+      return endDate;
+   }
+
+   public void setEndDate(Date endDate)
+   {
+      this.endDate = endDate;
+   }
+
+   public Date getStartDate()
+   {
+      return startDate;
+   }
+
+   public void setStartDate(Date startDate)
+   {
+      this.startDate = startDate;
+   }
+}

Added: projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/utils/DateUtils.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/utils/DateUtils.java	                        (rev 0)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-domain/src/main/java/org/jboss/snowdrop/samples/sportsclub/utils/DateUtils.java	2010-01-21 23:27:24 UTC (rev 99789)
@@ -0,0 +1,23 @@
+package org.jboss.snowdrop.samples.sportsclub.utils;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
+
+/**
+ * @author Marius Bogoevici
+ */
+public class DateUtils
+{
+   public static Date normalizeDate(Date date, TimeZone timeZone)
+   {
+      Calendar calendar = new GregorianCalendar(timeZone);
+      calendar.setTime(date);
+      calendar.set(Calendar.AM_PM, Calendar.AM);
+      calendar.set(Calendar.HOUR, 0);
+      calendar.set(Calendar.MINUTE, 0);
+      calendar.set(Calendar.SECOND, 0);
+      return calendar.getTime();
+   }
+}

Modified: projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingServiceImpl.java
===================================================================
--- projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingServiceImpl.java	2010-01-21 23:00:09 UTC (rev 99788)
+++ projects/snowdrop/examples/trunk/sportsclub/sportsclub-invoicing-ejb/src/main/java/org/jboss/spring/samples/sportsclub/invoicing/services/BillingServiceImpl.java	2010-01-21 23:27:24 UTC (rev 99789)
@@ -16,7 +16,7 @@
 
 @Stateless
 @Interceptors(SpringLifecycleInterceptor.class)
- at LocalBinding(jndiBinding="sportsclub/BillingService") 
+ at LocalBinding(jndiBinding="sportsclub/BillingService")
 public class BillingServiceImpl implements BillingService
 {
    @Spring(bean = "invoiceRepository", jndiName = "SpringDao")
@@ -48,7 +48,9 @@
       Invoice invoice = new Invoice();
       invoice.setAccount(account);
       invoice.setAmount(account.getFeePerBillingPeriod());
-      invoice.setDate(new Date());
+      Date date = new Date();       
+      invoice.setIssueDate(date);
+      invoice.setBillingPeriod(account.getBillingPeriodFor(date));
       invoiceRepository.save(invoice);
       Balance balance = account.getBalance();
       balance.debit(invoice.getAmount());




More information about the jboss-cvs-commits mailing list