Author: doogie
Date: Wed Feb 17 17:18:31 2010
New Revision: 911080
URL: http://svn.apache.org/viewvc?rev=911080&view=rev
Log:
Inline set(Calendar, Calendar) into the constructor.
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/TimeDuration.java
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/TimeDuration.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/TimeDuration.java?rev=911080&r1=911079&r2=911080&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/TimeDuration.java
(original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/TimeDuration.java Wed
Feb 17 17:18:31 2010
@@ -65,7 +65,68 @@
* @param cal2
*/
public TimeDuration(Calendar cal1, Calendar cal2) {
- this.set(cal1, cal2);
+ // set up Calendar objects
+ Calendar calStart = null;
+ Calendar calEnd = null;
+ boolean isNegative = false;
+ if (cal1.before(cal2)) {
+ calStart = (Calendar) cal1.clone();
+ calEnd = (Calendar) cal2.clone();
+ } else {
+ isNegative = true;
+ calStart = (Calendar) cal2.clone();
+ calEnd = (Calendar) cal1.clone();
+ }
+
+ /* Strategy: Using millisecond arithmetic alone will produce
inaccurate results.
+ * Using a Calendar alone will take too long. So, we use millisecond
arithmetic
+ * to get near the correct result, then zero in on the correct result
using a
+ * Calendar.
+ */
+ long targetMillis = calEnd.getTimeInMillis();
+ long deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(),
targetMillis);
+
+ // shortcut for equal dates
+ if (deltaMillis == 0) {
+ return;
+ }
+
+ // compute elapsed years
+ long yearMillis = 86400000 * calStart.getMinimum(Calendar.DAY_OF_YEAR);
+ float units = deltaMillis / yearMillis;
+ this.years = advanceCalendar(calStart, calEnd, (int) units,
Calendar.YEAR);
+ deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(),
targetMillis);
+
+ // compute elapsed months
+ long monthMillis = 86400000 *
calStart.getMinimum(Calendar.DAY_OF_MONTH);
+ units = deltaMillis / monthMillis;
+ this.months = advanceCalendar(calStart, calEnd, (int) units,
Calendar.MONTH);
+ deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(),
targetMillis);
+
+ // compute elapsed days
+ units = deltaMillis / 86400000;
+ this.days = advanceCalendar(calStart, calEnd, (int) units,
Calendar.DAY_OF_MONTH);
+ deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(),
targetMillis);
+
+ // compute elapsed hours
+ units = deltaMillis / 3600000;
+ this.hours = advanceCalendar(calStart, calEnd, (int) units,
Calendar.HOUR);
+ deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(),
targetMillis);
+
+ // compute elapsed minutes
+ units = deltaMillis / 60000;
+ this.minutes = advanceCalendar(calStart, calEnd, (int) units,
Calendar.MINUTE);
+ deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(),
targetMillis);
+
+ // compute elapsed seconds
+ units = deltaMillis / 1000;
+ this.seconds = advanceCalendar(calStart, calEnd, (int) units,
Calendar.SECOND);
+ deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(),
targetMillis);
+
+ this.millis = (int) deltaMillis;
+ if (isNegative) {
+ makeNegative();
+ }
}
@Override
@@ -168,71 +229,6 @@
return cal;
}
- protected void set(Calendar cal1, Calendar cal2) {
- // set up Calendar objects
- Calendar calStart = null;
- Calendar calEnd = null;
- boolean isNegative = false;
- if (cal1.before(cal2)) {
- calStart = (Calendar) cal1.clone();
- calEnd = (Calendar) cal2.clone();
- } else {
- isNegative = true;
- calStart = (Calendar) cal2.clone();
- calEnd = (Calendar) cal1.clone();
- }
-
- /* Strategy: Using millisecond arithmetic alone will produce
inaccurate results.
- * Using a Calendar alone will take too long. So, we use millisecond
arithmetic
- * to get near the correct result, then zero in on the correct result
using a
- * Calendar.
- */
- long targetMillis = calEnd.getTimeInMillis();
- long deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(),
targetMillis);
-
- // shortcut for equal dates
- if (deltaMillis == 0) {
- return;
- }
-
- // compute elapsed years
- long yearMillis = 86400000 * calStart.getMinimum(Calendar.DAY_OF_YEAR);
- float units = deltaMillis / yearMillis;
- this.years = advanceCalendar(calStart, calEnd, (int) units,
Calendar.YEAR);
- deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(),
targetMillis);
-
- // compute elapsed months
- long monthMillis = 86400000 *
calStart.getMinimum(Calendar.DAY_OF_MONTH);
- units = deltaMillis / monthMillis;
- this.months = advanceCalendar(calStart, calEnd, (int) units,
Calendar.MONTH);
- deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(),
targetMillis);
-
- // compute elapsed days
- units = deltaMillis / 86400000;
- this.days = advanceCalendar(calStart, calEnd, (int) units,
Calendar.DAY_OF_MONTH);
- deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(),
targetMillis);
-
- // compute elapsed hours
- units = deltaMillis / 3600000;
- this.hours = advanceCalendar(calStart, calEnd, (int) units,
Calendar.HOUR);
- deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(),
targetMillis);
-
- // compute elapsed minutes
- units = deltaMillis / 60000;
- this.minutes = advanceCalendar(calStart, calEnd, (int) units,
Calendar.MINUTE);
- deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(),
targetMillis);
-
- // compute elapsed seconds
- units = deltaMillis / 1000;
- this.seconds = advanceCalendar(calStart, calEnd, (int) units,
Calendar.SECOND);
- deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(),
targetMillis);
-
- this.millis = (int) deltaMillis;
- if (isNegative) {
- makeNegative();
- }
- }
-
protected long computeDeltaMillis(long start, long end) {
if (start < 0) {
return end + (-start);