svn commit: r911085 - /ofbiz/trunk/framework/base/src/org/ofbiz/base/util/TimeDuration.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r911085 - /ofbiz/trunk/framework/base/src/org/ofbiz/base/util/TimeDuration.java

doogie-3
Author: doogie
Date: Wed Feb 17 17:21:39 2010
New Revision: 911085

URL: http://svn.apache.org/viewvc?rev=911085&view=rev
Log:
Remove makeNegative calls.

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=911085&r1=911084&r2=911085&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:21:39 2010
@@ -47,6 +47,9 @@
      * @param millis The number of milliseconds in this duration
      */
     public TimeDuration(int years, int months, int days, int hours, int minutes, int seconds, int millis) {
+        if (years < 0 || months < 0  || days < 0 || hours < 0 || minutes < 0 || seconds < 0 || millis < 0) {
+            isNegative = true;
+        }
         this.millis = millis;
         this.seconds = seconds;
         this.minutes = minutes;
@@ -54,9 +57,6 @@
         this.days = days;
         this.months = months;
         this.years = years;
-        if (years < 0 || months < 0  || days < 0 || hours < 0 || minutes < 0 || seconds < 0 || millis < 0) {
-            makeNegative();
-        }
     }
 
     /** Elapsed time constructor. The time duration will be computed from the
@@ -68,12 +68,13 @@
         // set up Calendar objects
         Calendar calStart;
         Calendar calEnd;
-        boolean isNegative = false;
+        int factor;
         if (cal1.before(cal2)) {
+            factor = 1;
             calStart = (Calendar) cal1.clone();
             calEnd = (Calendar) cal2.clone();
         } else {
-            isNegative = true;
+            factor = -1;
             calStart = (Calendar) cal2.clone();
             calEnd = (Calendar) cal1.clone();
         }
@@ -90,43 +91,41 @@
         if (deltaMillis == 0) {
             return;
         }
+        this.isNegative = factor == -1;
 
         // 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);
+        this.years = factor * 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);
+        this.months = factor * 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);
+        this.days = factor * 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);
+        this.hours = factor * 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);
+        this.minutes = factor * 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);
+        this.seconds = factor * advanceCalendar(calStart, calEnd, (int) units, Calendar.SECOND);
         deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(), targetMillis);
 
-        this.millis = (int) deltaMillis;
-        if (isNegative) {
-            makeNegative();
-        }
+        this.millis = factor * (int) deltaMillis;
     }
 
     private static long computeDeltaMillis(long start, long end) {
@@ -269,17 +268,6 @@
         return cal;
     }
 
-    protected void makeNegative() {
-        this.millis = Math.min(this.millis, -this.millis);
-        this.seconds = Math.min(this.seconds, -this.seconds);
-        this.minutes = Math.min(this.minutes, -this.minutes);
-        this.hours = Math.min(this.hours, -this.hours);
-        this.days = Math.min(this.days, -this.days);
-        this.months = Math.min(this.months, -this.months);
-        this.years = Math.min(this.years, -this.years);
-        this.isNegative = true;
-    }
-
     /** Returns a <code>TimeDuration</code> instance derived from a <code>long</code>
      * value. This method is intended to be used in tandem with the
      * <code>toLong</code> method. <p>The years and months portions of the