Author: fdesbois Date: 2010-01-07 16:36:51 +0100 (Thu, 07 Jan 2010) New Revision: 1731 Modified: trunk/src/main/java/org/nuiton/util/PeriodDates.java Log: Add method to set period extremities. Suppress internal Date attributes to use only Calendar attributes. Modified: trunk/src/main/java/org/nuiton/util/PeriodDates.java =================================================================== --- trunk/src/main/java/org/nuiton/util/PeriodDates.java 2010-01-07 03:31:13 UTC (rev 1730) +++ trunk/src/main/java/org/nuiton/util/PeriodDates.java 2010-01-07 15:36:51 UTC (rev 1731) @@ -46,11 +46,11 @@ private String pattern; - private Date fromDate; +// private Date fromDate; private Calendar fromCalendar; - private Date thruDate; +// private Date thruDate; private Calendar thruCalendar; @@ -58,20 +58,20 @@ } public PeriodDates(Date fromDate, Date thruDate) { - this.fromCalendar = new GregorianCalendar(); +// this.fromCalendar = new GregorianCalendar(); setFromDate(fromDate); - this.thruCalendar = new GregorianCalendar(); +// this.thruCalendar = new GregorianCalendar(); setThruDate(thruDate); this.pattern = DateUtils.DEFAULT_PATTERN; } public PeriodDates(Calendar fromCalendar, Calendar thruCalendar) { - this.fromDate = fromCalendar.getTime(); +// this.fromDate = fromCalendar.getTime(); this.fromCalendar = fromCalendar; - this.thruDate = thruCalendar.getTime(); +// this.thruDate = thruCalendar.getTime(); this.thruCalendar = thruCalendar; this.pattern = DateUtils.DEFAULT_PATTERN; @@ -106,8 +106,21 @@ this.pattern = pattern; } + /** + * Set first day of month for dateFrom and last day of month for dateThru + */ + public void setDayOfMonthExtremities() { + if (fromCalendar == null || thruCalendar == null) { + throw new NullPointerException("fromDate or thruDate can't be null to" + + " change dayOfMonth extremities"); + } + fromCalendar.set(Calendar.DAY_OF_MONTH, 1); + int maximum = thruCalendar.getActualMaximum(Calendar.DAY_OF_MONTH); + thruCalendar.set(Calendar.DAY_OF_MONTH, maximum); + } + public void setFromDate(Date fromDate) { - this.fromDate = fromDate; + //this.fromDate = fromDate; if (fromDate != null) { if (fromCalendar == null) { fromCalendar = new GregorianCalendar(); @@ -119,7 +132,7 @@ } public Date getFromDate() { - return this.fromDate; + return this.fromCalendar.getTime(); } public int getFromMonth() { @@ -127,7 +140,7 @@ } public void setThruDate(Date thruDate) { - this.thruDate = thruDate; + //this.thruDate = thruDate; if (thruDate != null) { if (thruCalendar == null) { thruCalendar = new GregorianCalendar(); @@ -139,7 +152,7 @@ } public Date getThruDate() { - return this.thruDate; + return this.thruCalendar.getTime(); } public List<Date> getMonths() { @@ -148,23 +161,6 @@ return months; } - /*int mFrom = fromCalendar.get(Calendar.MONTH); - int mThru = thruCalendar.get(Calendar.MONTH); - int yFrom = fromCalendar.get(Calendar.YEAR); - int yThru = thruCalendar.get(Calendar.YEAR); - - int nbYears = yThru - yFrom; - int monthRatio = nbYears * 12; - - int y = yFrom; - for(int i = mFrom; i <= mThru + monthRatio; i++) { - Calendar result = new GregorianCalendar(y, i%12, 1); - months.add(result.getTime()); - if (i != 0 && i%11 == 0) { - y++; - } - }*/ - Calendar current = (Calendar) fromCalendar.clone(); current.set(Calendar.DAY_OF_MONTH, 1); Calendar end = (Calendar) thruCalendar.clone(); @@ -206,9 +202,9 @@ @Override public String toString() { - String fromStr = DateUtils.formatDate(fromDate, pattern); - String thruStr = DateUtils.formatDate(thruDate, pattern); - return "[ " + fromDate + " (pattern: " + fromStr + ") -> " + thruDate + " (pattern: " + thruStr + ") ]"; + String fromStr = DateUtils.formatDate(getFromDate(), pattern); + String thruStr = DateUtils.formatDate(getThruDate(), pattern); + return "[ " + getFromDate() + " (pattern: " + fromStr + ") -> " + getThruDate() + " (pattern: " + thruStr + ") ]"; } }