Add some toString() methods handy when debugging.

This commit is contained in:
Gary Gregory 2021-02-23 21:28:16 -05:00
parent c6314067f0
commit f7c5c5c6db
1 changed files with 69 additions and 10 deletions

View File

@ -150,7 +150,7 @@ protected FastDateParser(final String pattern, final TimeZone timeZone, final Lo
}
/**
* Initialize derived fields from defining fields.
* Initializes derived fields from defining fields.
* This is called from constructor and from readObject (de-serialization)
*
* @param definingCalendar the {@link java.util.Calendar} instance used to initialize this FastDateParser
@ -175,6 +175,7 @@ private void init(final Calendar definingCalendar) {
* Holds strategy and field width
*/
private static class StrategyAndWidth {
final Strategy strategy;
final int width;
@ -191,6 +192,11 @@ int getMaxWidth(final ListIterator<StrategyAndWidth> lt) {
lt.previous();
return nextStrategy.isNumber() ? width : 0;
}
@Override
public String toString() {
return "StrategyAndWidth [strategy=" + strategy + ", width=" + width + "]";
}
}
/**
@ -287,7 +293,7 @@ public Locale getLocale() {
// Basics
//-----------------------------------------------------------------------
/**
* <p>Compare another object for equality with this object.</p>
* <p>Compares another object for equality with this object.</p>
*
* @param obj the object to compare to
* @return {@code true}if equal to this instance
@ -302,7 +308,7 @@ public boolean equals(final Object obj) {
}
/**
* <p>Return a hash code compatible with equals.</p>
* <p>Returns a hash code compatible with equals.</p>
*
* @return a hash code compatible with equals
*/
@ -312,7 +318,7 @@ public int hashCode() {
}
/**
* <p>Get a string version of this formatter.</p>
* <p>Gets a string version of this formatter.</p>
*
* @return a debugging string
*/
@ -324,7 +330,7 @@ public String toString() {
// Serializing
//-----------------------------------------------------------------------
/**
* Create the object after serialization. This implementation reinitializes the
* Creates the object after serialization. This implementation reinitializes the
* transient properties.
*
* @param in ObjectInputStream from which the object is being deserialized.
@ -394,7 +400,7 @@ public Date parse(final String source, final ParsePosition pos) {
}
/**
* Parse a formatted date string according to the format. Updates the Calendar with parsed fields.
* Parses a formatted date string according to the format. Updates the Calendar with parsed fields.
* Upon success, the ParsePosition index is updated to indicate how much of the source text was consumed.
* Not all source text needs to be consumed. Upon parse failure, ParsePosition error index is updated to
* the offset of the source text which does not match the supplied format.
@ -477,7 +483,7 @@ private static Map<String, Integer> appendDisplayNames(final Calendar cal, Local
}
/**
* Adjust dates to be within appropriate century
* Adjusts dates to be within appropriate century
* @param twoDigitYear The year to adjust
* @return A value between centuryStart(inclusive) to centuryStart+100(exclusive)
*/
@ -509,7 +515,7 @@ abstract boolean parse(FastDateParser parser, Calendar calendar, String source,
*/
private abstract static class PatternStrategy extends Strategy {
private Pattern pattern;
Pattern pattern;
void createPattern(final StringBuilder regex) {
createPattern(regex.toString());
@ -543,10 +549,21 @@ boolean parse(final FastDateParser parser, final Calendar calendar, final String
}
abstract void setCalendar(FastDateParser parser, Calendar cal, String value);
}
/**
* Converts this instance to a handy debug string.
*
* @since 3.12.0
*/
@Override
public String toString() {
return getClass().getSimpleName() + " [pattern=" + pattern + "]";
}
}
/**
* Obtain a Strategy given a field from a SimpleDateFormat pattern
* Gets a Strategy given a field from a SimpleDateFormat pattern
* @param f A sub-sequence of the SimpleDateFormat pattern
* @param definingCalendar The calendar to obtain the short and long values
* @return The Strategy that will handle parsing for the field
@ -682,6 +699,16 @@ boolean parse(final FastDateParser parser, final Calendar calendar, final String
pos.setIndex(formatField.length() + pos.getIndex());
return true;
}
/**
* Converts this instance to a handy debug string.
*
* @since 3.12.0
*/
@Override
public String toString() {
return "CopyQuotedStrategy [formatField=" + formatField + "]";
}
}
/**
@ -724,6 +751,17 @@ void setCalendar(final FastDateParser parser, final Calendar cal, final String v
}
cal.set(field, iVal.intValue());
}
/**
* Converts this instance to a handy debug string.
*
* @since 3.12.0
*/
@Override
public String toString() {
return "CaseInsensitiveTextStrategy [field=" + field + ", locale=" + locale + ", lKeyValues=" + lKeyValues
+ ", pattern=" + pattern + "]";
}
}
@ -731,6 +769,7 @@ void setCalendar(final FastDateParser parser, final Calendar cal, final String v
* A strategy that handles a number field in the parsing pattern
*/
private static class NumberStrategy extends Strategy {
private final int field;
/**
@ -802,6 +841,15 @@ int modify(final FastDateParser parser, final int iValue) {
return iValue;
}
/**
* Converts this instance to a handy debug string.
*
* @since 3.12.0
*/
@Override
public String toString() {
return "NumberStrategy [field=" + field + "]";
}
}
private static final Strategy ABBREVIATED_YEAR_STRATEGY = new NumberStrategy(Calendar.YEAR) {
@ -914,6 +962,17 @@ void setCalendar(final FastDateParser parser, final Calendar cal, final String t
cal.set(Calendar.ZONE_OFFSET, tzInfo.zone.getRawOffset());
}
}
/**
* Converts this instance to a handy debug string.
*
* @since 3.12.0
*/
@Override
public String toString() {
return "TimeZoneStrategy [locale=" + locale + ", tzNames=" + tzNames + ", pattern=" + pattern + "]";
}
}
private static class ISO8601TimeZoneStrategy extends PatternStrategy {