// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package org.apache.commons.lang3.time; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; import org.apache.commons.lang3.StringUtils; public class DurationFormatUtils { static class Token { private int count; private final Object value; static boolean containsTokenWithValue(Token atoken[], Object obj) { int j = atoken.length; for (int i = 0; i < j; i++) { if (atoken[i].getValue() == obj) { return true; } } return false; } public boolean equals(Object obj) { if (obj instanceof Token) { obj = (Token)obj; break MISSING_BLOCK_LABEL_12; } _L1: return false; if (value.getClass() == ((Token) (obj)).value.getClass() && count == ((Token) (obj)).count) { if (value instanceof StringBuilder) { return value.toString().equals(((Token) (obj)).value.toString()); } if (value instanceof Number) { return value.equals(((Token) (obj)).value); } if (value == ((Token) (obj)).value) { return true; } } goto _L1 } int getCount() { return count; } Object getValue() { return value; } public int hashCode() { return value.hashCode(); } void increment() { count = count + 1; } public String toString() { return StringUtils.repeat(value.toString(), count); } Token(Object obj) { value = obj; count = 1; } Token(Object obj, int i) { value = obj; count = i; } } static final Object H = "H"; public static final String ISO_EXTENDED_FORMAT_PATTERN = "'P'yyyy'Y'M'M'd'DT'H'H'm'M's.S'S'"; static final Object M = "M"; static final Object S = "S"; static final Object d = "d"; static final Object m = "m"; static final Object s = "s"; static final Object y = "y"; public DurationFormatUtils() { } static String format(Token atoken[], long l, long l1, long l2, long l3, long l4, long l5, long l6, boolean flag) { StringBuilder stringbuilder = new StringBuilder(); boolean flag1 = false; int k = atoken.length; int j = 0; do { if (j < k) { Token token = atoken[j]; Object obj = token.getValue(); int i1 = token.getCount(); int i; if (obj instanceof StringBuilder) { stringbuilder.append(obj.toString()); i = ((flag1) ? 1 : 0); } else if (obj == y) { stringbuilder.append(paddedValue(l, flag, i1)); i = 0; } else if (obj == M) { stringbuilder.append(paddedValue(l1, flag, i1)); i = 0; } else if (obj == d) { stringbuilder.append(paddedValue(l2, flag, i1)); i = 0; } else if (obj == H) { stringbuilder.append(paddedValue(l3, flag, i1)); i = 0; } else if (obj == m) { stringbuilder.append(paddedValue(l4, flag, i1)); i = 0; } else if (obj == s) { stringbuilder.append(paddedValue(l5, flag, i1)); i = 1; } else { i = ((flag1) ? 1 : 0); if (obj == S) { if (flag1) { if (flag) { i = Math.max(3, i1); } else { i = 3; } stringbuilder.append(paddedValue(l6, true, i)); } else { stringbuilder.append(paddedValue(l6, flag, i1)); } i = 0; } } } else { return stringbuilder.toString(); } j++; flag1 = i; } while (true); } public static String formatDuration(long l, String s1) { return formatDuration(l, s1, true); } public static String formatDuration(long l, String s1, boolean flag) { s1 = lexx(s1); long l2 = 0L; long l3 = 0L; long l4 = 0L; long l5 = 0L; long l1 = l; l = l1; if (Token.containsTokenWithValue(s1, d)) { l2 = l1 / 0x5265c00L; l = l1 - 0x5265c00L * l2; } l1 = l; if (Token.containsTokenWithValue(s1, H)) { l3 = l / 0x36ee80L; l1 = l - 0x36ee80L * l3; } l = l1; if (Token.containsTokenWithValue(s1, m)) { l4 = l1 / 60000L; l = l1 - 60000L * l4; } l1 = l; if (Token.containsTokenWithValue(s1, s)) { l5 = l / 1000L; l1 = l - 1000L * l5; } return format(s1, 0L, 0L, l2, l3, l4, l5, l1, flag); } public static String formatDurationHMS(long l) { return formatDuration(l, "H:mm:ss.SSS"); } public static String formatDurationISO(long l) { return formatDuration(l, "'P'yyyy'Y'M'M'd'DT'H'H'm'M's.S'S'", false); } public static String formatDurationWords(long l, boolean flag, boolean flag1) { String s1 = formatDuration(l, "d' days 'H' hours 'm' minutes 's' seconds'"); String s2 = s1; if (flag) { s2 = (new StringBuilder()).append(" ").append(s1).toString(); String s5 = StringUtils.replaceOnce(s2, " 0 days", ""); s1 = s2; if (s5.length() != s2.length()) { s2 = s5; s5 = StringUtils.replaceOnce(s2, " 0 hours", ""); s1 = s2; if (s5.length() != s2.length()) { s5 = StringUtils.replaceOnce(s5, " 0 minutes", ""); s2 = s5; s1 = s2; if (s5.length() != s2.length()) { s1 = StringUtils.replaceOnce(s5, " 0 seconds", ""); } } } s2 = s1; if (s1.length() != 0) { s2 = s1.substring(1); } } s1 = s2; if (flag1) { String s6 = StringUtils.replaceOnce(s2, " 0 seconds", ""); s1 = s2; if (s6.length() != s2.length()) { String s3 = s6; s6 = StringUtils.replaceOnce(s3, " 0 minutes", ""); s1 = s3; if (s6.length() != s3.length()) { String s4 = s6; s6 = StringUtils.replaceOnce(s4, " 0 hours", ""); s1 = s4; if (s6.length() != s4.length()) { s1 = StringUtils.replaceOnce(s6, " 0 days", ""); } } } } return StringUtils.replaceOnce(StringUtils.replaceOnce(StringUtils.replaceOnce(StringUtils.replaceOnce((new StringBuilder()).append(" ").append(s1).toString(), " 1 seconds", " 1 second"), " 1 minutes", " 1 minute"), " 1 hours", " 1 hour"), " 1 days", " 1 day").trim(); } public static String formatPeriod(long l, long l1, String s1) { return formatPeriod(l, l1, s1, true, TimeZone.getDefault()); } public static String formatPeriod(long l, long l1, String s1, boolean flag, TimeZone timezone) { s1 = lexx(s1); Calendar calendar = Calendar.getInstance(timezone); calendar.setTime(new Date(l)); timezone = Calendar.getInstance(timezone); timezone.setTime(new Date(l1)); int k = timezone.get(14) - calendar.get(14); int j = timezone.get(13) - calendar.get(13); int j1 = timezone.get(12) - calendar.get(12); int k1 = timezone.get(11) - calendar.get(11); int i2 = timezone.get(5) - calendar.get(5); int j3 = timezone.get(2) - calendar.get(2); int j2 = timezone.get(1) - calendar.get(1); int i; int i1; do { i = j1; i1 = j; if (k >= 0) { break; } k += 1000; j--; } while (true); do { j = k1; j1 = i; if (i1 >= 0) { break; } i1 += 60; i--; } while (true); do { i = i2; k1 = j; if (j1 >= 0) { break; } j1 += 60; j--; } while (true); while (k1 < 0) { k1 += 24; i--; } if (Token.containsTokenWithValue(s1, M)) { i2 = j3; int k2 = i; do { i = i2; j = j2; if (k2 >= 0) { break; } k2 += calendar.getActualMaximum(5); i2--; calendar.add(2, 1); } while (true); while (i < 0) { i += 12; j--; } j3 = k2; i2 = i; j2 = j; if (!Token.containsTokenWithValue(s1, y)) { j3 = k2; i2 = i; j2 = j; if (j != 0) { do { j3 = k2; i2 = i; j2 = j; if (j == 0) { break; } i += j * 12; j = 0; } while (true); } } } else { j = i; int l2 = j2; if (!Token.containsTokenWithValue(s1, y)) { j2 = timezone.get(1); j = i; i2 = j2; if (j3 < 0) { i2 = j2 - 1; j = i; } while (calendar.get(1) != i2) { j += calendar.getActualMaximum(6) - calendar.get(6); i = j; if (calendar instanceof GregorianCalendar) { i = j; if (calendar.get(2) == 1) { i = j; if (calendar.get(5) == 29) { i = j + 1; } } } calendar.add(1, 1); j = i + calendar.get(6); } l2 = 0; } for (; calendar.get(2) != timezone.get(2); calendar.add(2, 1)) { j += calendar.getActualMaximum(5); } i = 0; do { j3 = j; i2 = i; j2 = l2; if (j >= 0) { break; } j += calendar.getActualMaximum(5); i--; calendar.add(2, 1); } while (true); } int i3 = j3; i = k1; if (!Token.containsTokenWithValue(s1, d)) { i = k1 + j3 * 24; i3 = 0; } k1 = i; j = j1; if (!Token.containsTokenWithValue(s1, H)) { j = j1 + i * 60; k1 = 0; } j1 = j; i = i1; if (!Token.containsTokenWithValue(s1, m)) { i = i1 + j * 60; j1 = 0; } i1 = k; j = i; if (!Token.containsTokenWithValue(s1, s)) { i1 = k + i * 1000; j = 0; } return format(s1, j2, i2, i3, k1, j1, j, i1, flag); } public static String formatPeriodISO(long l, long l1) { return formatPeriod(l, l1, "'P'yyyy'Y'M'M'd'DT'H'H'm'M's.S'S'", false, TimeZone.getDefault()); } static Token[] lexx(String s1) { StringBuilder stringbuilder; Token token; ArrayList arraylist; boolean flag; int i; arraylist = new ArrayList(s1.length()); flag = false; stringbuilder = null; token = null; i = 0; _L2: char c; Object obj1; boolean flag1; if (i >= s1.length()) { break MISSING_BLOCK_LABEL_356; } c = s1.charAt(i); if (!flag || c == '\'') { break; /* Loop/switch isn't completed */ } stringbuilder.append(c); obj1 = token; flag1 = flag; _L12: i++; flag = flag1; token = ((Token) (obj1)); if (true) goto _L2; else goto _L1 _L1: Object obj = null; c; JVM INSTR lookupswitch 8: default 160 // 39: 245 // 72: 307 // 77: 293 // 83: 328 // 100: 300 // 109: 314 // 115: 321 // 121: 286; goto _L3 _L4 _L5 _L6 _L7 _L8 _L9 _L10 _L11 _L7: break MISSING_BLOCK_LABEL_328; _L3: obj1 = stringbuilder; if (stringbuilder == null) { obj1 = new StringBuilder(); arraylist.add(new Token(obj1)); } ((StringBuilder) (obj1)).append(c); stringbuilder = ((StringBuilder) (obj1)); _L13: flag1 = flag; obj1 = token; if (obj != null) { if (token != null && token.getValue() == obj) { token.increment(); } else { token = new Token(obj); arraylist.add(token); } stringbuilder = null; flag1 = flag; obj1 = token; } goto _L12 _L4: if (flag) { stringbuilder = null; flag = false; } else { stringbuilder = new StringBuilder(); arraylist.add(new Token(stringbuilder)); flag = true; } goto _L13 _L11: obj = y; goto _L13 _L6: obj = M; goto _L13 _L8: obj = d; goto _L13 _L5: obj = H; goto _L13 _L9: obj = m; goto _L13 _L10: obj = s; goto _L13 obj = S; goto _L13 if (flag) { throw new IllegalArgumentException((new StringBuilder()).append("Unmatched quote in format: ").append(s1).toString()); } return (Token[])arraylist.toArray(new Token[arraylist.size()]); goto _L12 } private static String paddedValue(long l, boolean flag, int i) { String s2 = Long.toString(l); String s1 = s2; if (flag) { s1 = StringUtils.leftPad(s2, i, '0'); } return s1; } }