You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2020/09/27 21:25:33 UTC
svn commit: r1882074 [2/6] - in
/xmlbeans/trunk/src/main/java/org/apache/xmlbeans: ./ impl/common/
impl/schema/ impl/values/
Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDateBuilder.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDateBuilder.java?rev=1882074&r1=1882073&r2=1882074&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDateBuilder.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDateBuilder.java Sun Sep 27 21:25:33 2020
@@ -17,6 +17,7 @@ package org.apache.xmlbeans;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.math.RoundingMode;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
@@ -36,10 +37,9 @@ import java.util.TimeZone;
* normalization is only possible if there is a time, or
* a time together with a full date.
*/
-public final class GDateBuilder implements GDateSpecification, java.io.Serializable
-{
+public final class GDateBuilder implements GDateSpecification, java.io.Serializable {
private static final long serialVersionUID = 1L;
-
+
private int _bits;
private int _CY;
private int _M;
@@ -55,46 +55,47 @@ public final class GDateBuilder implemen
/**
* Constructs a GDateBuilder specifying no date or time
*/
- public GDateBuilder()
- {
+ public GDateBuilder() {
}
/**
* Builds another GDateBuilder with the same value
* as this one.
*/
- public Object clone()
- {
+ public Object clone() {
return new GDateBuilder(this);
}
/**
* Builds a GDate from this GDateBuilder.
*/
- public GDate toGDate()
- {
+ public GDate toGDate() {
return new GDate(this);
}
/**
* Construts a GDateBuilder by copying another GDateSpecificaiton.
*/
- public GDateBuilder(GDateSpecification gdate)
- {
- if (gdate.hasTimeZone())
+ public GDateBuilder(GDateSpecification gdate) {
+ if (gdate.hasTimeZone()) {
setTimeZone(gdate.getTimeZoneSign(), gdate.getTimeZoneHour(), gdate.getTimeZoneMinute());
+ }
- if (gdate.hasTime())
+ if (gdate.hasTime()) {
setTime(gdate.getHour(), gdate.getMinute(), gdate.getSecond(), gdate.getFraction());
+ }
- if (gdate.hasDay())
+ if (gdate.hasDay()) {
setDay(gdate.getDay());
+ }
- if (gdate.hasMonth())
+ if (gdate.hasMonth()) {
setMonth(gdate.getMonth());
+ }
- if (gdate.hasYear())
+ if (gdate.hasYear()) {
setYear(gdate.getYear());
+ }
}
// Forms:
@@ -119,14 +120,12 @@ public final class GDateBuilder implemen
* union of the lexical spaces of all the schema
* date/time types (except for duration).
*/
- public GDateBuilder(CharSequence string)
- {
+ public GDateBuilder(CharSequence string) {
this(new GDate(string));
}
- public GDateBuilder(Calendar calendar)
- {
+ public GDateBuilder(Calendar calendar) {
this(new GDate(calendar));
}
@@ -138,28 +137,28 @@ public final class GDateBuilder implemen
* Note that by not specifying the timezone the GDateBuilder
* becomes partially unordered with respect to timesthat do have a
* specified timezone.
- *
- * @param year The year
- * @param month The month, from 1-12
- * @param day The day of month, from 1-31
- * @param hour The hour of day, from 0-23
- * @param minute The minute of hour, from 0-59
- * @param second The second of minute, from 0-59
- * @param fraction The fraction of second, 0.0 to 0.999... (may be null)
+ *
+ * @param year The year
+ * @param month The month, from 1-12
+ * @param day The day of month, from 1-31
+ * @param hour The hour of day, from 0-23
+ * @param minute The minute of hour, from 0-59
+ * @param second The second of minute, from 0-59
+ * @param fraction The fraction of second, 0.0 to 0.999... (may be null)
*/
public GDateBuilder(
- int year,
- int month,
- int day,
- int hour,
- int minute,
- int second,
- BigDecimal fraction)
- {
+ int year,
+ int month,
+ int day,
+ int hour,
+ int minute,
+ int second,
+ BigDecimal fraction) {
_bits = HAS_YEAR | HAS_MONTH | HAS_DAY | HAS_TIME;
- if (year == 0)
+ if (year == 0) {
throw new IllegalArgumentException();
+ }
_CY = (year > 0 ? year : year + 1);
_M = month;
@@ -169,8 +168,9 @@ public final class GDateBuilder implemen
_s = second;
_fs = fraction == null ? GDate._zero : fraction;
- if (!isValid())
+ if (!isValid()) {
throw new IllegalArgumentException();
+ }
}
/**
@@ -184,33 +184,33 @@ public final class GDateBuilder implemen
* If you wish to have a time or date that isn't in a specified timezone,
* then use the constructor that does not include the timezone arguments.
*
- * @param year the year
- * @param month the month, from 1-12
- * @param day the day of month, from 1-31
- * @param hour the hour of day, from 0-23
- * @param minute the minute of hour, from 0-59
- * @param second the second of minute, from 0-59
+ * @param year the year
+ * @param month the month, from 1-12
+ * @param day the day of month, from 1-31
+ * @param hour the hour of day, from 0-23
+ * @param minute the minute of hour, from 0-59
+ * @param second the second of minute, from 0-59
* @param fraction the fraction of second, 0.0 to 0.999... (may be null)
- * @param tzSign the timezone offset sign, either +1, 0, or -1
- * @param tzHour the timezone offset hour
- * @param tzMinute the timezone offset minute
+ * @param tzSign the timezone offset sign, either +1, 0, or -1
+ * @param tzHour the timezone offset hour
+ * @param tzMinute the timezone offset minute
*/
public GDateBuilder(
- int year,
- int month,
- int day,
- int hour,
- int minute,
- int second,
- BigDecimal fraction,
- int tzSign,
- int tzHour,
- int tzMinute)
- {
+ int year,
+ int month,
+ int day,
+ int hour,
+ int minute,
+ int second,
+ BigDecimal fraction,
+ int tzSign,
+ int tzHour,
+ int tzMinute) {
_bits = HAS_TIMEZONE | HAS_YEAR | HAS_MONTH | HAS_DAY | HAS_TIME;
- if (year == 0)
+ if (year == 0) {
throw new IllegalArgumentException();
+ }
_CY = (year > 0 ? year : year + 1);
_M = month;
@@ -223,8 +223,9 @@ public final class GDateBuilder implemen
_tzh = tzHour;
_tzm = tzMinute;
- if (!isValid())
+ if (!isValid()) {
throw new IllegalArgumentException();
+ }
}
/**
@@ -235,19 +236,17 @@ public final class GDateBuilder implemen
* For example, if eastern daylight time is in effect at the given
* date, the timezone on the east coast of the united states
* translates to GMT-05:00 (EST) + 1:00 (DT offset) == GMT-04:00.
- *
+ *
* @param date the date object to copy
*/
- public GDateBuilder(Date date)
- {
+ public GDateBuilder(Date date) {
setDate(date);
}
/**
* True if the instance is immutable.
*/
- public boolean isImmutable()
- {
+ public boolean isImmutable() {
return false;
}
@@ -256,159 +255,180 @@ public final class GDateBuilder implemen
* contained by this GDate. The five flags are
* HAS_TIMEZONE, HAS_YEAR, HAS_MONTH, HAS_DAY, and HAS_TIME.
*/
- public int getFlags()
- {
+ public int getFlags() {
return _bits;
}
/**
* True if this date/time specification specifies a timezone.
*/
- public final boolean hasTimeZone()
- { return ((_bits & HAS_TIMEZONE) != 0); }
+ public final boolean hasTimeZone() {
+ return ((_bits & HAS_TIMEZONE) != 0);
+ }
/**
* True if this date/time specification specifies a year.
*/
- public final boolean hasYear()
- { return ((_bits & HAS_YEAR) != 0); }
+ public final boolean hasYear() {
+ return ((_bits & HAS_YEAR) != 0);
+ }
/**
* True if this date/time specification specifies a month-of-year.
*/
- public final boolean hasMonth()
- { return ((_bits & HAS_MONTH) != 0); }
+ public final boolean hasMonth() {
+ return ((_bits & HAS_MONTH) != 0);
+ }
/**
* True if this date/time specification specifies a day-of-month.
*/
- public final boolean hasDay()
- { return ((_bits & HAS_DAY) != 0); }
+ public final boolean hasDay() {
+ return ((_bits & HAS_DAY) != 0);
+ }
/**
* True if this date/time specification specifies a time-of-day.
*/
- public final boolean hasTime()
- { return ((_bits & HAS_TIME) != 0); }
+ public final boolean hasTime() {
+ return ((_bits & HAS_TIME) != 0);
+ }
/**
* True if this date/time specification specifies a full date (year, month, day)
*/
- public final boolean hasDate()
- { return ((_bits & (HAS_DAY | HAS_MONTH | HAS_YEAR)) == (HAS_DAY | HAS_MONTH | HAS_YEAR)); }
+ public final boolean hasDate() {
+ return ((_bits & (HAS_DAY | HAS_MONTH | HAS_YEAR)) == (HAS_DAY | HAS_MONTH | HAS_YEAR));
+ }
/**
* Gets the year. Should be a four-digit year specification.
*/
- public final int getYear()
- { return (_CY > 0 ? _CY : _CY - 1); }
+ public final int getYear() {
+ return (_CY > 0 ? _CY : _CY - 1);
+ }
/**
* Gets the month-of-year. January is 1.
*/
- public final int getMonth()
- { return _M; }
+ public final int getMonth() {
+ return _M;
+ }
/**
* Gets the day-of-month. The first day of each month is 1.
*/
- public final int getDay()
- { return _D; }
+ public final int getDay() {
+ return _D;
+ }
/**
* Gets the hour-of-day. Midnight is 0, and 11PM is 23.
*/
- public final int getHour()
- { return _h; }
+ public final int getHour() {
+ return _h;
+ }
/**
* Gets the minute-of-hour. Range from 0 to 59.
*/
- public final int getMinute()
- { return _m; }
+ public final int getMinute() {
+ return _m;
+ }
/**
* Gets the second-of-minute. Range from 0 to 59.
*/
- public final int getSecond()
- { return _s; }
+ public final int getSecond() {
+ return _s;
+ }
/**
* Gets the fraction-of-second. Range from 0 (inclusive) to 1 (exclusive).
*/
- public final BigDecimal getFraction()
- { return _fs; }
+ public final BigDecimal getFraction() {
+ return _fs;
+ }
/**
* Gets the rounded millisecond value. Range from 0 to 999
*/
- public final int getMillisecond()
- {
- if (_fs == null || _fs == GDate._zero)
+ public final int getMillisecond() {
+ if (_fs == null || GDate._zero.equals(_fs)) {
return 0;
- return _fs.setScale(3, BigDecimal.ROUND_HALF_UP).unscaledValue().intValue();
+ }
+ return _fs.setScale(3, RoundingMode.HALF_UP).unscaledValue().intValue();
}
/**
* Gets the time zone sign. For time zones east of GMT,
* this is positive; for time zones west, this is negative.
*/
- public final int getTimeZoneSign()
- { return _tzsign; }
+ public final int getTimeZoneSign() {
+ return _tzsign;
+ }
/**
* Gets the time zone hour.
* This is always positive: for the sign, look at
* getTimeZoneSign().
*/
- public final int getTimeZoneHour()
- { return _tzh; }
+ public final int getTimeZoneHour() {
+ return _tzh;
+ }
/**
* Gets the time zone minutes.
* This is always positive: for the sign, look at
* getTimeZoneSign().
*/
- public final int getTimeZoneMinute()
- { return _tzm; }
+ public final int getTimeZoneMinute() {
+ return _tzm;
+ }
-
/**
* Sets the year. Should be a four-digit year specification.
+ *
* @param year the year
*/
- public void setYear(int year)
- {
- if (year < GDate.MIN_YEAR || year > GDate.MAX_YEAR)
+ public void setYear(int year) {
+ if (year < GDate.MIN_YEAR || year > GDate.MAX_YEAR) {
throw new IllegalArgumentException("year out of range");
- if (year == 0)
+ }
+ if (year == 0) {
throw new IllegalArgumentException("year cannot be 0");
- _bits |= HAS_YEAR; _CY = (year > 0 ? year : year + 1);
+ }
+ _bits |= HAS_YEAR;
+ _CY = (year > 0 ? year : year + 1);
}
/**
* Sets the month-of-year. January is 1.
+ *
* @param month the month, from 1-12
*/
- public void setMonth(int month)
- {
- if (month < 1 || month > 12)
+ public void setMonth(int month) {
+ if (month < 1 || month > 12) {
throw new IllegalArgumentException("month out of range");
- _bits |= HAS_MONTH; _M = month;
+ }
+ _bits |= HAS_MONTH;
+ _M = month;
}
/**
* Sets the day-of-month. The first day of each month is 1.
+ *
* @param day the day of month, from 1-31
*/
- public void setDay(int day)
- {
- if (day < 1 || day > 31)
+ public void setDay(int day) {
+ if (day < 1 || day > 31) {
throw new IllegalArgumentException("day out of range");
- _bits |= HAS_DAY; _D = day;
+ }
+ _bits |= HAS_DAY;
+ _D = day;
}
/**
@@ -416,23 +436,28 @@ public final class GDateBuilder implemen
* minutes and seconds range from 0 to 59; and fractional
* seconds range from 0 (inclusive) to 1 (exclusive).
* The fraction can be null and is assumed to be zero.
- * @param hour the hour of day, from 0-23 or 24 only if min, sec and fraction are 0
- * @param minute the minute of hour, from 0-59
- * @param second the second of minute, from 0-59
+ *
+ * @param hour the hour of day, from 0-23 or 24 only if min, sec and fraction are 0
+ * @param minute the minute of hour, from 0-59
+ * @param second the second of minute, from 0-59
* @param fraction the fraction of second, 0.0 to 0.999... (may be null)
*/
- public void setTime(int hour, int minute, int second, BigDecimal fraction)
- {
- if (hour < 0 || hour > 24 )
+ public void setTime(int hour, int minute, int second, BigDecimal fraction) {
+ if (hour < 0 || hour > 24) {
throw new IllegalArgumentException("hour out of range");
- if (minute < 0 || minute > 59)
+ }
+ if (minute < 0 || minute > 59) {
throw new IllegalArgumentException("minute out of range");
- if (second < 0 || second > 59)
+ }
+ if (second < 0 || second > 59) {
throw new IllegalArgumentException("second out of range");
- if (fraction != null && (fraction.signum() < 0 || fraction.compareTo(GDate._one) > 1))
+ }
+ if (fraction != null && (fraction.signum() < 0 || GDate._one.compareTo(fraction) <= 0)) {
throw new IllegalArgumentException("fraction out of range");
- if ( hour == 24 && (minute!=0 || second!=0 || (fraction!=null && (GDate._zero.compareTo(fraction)!=0)) ))
+ }
+ if (hour == 24 && (minute != 0 || second != 0 || (fraction != null && (GDate._zero.compareTo(fraction) != 0)))) {
throw new IllegalArgumentException("when hour is 24, min sec and fracton must be 0");
+ }
_bits |= HAS_TIME;
_h = hour;
@@ -450,41 +475,41 @@ public final class GDateBuilder implemen
* Timezones must be between -14:00 and +14:00. Sign
* must be -1 or 1 (or 0 for UTC only), and the offset hours
* and minute arguments must be nonnegative.
- *
- * @param tzSign the timezone offset sign, either +1, 0, or -1
- * @param tzHour the timezone offset hour
- * @param tzMinute the timezone offset minute
+ *
+ * @param tzSign the timezone offset sign, either +1, 0, or -1
+ * @param tzHour the timezone offset hour
+ * @param tzMinute the timezone offset minute
*/
- public void setTimeZone(int tzSign, int tzHour, int tzMinute)
- {
+ public void setTimeZone(int tzSign, int tzHour, int tzMinute) {
if (!((tzSign == 0 && tzHour == 0 && tzMinute == 0) ||
((tzSign == -1 || tzSign == 1) &&
(tzHour >= 0 && tzMinute >= 0) &&
- (tzHour == 14 && tzMinute == 0 || tzHour < 14 && tzMinute < 60))))
+ (tzHour == 14 && tzMinute == 0 || tzHour < 14 && tzMinute < 60)))) {
throw new IllegalArgumentException("time zone out of range (-14:00 to +14:00). (" +
- (tzSign<0 ? "-" : "+") + tzHour + ":" + tzMinute + ")");
+ (tzSign < 0 ? "-" : "+") + tzHour + ":" + tzMinute + ")");
+ }
_bits |= HAS_TIMEZONE;
_tzsign = tzSign;
_tzh = tzHour;
_tzm = tzMinute;
}
-
+
/**
* Sets the time zone based on a number of offset minutes rather
* than sign/hour/minute; for example, setTimeZone(-60) is the
* same as setTimeZone(-1, 1, 0).
*/
- public void setTimeZone(int tzTotalMinutes)
- {
- if (tzTotalMinutes < -14 * 60 || tzTotalMinutes > 14 * 60)
+ public void setTimeZone(int tzTotalMinutes) {
+ if (tzTotalMinutes < -14 * 60 || tzTotalMinutes > 14 * 60) {
throw new IllegalArgumentException("time zone out of range (-840 to 840 minutes). (" + tzTotalMinutes + ")");
-
- int tzSign = tzTotalMinutes < 0 ? -1 : tzTotalMinutes > 0 ? 1 : 0;
+ }
+
+ int tzSign = Integer.compare(tzTotalMinutes, 0);
tzTotalMinutes *= tzSign;
int tzH = tzTotalMinutes / 60;
int tzM = tzTotalMinutes - tzH * 60;
-
+
setTimeZone(tzSign, tzH, tzM);
}
@@ -492,30 +517,35 @@ public final class GDateBuilder implemen
* Clears the year. After clearing, hasYear returns false and the
* value of getYear is undefined.
*/
- public void clearYear()
- { _bits &= ~HAS_YEAR; _CY = 0; }
+ public void clearYear() {
+ _bits &= ~HAS_YEAR;
+ _CY = 0;
+ }
/**
* Clears the month-of-year. After clearing. hasMonth returns false and
* the value of getMonth is undefined.
*/
- public void clearMonth()
- { _bits &= ~HAS_MONTH; _M = 0; }
+ public void clearMonth() {
+ _bits &= ~HAS_MONTH;
+ _M = 0;
+ }
/**
* Clears the day-of-month. After clearing. hasDay returns false and
* the value of getDay is undefined.
*/
- public void clearDay()
- { _bits &= ~HAS_DAY; _D = 0; }
+ public void clearDay() {
+ _bits &= ~HAS_DAY;
+ _D = 0;
+ }
/**
* Clears the time-of-day.
* After clearing. hasTime returns false and
* the value of getTime is undefined.
*/
- public void clearTime()
- {
+ public void clearTime() {
_bits &= ~HAS_TIME;
_h = 0;
_m = 0;
@@ -528,8 +558,7 @@ public final class GDateBuilder implemen
* the value of getTimeZoneHour and getTimeZoneMinute are undefined.
* Does not change the other time fields.
*/
- public void clearTimeZone()
- {
+ public void clearTimeZone() {
_bits &= ~HAS_TIMEZONE;
_tzsign = 0;
_tzh = 0;
@@ -541,48 +570,52 @@ public final class GDateBuilder implemen
* can be invalid, for example, if you change the month to February
* and the day-of-month is 31.
*/
- public boolean isValid()
- {
+ public boolean isValid() {
return isValidGDate(this);
}
- /* package */ static final boolean isValidGDate(GDateSpecification date)
- {
- if (date.hasYear() && date.getYear() == 0)
+ /* package */
+ static boolean isValidGDate(GDateSpecification date) {
+ if (date.hasYear() && date.getYear() == 0) {
return false;
+ }
- if (date.hasMonth() && (date.getMonth() < 1 || date.getMonth() > 12))
+ if (date.hasMonth() && (date.getMonth() < 1 || date.getMonth() > 12)) {
return false;
+ }
- if (date.hasDay() &&
- (date.getDay() < 1 || date.getDay() > 31 ||
- date.getDay() > 28 &&
- date.hasMonth() &&
- (date.hasYear() ?
- date.getDay() > _maxDayInMonthFor((date.getYear() > 0 ?
- date.getYear() :
- date.getYear() + 1),
- date.getMonth()) :
- date.getDay() > _maxDayInMonth(date.getMonth()))))
+ if (date.hasDay() &&
+ (date.getDay() < 1 || date.getDay() > 31 ||
+ date.getDay() > 28 &&
+ date.hasMonth() &&
+ (date.hasYear() ?
+ date.getDay() > _maxDayInMonthFor((date.getYear() > 0 ?
+ date.getYear() :
+ date.getYear() + 1),
+ date.getMonth()) :
+ date.getDay() > _maxDayInMonth(date.getMonth())))) {
return false;
+ }
if (date.hasTime() && ((date.getHour() < 0 || date.getHour() > 23 ||
- date.getMinute() < 0 || date.getMinute() > 59 ||
- date.getSecond() < 0 || date.getSecond() > 59 ||
- date.getFraction().signum() < 0 || date.getFraction().compareTo(GDate._one) >= 0) ) &&
+ date.getMinute() < 0 || date.getMinute() > 59 ||
+ date.getSecond() < 0 || date.getSecond() > 59 ||
+ date.getFraction().signum() < 0 || date.getFraction().compareTo(GDate._one) >= 0)) &&
// check for 24:00:00 valid format
!(date.getHour() == 24 && date.getMinute() == 0 && date.getSecond() == 0 &&
- date.getFraction().compareTo(GDate._zero) == 0 ) )
+ date.getFraction().compareTo(GDate._zero) == 0)) {
return false;
+ }
if (date.hasTimeZone() &&
(!((date.getTimeZoneSign() == 0 && date.getTimeZoneHour() == 0 && date.getTimeZoneMinute() == 0) ||
- ((date.getTimeZoneSign() == -1 || date.getTimeZoneSign() == +1) &&
+ ((date.getTimeZoneSign() == -1 || date.getTimeZoneSign() == +1) &&
// NB: allow +00:00 and -00:00
// (date.getTimeZoneHour() == 0 && date.getTimeZoneMinute() > 0 || date.getTimeZoneHour() > 0 && date.getTimeZoneMinute() >= 0) &&
- (date.getTimeZoneHour() >= 0 && date.getTimeZoneMinute() >= 0) &&
- (date.getTimeZoneHour() == 14 && date.getTimeZoneMinute() == 0 || date.getTimeZoneHour() < 14 && date.getTimeZoneMinute() < 60)))))
+ (date.getTimeZoneHour() >= 0 && date.getTimeZoneMinute() >= 0) &&
+ (date.getTimeZoneHour() == 14 && date.getTimeZoneMinute() == 0 || date.getTimeZoneHour() < 14 && date.getTimeZoneMinute() < 60))))) {
return false;
+ }
// everyting looks kosher
return true;
@@ -599,76 +632,71 @@ public final class GDateBuilder implemen
* If a time or time and date is specified, this method normalizes the timezone
* to UTC.
*/
- public void normalize()
- {
+ public void normalize() {
// DateTime or Time, with TimeZone: normalize to UTC.
// In the process all the fields will be normalized.
if (hasDay() == hasMonth() && hasDay() == hasYear() &&
- hasTimeZone() && hasTime() )
- {
+ hasTimeZone() && hasTime()) {
normalizeToTimeZone(0, 0, 0);
- }
- else
- {
+ } else {
// No timezone, or incomplete date.
_normalizeTimeAndDate();
}
// remove trailing zeros from fractional seconds
- if (hasTime() && _fs != null && _fs.scale() > 0)
- {
- if (_fs.signum() == 0)
+ if (hasTime() && _fs != null && _fs.scale() > 0) {
+ if (_fs.signum() == 0) {
_fs = GDate._zero;
- else
- {
+ } else {
BigInteger bi = _fs.unscaledValue();
String str = bi.toString();
int lastzero;
- for (lastzero = str.length(); lastzero > 0; lastzero -= 1)
- if (str.charAt(lastzero - 1) != '0')
+ for (lastzero = str.length(); lastzero > 0; lastzero -= 1) {
+ if (str.charAt(lastzero - 1) != '0') {
break;
- if (lastzero < str.length())
- _fs = _fs.setScale(_fs.scale() - str.length() + lastzero);
+ }
+ }
+ if (lastzero < str.length()) {
+ _fs = _fs.setScale(_fs.scale() - str.length() + lastzero, RoundingMode.UNNECESSARY);
+ }
}
}
}
- /**
+ /**
* Normalizes the instance when hour is 24. If day is present, hour 24 is equivalent to hour 00 next day.
*/
- void normalize24h()
- {
- if ( !hasTime() || getHour()!=24 )
+ void normalize24h() {
+ if (!hasTime() || getHour() != 24) {
return;
+ }
_normalizeTimeAndDate();
}
- private void _normalizeTimeAndDate()
- {
+ private void _normalizeTimeAndDate() {
long carry = 0;
- if (hasTime())
+ if (hasTime()) {
carry = _normalizeTime();
+ }
- if (hasDay())
+ if (hasDay()) {
_D += carry;
+ }
- if (hasDate())
- {
+ if (hasDate()) {
_normalizeDate();
- }
- else if (hasMonth())
- {
+ } else if (hasMonth()) {
// with incomplete dates, just months can be normalized:
// days stay denormalized.
- if (_M < 1 || _M > 12)
- {
+ if (_M < 1 || _M > 12) {
int temp = _M;
_M = _modulo(temp, 1, 13);
- if (hasYear())
- _CY = _CY + (int)_fQuotient(temp, 1, 13);
+ if (hasYear()) {
+ _CY = _CY + (int) _fQuotient(temp, 1, 13);
+ }
}
}
}
@@ -680,24 +708,26 @@ public final class GDateBuilder implemen
* <p>
* It is an error to operate on instances without a time or timezone, or
* with a partially specified date.
- *
- * @param tzSign the timezone offset sign, either +1, 0, or -1
- * @param tzHour the timezone offset hour
- * @param tzMinute the timezone offset minute
+ *
+ * @param tzSign the timezone offset sign, either +1, 0, or -1
+ * @param tzHour the timezone offset hour
+ * @param tzMinute the timezone offset minute
*/
- public void normalizeToTimeZone(int tzSign, int tzHour, int tzMinute)
- {
+ public void normalizeToTimeZone(int tzSign, int tzHour, int tzMinute) {
if (!((tzSign == 0 && tzHour == 0 && tzMinute == 0) ||
((tzSign == -1 || tzSign == 1) &&
(tzHour >= 0 && tzMinute >= 0) &&
- (tzHour == 14 && tzMinute == 0 || tzHour < 14 && tzMinute < 60))))
+ (tzHour == 14 && tzMinute == 0 || tzHour < 14 && tzMinute < 60)))) {
throw new IllegalArgumentException("time zone must be between -14:00 and +14:00");
+ }
- if (!hasTimeZone() || !hasTime())
+ if (!hasTimeZone() || !hasTime()) {
throw new IllegalStateException("cannot normalize time zone without both time and timezone");
+ }
- if (!(hasDay() == hasMonth() && hasDay() == hasYear()))
+ if (!(hasDay() == hasMonth() && hasDay() == hasYear())) {
throw new IllegalStateException("cannot do date math without a complete date");
+ }
int hshift = tzSign * tzHour - _tzsign * _tzh;
int mshift = tzSign * tzMinute - _tzsign * _tzm;
@@ -713,40 +743,38 @@ public final class GDateBuilder implemen
* than sign/hour/minute; for example, normalizeToTimeZone(-60) is the
* same as normalizeToTimeZone(-1, 1, 0).
*/
- public void normalizeToTimeZone(int tzTotalMinutes)
- {
- if (tzTotalMinutes < -14 * 60 || tzTotalMinutes > 14 * 60)
+ public void normalizeToTimeZone(int tzTotalMinutes) {
+ if (tzTotalMinutes < -14 * 60 || tzTotalMinutes > 14 * 60) {
throw new IllegalArgumentException("time zone out of range (-840 to 840 minutes). (" + tzTotalMinutes + ")");
-
- int tzSign = tzTotalMinutes < 0 ? -1 : tzTotalMinutes > 0 ? 1 : 0;
+ }
+
+ int tzSign = Integer.compare(tzTotalMinutes, 0);
tzTotalMinutes *= tzSign;
int tzH = tzTotalMinutes / 60;
int tzM = tzTotalMinutes - tzH * 60;
-
+
normalizeToTimeZone(tzSign, tzH, tzM);
}
/**
* Adds a given duration to the date/time.
- *
+ *
* @param duration the duration to add
*/
- public void addGDuration(GDurationSpecification duration)
- {
+ public void addGDuration(GDurationSpecification duration) {
addDuration(duration.getSign(), duration.getYear(), duration.getMonth(), duration.getDay(),
- duration.getHour(), duration.getMinute(), duration.getSecond(), duration.getFraction());
+ duration.getHour(), duration.getMinute(), duration.getSecond(), duration.getFraction());
}
/**
* Subtracts a given duration from the date/time.
- *
+ *
* @param duration the duration to subtract
*/
- public void subtractGDuration(GDurationSpecification duration)
- {
+ public void subtractGDuration(GDurationSpecification duration) {
addDuration(-duration.getSign(), duration.getYear(), duration.getMonth(), duration.getDay(),
- duration.getHour(), duration.getMinute(), duration.getSecond(), duration.getFraction());
+ duration.getHour(), duration.getMinute(), duration.getSecond(), duration.getFraction());
}
@@ -754,14 +782,12 @@ public final class GDateBuilder implemen
* Normalizes the date by carrying over to the year any months outside 1..12
* and carrying over to the month any days outside 1..(days-in-month).
*/
- private void _normalizeDate()
- {
- if (_M < 1 || _M > 12 || _D < 1 || _D > _maxDayInMonthFor(_CY, _M))
- {
+ private void _normalizeDate() {
+ if (_M < 1 || _M > 12 || _D < 1 || _D > _maxDayInMonthFor(_CY, _M)) {
// fix months first
int temp = _M;
_M = _modulo(temp, 1, 13);
- _CY = _CY + (int)_fQuotient(temp, 1, 13);
+ _CY = _CY + (int) _fQuotient(temp, 1, 13);
// then pull days out
int extradays = _D - 1;
@@ -777,21 +803,18 @@ public final class GDateBuilder implemen
* and hours 0..24. Returns the number of days to carry over from normalizing
* away more than 24 hours.
*/
- private long _normalizeTime()
- {
+ private long _normalizeTime() {
long carry = 0;
long temp;
// fractions
- if (_fs != null && (_fs.signum() < 0 || _fs.compareTo(GDate._one) >= 0))
- {
- BigDecimal bdcarry = _fs.setScale(0, BigDecimal.ROUND_FLOOR);
+ if (_fs != null && (_fs.signum() < 0 || _fs.compareTo(GDate._one) >= 0)) {
+ BigDecimal bdcarry = _fs.setScale(0, RoundingMode.FLOOR);
_fs = _fs.subtract(bdcarry);
carry = bdcarry.longValue();
}
- if (carry != 0 || _s < 0 || _s > 59 || _m < 0 || _m > 50 || _h < 0 || _h > 23)
- {
+ if (carry != 0 || _s < 0 || _s > 59 || _m < 0 || _m > 50 || _h < 0 || _h > 23) {
// seconds
temp = _s + carry;
carry = _fQuotient(temp, 60);
@@ -813,61 +836,61 @@ public final class GDateBuilder implemen
/**
* Adds a given duration to the date/time.
- *
- * @param sign +1 to add, -1 to subtract
- * @param year the number of years to add
- * @param month the number of months to add
- * @param day the number of days to add
- * @param hour the number of hours to add
- * @param minute the number of minutes to add
- * @param second the number of seconds to add
+ *
+ * @param sign +1 to add, -1 to subtract
+ * @param year the number of years to add
+ * @param month the number of months to add
+ * @param day the number of days to add
+ * @param hour the number of hours to add
+ * @param minute the number of minutes to add
+ * @param second the number of seconds to add
* @param fraction the number of fractional seconds to add (may be null)
*/
public void addDuration(int sign, int year, int month, int day,
- int hour, int minute, int second, BigDecimal fraction)
- {
+ int hour, int minute, int second, BigDecimal fraction) {
boolean timemath = hour != 0 || minute != 0 || second != 0 || fraction != null && fraction.signum() != 0;
- if (timemath && !hasTime())
+ if (timemath && !hasTime()) {
throw new IllegalStateException("cannot do time math without a complete time");
+ }
boolean datemath = hasDay() && (day != 0 || timemath);
- if (datemath && !hasDate())
+ if (datemath && !hasDate()) {
throw new IllegalStateException("cannot do date math without a complete date");
+ }
int temp;
// months + years are easy
- if (month != 0 || year != 0)
- {
+ if (month != 0 || year != 0) {
// Prepare the _D to be pegged before changing month
- if (hasDay())
+ if (hasDay()) {
_normalizeDate();
+ }
// Add months and years
temp = _M + sign * month;
_M = _modulo(temp, 1, 13);
- _CY = _CY + sign * year + (int)_fQuotient(temp, 1, 13);
+ _CY = _CY + sign * year + (int) _fQuotient(temp, 1, 13);
// In new month, day may need to be pegged before proceeding
- if (hasDay())
- {
- assert(_D >= 1);
+ if (hasDay()) {
+ assert (_D >= 1);
temp = _maxDayInMonthFor(_CY, _M);
- if (_D > temp)
+ if (_D > temp) {
_D = temp;
+ }
}
}
long carry = 0;
- if (timemath)
- {
+ if (timemath) {
// fractions
- if (fraction != null && fraction.signum() != 0)
- {
- if (_fs.signum() == 0 && sign == 1)
+ if (fraction != null && fraction.signum() != 0) {
+ if (_fs.signum() == 0 && sign == 1) {
_fs = fraction;
- else
+ } else {
_fs = (sign == 1) ? _fs.add(fraction) : _fs.subtract(fraction);
+ }
}
// seconds, minutes, hours
@@ -879,8 +902,7 @@ public final class GDateBuilder implemen
carry = _normalizeTime();
}
- if (datemath)
- {
+ if (datemath) {
// days: may require renormalization
_D += sign * day + carry;
_normalizeDate();
@@ -891,13 +913,14 @@ public final class GDateBuilder implemen
* Given {year,month} computes maximum
* number of days for given month
*/
- private static int _maxDayInMonthFor(int year, int month)
- {
- if (month == 4 || month == 6 || month == 9 || month == 11)
+ private static int _maxDayInMonthFor(int year, int month) {
+ if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
+ }
- if (month == 2)
+ if (month == 2) {
return (_isLeapYear(year) ? 29 : 28);
+ }
return 31;
}
@@ -906,13 +929,14 @@ public final class GDateBuilder implemen
* Given {year,month} computes maximum
* number of days for given month
*/
- private static int _maxDayInMonth(int month)
- {
- if (month == 4 || month == 6 || month == 9 || month == 11)
+ private static int _maxDayInMonth(int month) {
+ if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
+ }
- if (month == 2)
+ if (month == 2) {
return 29;
+ }
return 31;
}
@@ -922,8 +946,7 @@ public final class GDateBuilder implemen
* The Julian date (JD) is a continuous count of days from
* 1 January 4713 BC.
*/
- public final int getJulianDate()
- {
+ public final int getJulianDate() {
return julianDateForGDate(this);
}
@@ -932,13 +955,13 @@ public final class GDateBuilder implemen
* Sets the Gregorian date based on the given Julian date.
* The Julian date (JD) is a continuous count of days from
* 1 January 4713 BC.
- *
+ *
* @param julianday the julian day number
*/
- public void setJulianDate(int julianday)
- {
- if (julianday < 0)
+ public void setJulianDate(int julianday) {
+ if (julianday < 0) {
throw new IllegalArgumentException("date before year -4713");
+ }
int temp;
int qepoc;
@@ -968,17 +991,15 @@ public final class GDateBuilder implemen
* <p>
* If you wish to normalize the timezone, e.g., to UTC, follow this with
* a call to normalizeToTimeZone.
- *
+ *
* @param date the Date object to copy
*/
- public void setDate(Date date)
- {
+ public void setDate(Date date) {
// Default timezone
TimeZone dtz = TimeZone.getDefault();
int offset = dtz.getOffset(date.getTime());
int offsetsign = 1;
- if (offset < 0)
- {
+ if (offset < 0) {
offsetsign = -1;
offset = -offset;
}
@@ -987,7 +1008,7 @@ public final class GDateBuilder implemen
offsetmin = offsetmin - offsethr * 60;
setTimeZone(offsetsign, offsethr, offsetmin);
-
+
// paranoia: tz.getOffset can return fractions of minutes, but we must round
int roundedoffset = offsetsign * (offsethr * 60 + offsetmin) * 60 * 1000;
@@ -1003,21 +1024,21 @@ public final class GDateBuilder implemen
// Add a duration representing the number of milliseconds
addGDuration(new GDuration(1, 0, 0, 0, 0, 0, 0,
- BigDecimal.valueOf(date.getTime() + roundedoffset, 3)));
+ BigDecimal.valueOf(date.getTime() + roundedoffset, 3)));
// special case: ss.000 -> ss
- if (_fs.signum() == 0)
+ if (_fs.signum() == 0) {
_fs = GDate._zero;
+ }
}
-
+
/**
* Copies a GDateSpecification, completely replacing the current
* information in this GDateBuilder.
- *
+ *
* @param gdate the GDateSpecification to copy
- */
- public void setGDate(GDateSpecification gdate)
- {
+ */
+ public void setGDate(GDateSpecification gdate) {
_bits = gdate.getFlags() & (HAS_TIMEZONE | HAS_YEAR | HAS_MONTH | HAS_DAY | HAS_TIME);
int year = gdate.getYear();
_CY = (year > 0 ? year : year + 1);
@@ -1046,8 +1067,7 @@ public final class GDateBuilder implemen
* This means that if it is important to understand which date fields
* are set, you must call isSet() first before get().
*/
- public XmlCalendar getCalendar()
- {
+ public XmlCalendar getCalendar() {
return new XmlCalendar(this);
}
@@ -1055,32 +1075,33 @@ public final class GDateBuilder implemen
* Retrieves the value of the current time as a java.util.Date
* instance.
*/
- public Date getDate()
- {
+ public Date getDate() {
return dateForGDate(this);
}
- /* package */ static int julianDateForGDate(GDateSpecification date)
- {
- if (!date.hasDate())
+ /* package */
+ static int julianDateForGDate(GDateSpecification date) {
+ if (!date.hasDate()) {
throw new IllegalStateException("cannot do date math without a complete date");
+ }
// from http://aa.usno.navy.mil/faq/docs/JD_Formula.html
int day = date.getDay();
int month = date.getMonth();
int year = date.getYear();
year = (year > 0 ? year : year + 1);
- int result = day-32075+1461*(year+4800+(month-14)/12)/4+
- 367*(month-2-(month-14)/12*12)/12-3*((year+4900+(month-14)/12)/100)/4;
+ int result = day - 32075 + 1461 * (year + 4800 + (month - 14) / 12) / 4 +
+ 367 * (month - 2 - (month - 14) / 12 * 12) / 12 - 3 * ((year + 4900 + (month - 14) / 12) / 100) / 4;
- if (result < 0)
+ if (result < 0) {
throw new IllegalStateException("date too far in the past (year allowed to -4713)");
+ }
return result;
}
- /* package */ static Date dateForGDate(GDateSpecification date)
- {
+ /* package */
+ static Date dateForGDate(GDateSpecification date) {
long jDate = julianDateForGDate(date);
long to1970Date = jDate - 2440588;
long to1970Ms = 1000 * 60 * 60 * 24 * to1970Date;
@@ -1089,13 +1110,10 @@ public final class GDateBuilder implemen
to1970Ms += date.getSecond() * 1000;
to1970Ms += date.getMinute() * 60 * 1000;
to1970Ms += date.getHour() * 60 * 60 * 1000;
- if (date.hasTimeZone())
- {
+ if (date.hasTimeZone()) {
to1970Ms -= (date.getTimeZoneMinute() * date.getTimeZoneSign()) * 60 * 1000;
to1970Ms -= (date.getTimeZoneHour() * date.getTimeZoneSign()) * 60 * 60 * 1000;
- }
- else
- {
+ } else {
TimeZone def = TimeZone.getDefault();
int offset = def.getOffset(to1970Ms);
to1970Ms -= offset;
@@ -1107,8 +1125,7 @@ public final class GDateBuilder implemen
/**
* True for leap years.
*/
- private static boolean _isLeapYear(int year)
- {
+ private static boolean _isLeapYear(int year) {
// BUGBUG: Julian calendar?
return ((year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0)));
}
@@ -1116,10 +1133,10 @@ public final class GDateBuilder implemen
/**
* fQuotient(a, b) = the greatest integer less than or equal to a/b
*/
- private static final long _fQuotient(long a, int b)
- {
- if ((a < 0) == (b < 0))
+ private static long _fQuotient(long a, int b) {
+ if ((a < 0) == (b < 0)) {
return a / b;
+ }
return -((b - a - 1) / b);
}
@@ -1127,26 +1144,23 @@ public final class GDateBuilder implemen
/**
* modulo(a, b) = a - fQuotient(a,b)*b
*/
- private static int _mod(long a, int b, long quotient)
- {
- return (int)(a - quotient*b) ;
+ private static int _mod(long a, int b, long quotient) {
+ return (int) (a - quotient * b);
}
/**
* modulo(a - low, high - low) + low
*/
- private static final int _modulo(long temp, int low, int high)
- {
+ private static int _modulo(long temp, int low, int high) {
long a = temp - low;
int b = high - low;
- return (_mod(a, b, _fQuotient(a, b)) + low) ;
+ return (_mod(a, b, _fQuotient(a, b)) + low);
}
/**
* Quotient(a - low, high - low)
*/
- private static final long _fQuotient(long temp, int low, int high)
- {
+ private static long _fQuotient(long temp, int low, int high) {
return _fQuotient(temp - low, high - low);
}
@@ -1154,23 +1168,26 @@ public final class GDateBuilder implemen
* Sets to the first possible moment that matches the given
* specification.
*/
- private void _setToFirstMoment()
- {
+ private void _setToFirstMoment() {
// 1584 was the first leap year during which the Gregorian
// calendar was in use: seems like the most reasonable "first"
// year to use in absence of a year.
- if (!hasYear())
+ if (!hasYear()) {
setYear(1584);
+ }
- if (!hasMonth())
+ if (!hasMonth()) {
setMonth(1);
+ }
- if (!hasDay())
+ if (!hasDay()) {
setDay(1);
+ }
- if (!hasTime())
+ if (!hasTime()) {
setTime(0, 0, 0, GDate._zero);
+ }
}
/**
@@ -1183,41 +1200,37 @@ public final class GDateBuilder implemen
* </ul>
* Two instances are incomparable if they have different amounts
* of information.
- *
+ *
* @param datespec the date to compare against
*/
- public final int compareToGDate(GDateSpecification datespec)
- {
+ public final int compareToGDate(GDateSpecification datespec) {
return compareGDate(this, datespec);
}
- /* package */ static final int compareGDate(GDateSpecification tdate, GDateSpecification datespec)
- {
+ /* package */
+ static int compareGDate(GDateSpecification tdate, GDateSpecification datespec) {
// same amount of information: looks good
int bitdiff = tdate.getFlags() ^ datespec.getFlags();
- easy: if ((bitdiff & (HAS_YEAR | HAS_MONTH | HAS_DAY | HAS_TIME | HAS_TIMEZONE)) == 0)
- {
+ if ((bitdiff & (HAS_YEAR | HAS_MONTH | HAS_DAY | HAS_TIME | HAS_TIMEZONE)) == 0) {
// If the other date needs to be normalized to
// our timezone, make a clone and do so if possible
if (tdate.hasTimeZone() &&
(datespec.getTimeZoneHour() != tdate.getTimeZoneHour() ||
datespec.getTimeZoneMinute() != tdate.getTimeZoneMinute() ||
- datespec.getTimeZoneSign() != tdate.getTimeZoneSign()))
- {
+ datespec.getTimeZoneSign() != tdate.getTimeZoneSign())) {
datespec = new GDateBuilder(datespec);
int flags = tdate.getFlags() & (HAS_YEAR | HAS_MONTH | HAS_DAY);
- if (flags != 0 && flags != (HAS_YEAR | HAS_MONTH | HAS_DAY) || !tdate.hasTime())
- {
+ if (flags != 0 && flags != (HAS_YEAR | HAS_MONTH | HAS_DAY) || !tdate.hasTime()) {
// in these cases we'll need to fill in fields
- ((GDateBuilder)datespec)._setToFirstMoment();
+ ((GDateBuilder) datespec)._setToFirstMoment();
tdate = new GDateBuilder(tdate);
- ((GDateBuilder)tdate)._setToFirstMoment();
+ ((GDateBuilder) tdate)._setToFirstMoment();
}
- ((GDateBuilder)datespec).normalizeToTimeZone(tdate.getTimeZoneSign(), tdate.getTimeZoneHour(), tdate.getTimeZoneMinute());
+ ((GDateBuilder) datespec).normalizeToTimeZone(tdate.getTimeZoneSign(), tdate.getTimeZoneHour(), tdate.getTimeZoneMinute());
}
// compare by field
@@ -1225,15 +1238,15 @@ public final class GDateBuilder implemen
}
// different amounts of information (except timezone): not comparable
- if ((bitdiff & (HAS_YEAR | HAS_MONTH | HAS_DAY | HAS_TIME)) != 0)
+ if ((bitdiff & (HAS_YEAR | HAS_MONTH | HAS_DAY | HAS_TIME)) != 0) {
return 2;
+ }
// The schema spec says we should try to compare with-timezone and
// without-timezone specifications... Well, OK, sure, if they say so.
// We don't have a timezone but the other does: reverse the call
- if (!tdate.hasTimeZone())
- {
+ if (!tdate.hasTimeZone()) {
int result = compareGDate(datespec, tdate);
return result == 2 ? 2 : -result;
}
@@ -1246,20 +1259,14 @@ public final class GDateBuilder implemen
// To cover the one uncovered case: if one date is 02/28 and the
// other date is 03/01, shift days closer by one to simulate being
// the last day of the month within a leap year
- if ((tdate.getFlags() & (HAS_YEAR | HAS_MONTH | HAS_DAY)) == (HAS_MONTH | HAS_DAY))
- {
- if (tdate.getDay() == 28 && tdate.getMonth() == 2)
- {
- if (datespec.getDay() == 01 && datespec.getMonth() == 3)
- {
+ if ((tdate.getFlags() & (HAS_YEAR | HAS_MONTH | HAS_DAY)) == (HAS_MONTH | HAS_DAY)) {
+ if (tdate.getDay() == 28 && tdate.getMonth() == 2) {
+ if (datespec.getDay() == 1 && datespec.getMonth() == 3) {
pdate.setDay(29);
}
- }
- else if (datespec.getDay() == 28 && datespec.getMonth() == 2)
- {
- if (tdate.getDay() == 01 && tdate.getMonth() == 3)
- {
- pdate.setMonth(02);
+ } else if (datespec.getDay() == 28 && datespec.getMonth() == 2) {
+ if (tdate.getDay() == 1 && tdate.getMonth() == 3) {
+ pdate.setMonth(2);
pdate.setDay(29);
}
}
@@ -1275,8 +1282,9 @@ public final class GDateBuilder implemen
qplusdate._setToFirstMoment();
qplusdate.setTimeZone(1, 14, 0);
qplusdate.normalizeToTimeZone(tdate.getTimeZoneSign(), tdate.getTimeZoneHour(), tdate.getTimeZoneMinute());
- if (fieldwiseCompare(pdate, qplusdate) == -1)
+ if (fieldwiseCompare(pdate, qplusdate) == -1) {
return -1;
+ }
// P > Q if P > (Q with time zone -14:00)
GDateBuilder qminusdate = qplusdate;
@@ -1284,8 +1292,9 @@ public final class GDateBuilder implemen
qminusdate._setToFirstMoment();
qminusdate.setTimeZone(-1, 14, 0);
qminusdate.normalizeToTimeZone(tdate.getTimeZoneSign(), tdate.getTimeZoneHour(), tdate.getTimeZoneMinute());
- if (fieldwiseCompare(pdate, qminusdate) == 1)
+ if (fieldwiseCompare(pdate, qminusdate) == 1) {
return 1;
+ }
// P <> Q otherwise
return 2;
@@ -1296,46 +1305,67 @@ public final class GDateBuilder implemen
* ignoring any timezone or has/doesn't have issues.
* The data must have been digested first.
*/
- private static int fieldwiseCompare(GDateSpecification tdate, GDateSpecification date)
- {
- if (tdate.hasYear())
- {
+ private static int fieldwiseCompare(GDateSpecification tdate, GDateSpecification date) {
+ if (tdate.hasYear()) {
int CY = date.getYear();
int TCY = tdate.getYear();
- if (TCY < CY) return -1;
- if (TCY > CY) return 1;
+ if (TCY < CY) {
+ return -1;
+ }
+ if (TCY > CY) {
+ return 1;
+ }
}
- if (tdate.hasMonth())
- {
+ if (tdate.hasMonth()) {
int M = date.getMonth();
int TM = tdate.getMonth();
- if (TM < M) return -1;
- if (TM > M) return 1;
+ if (TM < M) {
+ return -1;
+ }
+ if (TM > M) {
+ return 1;
+ }
}
- if (tdate.hasDay())
- {
+ if (tdate.hasDay()) {
int D = date.getDay();
int TD = tdate.getDay();
- if (TD < D) return -1;
- if (TD > D) return 1;
+ if (TD < D) {
+ return -1;
+ }
+ if (TD > D) {
+ return 1;
+ }
}
- if (tdate.hasTime())
- {
+ if (tdate.hasTime()) {
int h = date.getHour();
int th = tdate.getHour();
- if (th < h) return -1;
- if (th > h) return 1;
+ if (th < h) {
+ return -1;
+ }
+ if (th > h) {
+ return 1;
+ }
int m = date.getMinute();
int tm = tdate.getMinute();
- if (tm < m) return -1;
- if (tm > m) return 1;
+ if (tm < m) {
+ return -1;
+ }
+ if (tm > m) {
+ return 1;
+ }
int s = date.getSecond();
int ts = tdate.getSecond();
- if (ts < s) return -1;
- if (ts > s) return 1;
+ if (ts < s) {
+ return -1;
+ }
+ if (ts > s) {
+ return 1;
+ }
BigDecimal fs = date.getFraction();
BigDecimal tfs = tdate.getFraction();
- if (tfs == null && fs == null) return 0;
+ if (tfs == null && fs == null) {
+ return 0;
+ }
return (tfs == null ? GDate._zero : tfs).compareTo(fs == null ? GDate._zero : fs);
}
@@ -1347,7 +1377,7 @@ public final class GDateBuilder implemen
* contained in this instance, or 0 if the
* instance doesn't contain information corresponding to a
* Schema type.
- * <p>
+ * <p>
* Value will be equal to
* {@link SchemaType#BTC_NOT_BUILTIN},
* {@link SchemaType#BTC_G_YEAR},
@@ -1359,15 +1389,13 @@ public final class GDateBuilder implemen
* {@link SchemaType#BTC_DATE_TIME}, or
* {@link SchemaType#BTC_TIME}.
*/
- public final int getBuiltinTypeCode()
- {
+ public final int getBuiltinTypeCode() {
return btcForFlags(_bits);
}
- /* package */ static int btcForFlags(int flags)
- {
- switch (flags & (HAS_YEAR | HAS_MONTH | HAS_DAY | HAS_TIME))
- {
+ /* package */
+ static int btcForFlags(int flags) {
+ switch (flags & (HAS_YEAR | HAS_MONTH | HAS_DAY | HAS_TIME)) {
case HAS_YEAR:
return SchemaType.BTC_G_YEAR;
case HAS_YEAR | HAS_MONTH:
@@ -1400,13 +1428,11 @@ public final class GDateBuilder implemen
* {@link SchemaType#BTC_DATE},
* {@link SchemaType#BTC_DATE_TIME}, or
* {@link SchemaType#BTC_TIME}.
- *
+ *
* @param typeCode the type code to apply
*/
- public void setBuiltinTypeCode(int typeCode)
- {
- switch (typeCode)
- {
+ public void setBuiltinTypeCode(int typeCode) {
+ switch (typeCode) {
case SchemaType.BTC_G_YEAR:
//HAS_YEAR
clearMonth();
@@ -1463,20 +1489,19 @@ public final class GDateBuilder implemen
* Other recurring time specifications keep their timezone
* information.
*/
- public String canonicalString()
- {
+ public String canonicalString() {
boolean needNormalize =
(hasTimeZone() && getTimeZoneSign() != 0 && hasTime() &&
- ((hasDay() == hasMonth() && hasDay() == hasYear())));
+ ((hasDay() == hasMonth() && hasDay() == hasYear())));
- if (!needNormalize && getFraction()!=null && getFraction().scale() > 0)
- {
+ if (!needNormalize && getFraction() != null && getFraction().scale() > 0) {
BigInteger bi = getFraction().unscaledValue();
needNormalize = (bi.mod(TEN).signum() == 0);
}
- if (!needNormalize)
+ if (!needNormalize) {
return toString();
+ }
GDateBuilder cdate = new GDateBuilder(this);
cdate.normalize();
@@ -1495,8 +1520,7 @@ public final class GDateBuilder implemen
* timezones). To get a canonical string, use the canonicalString()
* method.
*/
- public final String toString()
- {
+ public final String toString() {
return GDate.formatGDate(this);
}
Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDurationBuilder.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDurationBuilder.java?rev=1882074&r1=1882073&r2=1882074&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDurationBuilder.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/GDurationBuilder.java Sun Sep 27 21:25:33 2020
@@ -17,14 +17,14 @@ package org.apache.xmlbeans;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.math.RoundingMode;
/**
* Used to build {@link GDuration GDurations}.
- */
-public class GDurationBuilder implements GDurationSpecification, java.io.Serializable
-{
+ */
+public class GDurationBuilder implements GDurationSpecification, java.io.Serializable {
private static final long serialVersionUID = 1L;
-
+
private int _sign;
private int _CY;
private int _M;
@@ -37,8 +37,7 @@ public class GDurationBuilder implements
/**
* Constructs an empty GDurationBuilder representing zero seconds.
*/
- public GDurationBuilder()
- {
+ public GDurationBuilder() {
_sign = +1;
_fs = GDate._zero;
}
@@ -47,8 +46,7 @@ public class GDurationBuilder implements
* Constructs a GDuration from a lexical
* representation.
*/
- public GDurationBuilder(String s)
- {
+ public GDurationBuilder(String s) {
this(new GDuration(s));
}
@@ -56,21 +54,22 @@ public class GDurationBuilder implements
* Constructs a GDurationBuilder with the specified sign,
* year, month, day, hours, minutes, seconds, and optional
* fractional seconds.
+ *
* @param sign +1 for a positive duration, -1 for a negative duration
* @throws java.lang.IllegalArgumentException if the sign is not 1 or -1
*/
public GDurationBuilder(
- int sign,
- int year,
- int month,
- int day,
- int hour,
- int minute,
- int second,
- BigDecimal fraction)
- {
- if (sign != 1 && sign != -1)
+ int sign,
+ int year,
+ int month,
+ int day,
+ int hour,
+ int minute,
+ int second,
+ BigDecimal fraction) {
+ if (sign != 1 && sign != -1) {
throw new IllegalArgumentException();
+ }
_sign = sign;
_CY = year;
_M = month;
@@ -84,8 +83,7 @@ public class GDurationBuilder implements
/**
* Constructs a GDurationBuilder from another GDurationBuilderSpecification.
*/
- public GDurationBuilder(GDurationSpecification gDuration)
- {
+ public GDurationBuilder(GDurationSpecification gDuration) {
_sign = gDuration.getSign();
_CY = gDuration.getYear();
_M = gDuration.getMonth();
@@ -100,16 +98,14 @@ public class GDurationBuilder implements
* Builds another GDurationBuilder with the same value
* as this one.
*/
- public Object clone()
- {
+ public Object clone() {
return new GDurationBuilder(this);
}
/**
* Builds a GDuration from this GDurationBuilder.
*/
- public GDuration toGDuration()
- {
+ public GDuration toGDuration() {
return new GDuration(this);
}
@@ -117,8 +113,7 @@ public class GDurationBuilder implements
* Adds to this duration. Does a fieldwise add, with no
* normalization.
*/
- public void addGDuration(GDurationSpecification duration)
- {
+ public void addGDuration(GDurationSpecification duration) {
int sign = _sign * duration.getSign();
_add(duration, sign);
}
@@ -127,14 +122,12 @@ public class GDurationBuilder implements
* Subtracts from this duration. Does a fieldwise subtraction,
* with no normalization.
*/
- public void subtractGDuration(GDurationSpecification duration)
- {
+ public void subtractGDuration(GDurationSpecification duration) {
int sign = -_sign * duration.getSign();
_add(duration, sign);
}
- private void _add(GDurationSpecification duration, int sign)
- {
+ private void _add(GDurationSpecification duration, int sign) {
_CY += sign * duration.getYear();
_M += sign * duration.getMonth();
_D += sign * duration.getDay();
@@ -142,74 +135,82 @@ public class GDurationBuilder implements
_m += sign * duration.getMinute();
_s += sign * duration.getSecond();
- if (duration.getFraction().signum() == 0)
+ if (duration.getFraction().signum() == 0) {
return;
+ }
- if (_fs.signum() == 0 && sign == 1)
+ if (_fs.signum() == 0 && sign == 1) {
_fs = duration.getFraction();
- else
+ } else {
_fs = sign > 0 ?
- _fs.add(duration.getFraction()) :
- _fs.subtract(duration.getFraction());
+ _fs.add(duration.getFraction()) :
+ _fs.subtract(duration.getFraction());
+ }
}
/**
* Sets the sign.
*/
- public final void setSign(int sign)
- {
- if (sign != 1 && sign != -1)
+ public final void setSign(int sign) {
+ if (sign != 1 && sign != -1) {
throw new IllegalArgumentException();
+ }
_sign = sign;
}
/**
* Sets the year component.
*/
- public void setYear(int year)
- { _CY = year; }
+ public void setYear(int year) {
+ _CY = year;
+ }
/**
* Sets the month component.
*/
- public void setMonth(int month)
- { _M = month; }
+ public void setMonth(int month) {
+ _M = month;
+ }
/**
* Sets the day component.
*/
- public void setDay(int day)
- { _D = day; }
+ public void setDay(int day) {
+ _D = day;
+ }
/**
* Sets the hour component.
*/
- public void setHour(int hour)
- { _h = hour; }
+ public void setHour(int hour) {
+ _h = hour;
+ }
/**
* Sets the minute component.
*/
- public void setMinute(int minute)
- { _m = minute; }
+ public void setMinute(int minute) {
+ _m = minute;
+ }
/**
* Sets the second component.
*/
- public void setSecond(int second)
- { _s = second; }
+ public void setSecond(int second) {
+ _s = second;
+ }
/**
* Sets the fraction-of-second component.
*/
- public void setFraction(BigDecimal fraction)
- { _fs = fraction == null ? GDate._zero : fraction; }
+ public void setFraction(BigDecimal fraction) {
+ _fs = fraction == null ? GDate._zero : fraction;
+ }
/**
* All GDuration instances return true.
*/
- public final boolean isImmutable()
- {
+ public final boolean isImmutable() {
return true;
}
@@ -220,58 +221,65 @@ public class GDurationBuilder implements
* true direction of the duration if the duration
* is not normalized or not normalizable.
*/
- public final int getSign()
- { return _sign; }
+ public final int getSign() {
+ return _sign;
+ }
/**
* Gets the year component.
*/
- public final int getYear()
- { return _CY; }
+ public final int getYear() {
+ return _CY;
+ }
/**
* Gets the month-of-year component.
*/
- public final int getMonth()
- { return _M; }
+ public final int getMonth() {
+ return _M;
+ }
/**
* Gets the day-of-month component.
*/
- public final int getDay()
- { return _D; }
+ public final int getDay() {
+ return _D;
+ }
/**
* Gets the hour-of-day component.
*/
- public final int getHour()
- { return _h; }
+ public final int getHour() {
+ return _h;
+ }
/**
* Gets the minute-of-hour component.
*/
- public final int getMinute()
- { return _m; }
+ public final int getMinute() {
+ return _m;
+ }
/**
* Gets the second-of-minute component.
*/
- public final int getSecond()
- { return _s; }
+ public final int getSecond() {
+ return _s;
+ }
/**
* Gets the fraction-of-second. Range from 0 (inclusive) to 1 (exclusive).
*/
- public BigDecimal getFraction()
- { return _fs; }
+ public BigDecimal getFraction() {
+ return _fs;
+ }
/**
* Returns true if all of the individual components
* of the duration are nonnegative.
*/
- public boolean isValid()
- {
+ public boolean isValid() {
return GDurationBuilder.isValidDuration(this);
}
@@ -295,18 +303,17 @@ public class GDurationBuilder implements
* In these cases, this method normalizes the components
* so that "day" is the only negative component.
*/
- public void normalize()
- {
+ public void normalize() {
_normalizeImpl(true);
}
/**
* fQuotient(a, b) = the greatest integer less than or equal to a/b
*/
- private static final long _fQuotient(long a, int b)
- {
- if ((a < 0) == (b < 0))
+ private static long _fQuotient(long a, int b) {
+ if ((a < 0) == (b < 0)) {
return a / b;
+ }
return -((b - a - 1) / b);
}
@@ -314,9 +321,8 @@ public class GDurationBuilder implements
/**
* modulo(a, b) = a - fQuotient(a,b)*b
*/
- private static final int _mod(long a, int b, long quotient)
- {
- return (int)(a - quotient*b) ;
+ private static int _mod(long a, int b, long quotient) {
+ return (int) (a - quotient * b);
}
@@ -325,13 +331,11 @@ public class GDurationBuilder implements
* to facilitate this method calling itself without
* danger of infinite recursion.
*/
- private void _normalizeImpl(boolean adjustSign)
- {
+ private void _normalizeImpl(boolean adjustSign) {
long temp;
// months to years
- if (_M < 0 || _M > 11)
- {
+ if (_M < 0 || _M > 11) {
temp = _M;
long ycarry = _fQuotient(temp, 12);
_M = _mod(temp, 12, ycarry);
@@ -341,15 +345,13 @@ public class GDurationBuilder implements
long carry = 0;
// fractions to seconds
- if (_fs != null && (_fs.signum() < 0 || _fs.compareTo(GDate._one) >= 0))
- {
- BigDecimal bdcarry = _fs.setScale(0, BigDecimal.ROUND_FLOOR);
+ if (_fs != null && (_fs.signum() < 0 || _fs.compareTo(GDate._one) >= 0)) {
+ BigDecimal bdcarry = _fs.setScale(0, RoundingMode.FLOOR);
_fs = _fs.subtract(bdcarry);
carry = bdcarry.intValue();
}
- if (carry != 0 || _s < 0 || _s > 59 || _m < 0 || _m > 50 || _h < 0 || _h > 23)
- {
+ if (carry != 0 || _s < 0 || _s > 59 || _m < 0 || _m > 50 || _h < 0 || _h > 23) {
// seconds
temp = _s + carry;
carry = _fQuotient(temp, 60);
@@ -367,18 +369,19 @@ public class GDurationBuilder implements
_D += carry;
}
- if (_CY == 0 && _M == 0 && _D == 0 && _h == 0 && _m == 0 && _s == 0 && (_fs == null || _fs.signum() == 0))
+ if (_CY == 0 && _M == 0 && _D == 0 && _h == 0 && _m == 0 && _s == 0 && (_fs == null || _fs.signum() == 0)) {
_sign = 1;
+ }
- if (adjustSign && (_D < 0 || _CY < 0))
- {
+ if (adjustSign && (_D < 0 || _CY < 0)) {
int sign = (_D <= 0 && (_CY < 0 || _CY == 0 && _M == 0)) ? -_sign : _getTotalSignSlowly();
- if (sign == 2)
+ if (sign == 2) {
sign = (_CY < 0) ? -_sign : _sign;
- if (sign == 0)
+ }
+ if (sign == 0) {
sign = 1;
- if (sign != _sign)
- {
+ }
+ if (sign != _sign) {
_sign = sign;
_CY = -_CY;
_M = -_M;
@@ -386,21 +389,23 @@ public class GDurationBuilder implements
_h = -_h;
_m = -_m;
_s = -_s;
- if (_fs != null)
+ if (_fs != null) {
_fs = _fs.negate();
+ }
}
_normalizeImpl(false);
}
}
- /* package */ static boolean isValidDuration(GDurationSpecification spec)
- {
- if (!(spec.getSign() == 1 || spec.getSign() == -1))
+ /* package */
+ static boolean isValidDuration(GDurationSpecification spec) {
+ if (!(spec.getSign() == 1 || spec.getSign() == -1)) {
return false;
+ }
return (spec.getYear() >= 0 && spec.getMonth() >= 0 && spec.getDay() >= 0 &&
- spec.getHour() >= 0 && spec.getMinute() >= 0 && spec.getSecond() >= 0 &&
+ spec.getHour() >= 0 && spec.getMinute() >= 0 && spec.getSecond() >= 0 &&
spec.getFraction().signum() >= 0);
}
@@ -415,8 +420,7 @@ public class GDurationBuilder implements
* Two instances are incomparable if they have different amounts
* of information.
*/
- public final int compareToGDuration(GDurationSpecification duration)
- {
+ public final int compareToGDuration(GDurationSpecification duration) {
return GDurationBuilder.compareDurations(this, duration);
}
@@ -429,35 +433,32 @@ public class GDurationBuilder implements
* the isValid() method; and to normalize most durations to a valid
* form use the normalize() method.
*/
- public String toString()
- {
+ public String toString() {
return GDurationBuilder.formatDuration(this);
}
- /* package */ static int compareDurations(GDurationSpecification d1, GDurationSpecification d2)
- {
+ /* package */
+ static int compareDurations(GDurationSpecification d1, GDurationSpecification d2) {
// first do an all-fields check
- if (d1.getFraction().signum() == 0 && d2.getFraction().signum() == 0)
- {
+ if (d1.getFraction().signum() == 0 && d2.getFraction().signum() == 0) {
int s1 = d1.getSign();
int s2 = d2.getSign();
- long month1 = s1 * ((long)d1.getYear() * 12 + d1.getMonth());
- long month2 = s2 * ((long)d2.getYear() * 12 + d2.getMonth());
- long sec1 = s1 * ((((long)d1.getDay() * 24 + d1.getHour()) * 60 + d1.getMinute()) * 60 + d1.getSecond());
- long sec2 = s2 * ((((long)d2.getDay() * 24 + d2.getHour()) * 60 + d2.getMinute()) * 60 + d2.getSecond());
- if (month1 == month2)
- {
- if (sec1 == sec2)
+ long month1 = s1 * ((long) d1.getYear() * 12 + d1.getMonth());
+ long month2 = s2 * ((long) d2.getYear() * 12 + d2.getMonth());
+ long sec1 = s1 * ((((long) d1.getDay() * 24 + d1.getHour()) * 60 + d1.getMinute()) * 60 + d1.getSecond());
+ long sec2 = s2 * ((((long) d2.getDay() * 24 + d2.getHour()) * 60 + d2.getMinute()) * 60 + d2.getSecond());
+ if (month1 == month2) {
+ if (sec1 == sec2) {
return 0;
- if (sec1 < sec2)
- return -1;
- if (sec1 > sec2)
- return 1;
+ }
+ return sec1 < sec2 ? -1 : 1;
}
- if (month1 < month2 && sec1 - sec2 < 28 * 24 * 60 * 60)
+ if (month1 < month2 && sec1 - sec2 < 28 * 24 * 60 * 60) {
return -1;
- if (month1 > month2 && sec2 - sec1 < 28 * 24 * 60 * 60)
+ }
+ if (month1 > month2 && sec2 - sec1 < 28 * 24 * 60 * 60) {
return 1;
+ }
}
// the answer isn't obvious, so then do a total-sign check
@@ -473,12 +474,12 @@ public class GDurationBuilder implements
* answer is "incomparable".
*/
private static final GDate[] _compDate = new GDate[]
- {
- new GDate(1696, 9, 1, 0, 0, 0, null, 0, 0, 0),
- new GDate(1697, 2, 1, 0, 0, 0, null, 0, 0, 0),
- new GDate(1903, 3, 1, 0, 0, 0, null, 0, 0, 0),
- new GDate(1903, 7, 1, 0, 0, 0, null, 0, 0, 0)
- };
+ {
+ new GDate(1696, 9, 1, 0, 0, 0, null, 0, 0, 0),
+ new GDate(1697, 2, 1, 0, 0, 0, null, 0, 0, 0),
+ new GDate(1903, 3, 1, 0, 0, 0, null, 0, 0, 0),
+ new GDate(1903, 7, 1, 0, 0, 0, null, 0, 0, 0)
+ };
/**
@@ -487,42 +488,45 @@ public class GDurationBuilder implements
* duration moves backwards in time, 0 if the duration
* is zero-length, and 2 if the duration may be positive
* or negative depending on the date.
- *
+ * <p>
* (For example, one month minus 30 days is indeterminate).
*/
- private int _getTotalSignSlowly()
- {
+ private int _getTotalSignSlowly() {
int pos = 0;
int neg = 0;
int zer = 0;
GDateBuilder enddate = new GDateBuilder();
- for (int i = 0; i < _compDate.length; i++)
- {
- enddate.setGDate(_compDate[i]);
+ for (GDate gDate : _compDate) {
+ enddate.setGDate(gDate);
enddate.addGDuration(this);
- switch (enddate.compareToGDate(_compDate[i]))
- {
+ switch (enddate.compareToGDate(gDate)) {
case -1:
- neg++; break;
+ neg++;
+ break;
case 0:
- zer++; break;
+ zer++;
+ break;
case 1:
- pos++; break;
+ pos++;
+ break;
}
}
- if (pos == _compDate.length)
+ if (pos == _compDate.length) {
return +1;
- if (neg == _compDate.length)
+ }
+ if (neg == _compDate.length) {
return -1;
- if (zer == _compDate.length)
+ }
+ if (zer == _compDate.length) {
return 0;
+ }
return 2;
}
- /* package */ static String formatDuration(GDurationSpecification duration)
- {
+ /* package */
+ static String formatDuration(GDurationSpecification duration) {
// Sign+P: (-)?P
// Year: (?:(\d+)Y)?
// Month: (?:(\d+)M)?
@@ -534,135 +538,125 @@ public class GDurationBuilder implements
StringBuilder message = new StringBuilder(30);
- if (duration.getSign() < 0)
+ if (duration.getSign() < 0) {
message.append('-');
+ }
message.append('P');
- if (duration.getYear() != 0)
- {
+ if (duration.getYear() != 0) {
message.append(duration.getYear());
message.append('Y');
}
- if (duration.getMonth() != 0)
- {
+ if (duration.getMonth() != 0) {
message.append(duration.getMonth());
message.append('M');
}
- if (duration.getDay() != 0)
- {
+ if (duration.getDay() != 0) {
message.append(duration.getDay());
message.append('D');
}
if (duration.getHour() != 0 || duration.getMinute() != 0 || duration.getSecond() != 0 ||
- (duration.getFraction().signum() != 0))
- {
+ (duration.getFraction().signum() != 0)) {
message.append('T');
}
- if (duration.getHour() != 0)
- {
+ if (duration.getHour() != 0) {
message.append(duration.getHour());
message.append('H');
}
- if (duration.getMinute() != 0)
- {
+ if (duration.getMinute() != 0) {
message.append(duration.getMinute());
message.append('M');
}
- if (duration.getFraction().signum() != 0)
- {
+ if (duration.getFraction().signum() != 0) {
BigDecimal s = duration.getFraction();
- if (duration.getSecond() != 0)
+ if (duration.getSecond() != 0) {
s = s.add(BigDecimal.valueOf(duration.getSecond()));
+ }
// todo when upgrade to 1.5 message.append(s.stripTrailingZeros().toPlainString());
message.append(stripTrailingZeros(toPlainString(s)));
message.append('S');
- }
- else if (duration.getSecond() != 0)
- {
+ } else if (duration.getSecond() != 0) {
message.append(duration.getSecond());
message.append('S');
- }
- else if (message.length() <= 2)
- // Specify zero seconds if everything was 0
+ } else if (message.length() <= 2)
+ // Specify zero seconds if everything was 0
+ {
message.append("T0S");
+ }
return message.toString();
}
- public static String toPlainString(BigDecimal bd)
- {
+ public static String toPlainString(BigDecimal bd) {
BigInteger intVal = bd.unscaledValue();
int scale = bd.scale();
String intValStr = intVal.toString();
- if (scale == 0)
+ if (scale == 0) {
return intValStr;
+ }
boolean isNegative = (intValStr.charAt(0) == '-');
int point = intValStr.length() - scale - (isNegative ? 1 : 0);
StringBuilder sb = new StringBuilder(intValStr.length() + 2 + (point <= 0 ? (-point + 1) : 0));
- if (point <= 0)
- {
+ if (point <= 0) {
// prepend zeros and a decimal point.
- if (isNegative) sb.append('-');
+ if (isNegative) {
+ sb.append('-');
+ }
sb.append('0').append('.');
- while (point < 0)
- {
+ while (point < 0) {
sb.append('0');
point++;
}
sb.append(intValStr.substring(isNegative ? 1 : 0));
- }
- else if (point < intValStr.length())
- {
+ } else if (point < intValStr.length()) {
// No zeros needed
sb.append(intValStr);
sb.insert(point + (isNegative ? 1 : 0), '.');
- }
- else
- {
+ } else {
// append zeros if not 0
sb.append(intValStr);
- if (!intVal.equals(BigInteger.ZERO))
- for (int i = intValStr.length(); i < point; i++)
+ if (!intVal.equals(BigInteger.ZERO)) {
+ for (int i = intValStr.length(); i < point; i++) {
sb.append('0');
+ }
+ }
}
return sb.toString();
}
- public static String stripTrailingZeros(String s)
- {
+ public static String stripTrailingZeros(String s) {
boolean seenDot = false;
int i = s.length() - 1;
int zeroIndex = i;
- while(i>=0)
- {
- if (s.charAt(i)!='0')
+ while (i >= 0) {
+ if (s.charAt(i) != '0') {
break;
+ }
i--;
zeroIndex--;
}
- while(i>=0)
- {
- if (s.charAt(i)=='E')
+ while (i >= 0) {
+ if (s.charAt(i) == 'E') {
return s;
- if (s.charAt(i)=='.')
- {
+ }
+ if (s.charAt(i) == '.') {
seenDot = true;
break;
}
i--;
}
-
- return seenDot? s.substring(0, zeroIndex+1) : s;
+
+ return seenDot ? s.substring(0, zeroIndex + 1) : s;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org