[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