2026-03-17 13:31:18 -07:00

512 lines
17 KiB
Java

/*
* Decompiled with CFR 0.152.
*/
package com.tridium.util;
import java.util.Calendar;
import java.util.HashMap;
import javax.baja.sys.BAbsTime;
import javax.baja.sys.BBoolean;
import javax.baja.sys.BFacets;
import javax.baja.sys.BMonth;
import javax.baja.sys.BObject;
import javax.baja.sys.BString;
import javax.baja.sys.BTime;
import javax.baja.sys.Context;
import javax.baja.sys.Sys;
import javax.baja.timezone.BTimeZone;
import javax.baja.util.Lexicon;
public class TimeFormat {
static final int SHOW_DATE = 1;
static final int SHOW_TIME = 2;
static final int SHOW_SECONDS = 4;
static final int SHOW_MILLIS = 8;
static final int SHOW_ZONE = 16;
static final int[] SHOW;
public static final int YEAR_2 = 1;
public static final int YEAR_4 = 2;
public static final int MON_1 = 3;
public static final int MON_2 = 4;
public static final int MON_TAG = 5;
public static final int MON = 18;
public static final int DAY_1 = 6;
public static final int DAY_2 = 7;
public static final int HOUR_12_1 = 8;
public static final int HOUR_12_2 = 9;
public static final int HOUR_24_1 = 10;
public static final int HOUR_24_2 = 11;
public static final int MIN = 12;
public static final int AM_PM = 13;
public static final int SEC = 14;
public static final int ZONE_TAG = 15;
public static final int WEEK_1 = 16;
public static final int WEEK_2 = 17;
public static final int ZONE_OFFSET = 19;
public static final int WEEK_YEAR = 20;
private static String[] PATTERNS;
static HashMap cache;
static String defaultPattern;
static final String fallbackPattern = "DD-MMM-YY h:mm:ss a z";
public static final String TIME_FORMAT = "timeFormat";
int[] pattern;
public static String format(BAbsTime bAbsTime, String string, Context context) {
context = BFacets.make(context.getFacets(), BFacets.make(TIME_FORMAT, BString.make(string)));
return TimeFormat.format(bAbsTime, context);
}
public static String format(BAbsTime bAbsTime, String string) {
BFacets bFacets = BFacets.make(TIME_FORMAT, BString.make(string));
return TimeFormat.format(bAbsTime, (Context)bFacets);
}
public static String format(BAbsTime bAbsTime, Context context) {
bAbsTime = TimeFormat.toTimeZone(bAbsTime, context);
int n = TimeFormat.toShowMask(19, context);
n = TimeFormat.normalizeShowMask(n);
return TimeFormat.make(context).format(bAbsTime, n, context);
}
public static String formatTime(BAbsTime bAbsTime, Context context) {
bAbsTime = TimeFormat.toTimeZone(bAbsTime, context);
int n = TimeFormat.toShowMask(2, context);
n |= 2;
n &= 0xFFFFFFFE;
n = TimeFormat.normalizeShowMask(n);
return TimeFormat.make(context).format(bAbsTime, n, context);
}
public static String formatDate(BAbsTime bAbsTime, Context context) {
bAbsTime = TimeFormat.toTimeZone(bAbsTime, context);
int n = TimeFormat.toShowMask(1, context);
n |= 1;
n &= 0xFFFFFFFD;
n = TimeFormat.normalizeShowMask(n);
return TimeFormat.make(context).format(bAbsTime, n, context);
}
public static String format(BTime bTime, Context context) {
int n = TimeFormat.toShowMask(2, context);
n &= 0xFFFFFFFE;
n &= 0xFFFFFFEF;
n = TimeFormat.normalizeShowMask(n);
return TimeFormat.make(context).format(bTime, n, context);
}
public static int[] pattern(Context context) {
int n = TimeFormat.toShowMask(19, context);
return TimeFormat.make(context).pattern(n);
}
public static void setDefaultPattern(String string) {
if (string != null && (string = string.trim()).length() == 0) {
string = null;
}
defaultPattern = string;
}
private static final BAbsTime toTimeZone(BAbsTime bAbsTime, Context context) {
BTimeZone bTimeZone;
if (context != null && (bTimeZone = (BTimeZone)context.getFacet("TimeZone")) != null) {
return BAbsTime.make(bAbsTime, bTimeZone);
}
return bAbsTime;
}
static TimeFormat make(Context context) {
Object object;
String string = null;
if (context != null && (object = context.getFacet(TIME_FORMAT)) != null) {
string = object.toString();
}
if (string == null || string.length() == 0) {
string = defaultPattern;
}
if (string == null || string.length() == 0) {
string = Lexicon.make(Sys.getBajaModule(), context).get(TIME_FORMAT);
}
if (string == null || string.length() == 0) {
System.out.println("ERROR: Missing baja:timeFormat lexicon entry");
string = fallbackPattern;
}
if ((object = (TimeFormat)cache.get(string)) == null) {
object = new TimeFormat(string);
cache.put(string, object);
}
return object;
}
int toCode(int n, int n2) {
switch (n) {
case 89: {
int n3 = 0;
if (n2 <= 2) {
n3 = 1;
}
return 2 - n3;
}
case 77: {
switch (n2) {
case 1: {
return 3;
}
case 2: {
return 4;
}
case 3: {
return 5;
}
}
return 18;
}
case 68: {
int n4 = 0;
if (n2 == 1) {
n4 = 1;
}
return 7 - n4;
}
case 104: {
int n5 = 0;
if (n2 == 1) {
n5 = 1;
}
return 9 - n5;
}
case 72: {
int n6 = 0;
if (n2 == 1) {
n6 = 1;
}
return 11 - n6;
}
case 109: {
return 12;
}
case 115: {
return 14;
}
case 97: {
return 13;
}
case 122: {
return 15;
}
case 90: {
return 19;
}
case 87: {
int n7 = 0;
if (n2 == 1) {
n7 = 1;
}
return 17 - n7;
}
case 119: {
return 20;
}
}
return n;
}
int[] pattern(int n) {
int[] nArray = new int[this.pattern.length];
int n2 = 0;
int n3 = -1;
int n4 = 0;
int n5 = 0;
while (n5 < this.pattern.length) {
int n6 = this.pattern[n5];
if (n6 >= SHOW.length) {
n3 = n6;
} else if ((SHOW[n6] & n) == 0) {
n3 = -1;
} else {
if (++n4 > 1 && n3 != -1) {
nArray[n2++] = n3;
n3 = -1;
}
++n4;
nArray[n2++] = n6;
}
++n5;
}
int[] nArray2 = new int[n2];
System.arraycopy(nArray, 0, nArray2, 0, n2);
return nArray2;
}
String format(BTime bTime, int n, Context context) {
return this.format(null, 0, BMonth.january, 0, bTime.getHour(), bTime.getMinute(), bTime.getSecond(), bTime.getMillisecond(), BTimeZone.getLocal(), n, context);
}
String format(BAbsTime bAbsTime, int n, Context context) {
return this.format(bAbsTime, bAbsTime.getYear(), bAbsTime.getMonth(), bAbsTime.getDay(), bAbsTime.getHour(), bAbsTime.getMinute(), bAbsTime.getSecond(), bAbsTime.getMillisecond(), bAbsTime.getTimeZone(), n, context);
}
String format(BAbsTime bAbsTime, int n, BMonth bMonth, int n2, int n3, int n4, int n5, int n6, BTimeZone bTimeZone, int n7, Context context) {
int n8 = bMonth.getOrdinal() + 1;
int[] nArray = this.pattern;
int n9 = nArray.length;
StringBuffer stringBuffer = new StringBuffer(n9 * 4);
int n10 = -1;
int n11 = -1;
int n12 = 0;
int n13 = 0;
while (n13 < n9) {
int n14 = nArray[n13];
if (n14 >= SHOW.length) {
if (n10 == -1) {
n10 = n14;
} else if (n11 == -1) {
n11 = n14;
}
} else if ((SHOW[n14] & n7) == 0) {
n11 = -1;
n10 = -1;
} else {
if (++n12 > 1 && n10 != -1) {
stringBuffer.append((char)n10);
if (n11 != -1) {
stringBuffer.append((char)n11);
}
n11 = -1;
n10 = -1;
}
++n12;
switch (n14) {
case 1: {
TimeFormat.pad(stringBuffer, n % 100);
break;
}
case 2: {
stringBuffer.append(n);
break;
}
case 3: {
stringBuffer.append(n8);
break;
}
case 4: {
TimeFormat.pad(stringBuffer, n8);
break;
}
case 5: {
stringBuffer.append(bMonth.getShortDisplayTag(context));
break;
}
case 18: {
stringBuffer.append(bMonth.toString(context));
break;
}
case 6: {
stringBuffer.append(n2);
break;
}
case 7: {
TimeFormat.pad(stringBuffer, n2);
break;
}
case 8: {
if (n3 == 0) {
stringBuffer.append("12");
break;
}
stringBuffer.append(n3 > 12 ? n3 - 12 : n3);
break;
}
case 9: {
if (n3 == 0) {
stringBuffer.append("12");
break;
}
TimeFormat.pad(stringBuffer, n3 > 12 ? n3 - 12 : n3);
break;
}
case 10: {
stringBuffer.append(n3);
break;
}
case 11: {
TimeFormat.pad(stringBuffer, n3);
break;
}
case 12: {
TimeFormat.pad(stringBuffer, n4);
break;
}
case 13: {
stringBuffer.append(n3 < 12 ? "AM" : "PM");
break;
}
case 14: {
TimeFormat.pad(stringBuffer, n5);
if ((n7 & 8) == 0) break;
stringBuffer.append('.');
if (n6 < 10) {
stringBuffer.append('0');
}
if (n6 < 100) {
stringBuffer.append('0');
}
stringBuffer.append(n6);
break;
}
case 15: {
stringBuffer.append(bTimeZone.getShortDisplayName(bAbsTime, context));
break;
}
case 19: {
int n15 = bAbsTime != null ? bAbsTime.getTimeZoneOffset() : bTimeZone.getUtcOffset(BAbsTime.now().getMillis());
if (n15 == 0) {
stringBuffer.append('Z');
break;
}
int n16 = Math.abs(n15 / 3600000);
int n17 = Math.abs(n15 % 3600000 / 60000);
if (n15 < 0) {
stringBuffer.append('-');
} else {
stringBuffer.append('+');
}
if (n16 < 10) {
stringBuffer.append('0');
}
stringBuffer.append(n16);
stringBuffer.append(":");
if (n17 < 10) {
stringBuffer.append('0');
}
stringBuffer.append(n17);
break;
}
case 16: {
stringBuffer.append(bAbsTime.getWeekday().getShortDisplayTag(context));
break;
}
case 17: {
stringBuffer.append(bAbsTime.getWeekday().getDisplayTag(context));
break;
}
case 20: {
Calendar calendar = BAbsTime.makeCalendar(n, bMonth, n2, n3, n4, n5, n6, bTimeZone, context);
stringBuffer.append(calendar.get(3));
break;
}
}
n11 = -1;
n10 = -1;
}
++n13;
}
return stringBuffer.toString();
}
static void pad(StringBuffer stringBuffer, int n) {
if (n < 10) {
stringBuffer.append('0');
}
stringBuffer.append(n);
}
static int toShowMask(int n, Context context) {
if (context != null) {
BFacets bFacets = context.getFacets();
n = TimeFormat.mask(n, bFacets, "showDate", 1);
n = TimeFormat.mask(n, bFacets, "showTime", 2);
n = TimeFormat.mask(n, bFacets, "showSeconds", 4);
n = TimeFormat.mask(n, bFacets, "showMilliseconds", 8);
n = TimeFormat.mask(n, bFacets, "showTimeZone", 16);
}
return n;
}
static int mask(int n, BFacets bFacets, String string, int n2) {
BObject bObject = bFacets.getFacet(string);
if (bObject instanceof BBoolean) {
n = ((BBoolean)bObject).getBoolean() ? (n |= n2) : (n &= ~n2);
}
return n;
}
static int normalizeShowMask(int n) {
if ((n & 2) == 0) {
n &= 0xFFFFFFE3;
}
return n;
}
public static String patternToString(int n) {
if (n < PATTERNS.length) {
return PATTERNS[n];
}
return "" + (char)n;
}
public static String patternToString(int[] nArray) {
StringBuffer stringBuffer = new StringBuffer();
int n = 0;
while (n < nArray.length) {
stringBuffer.append(TimeFormat.patternToString(nArray[n]));
++n;
}
return stringBuffer.toString();
}
TimeFormat(String string) {
if (string == null) {
string = fallbackPattern;
}
int n = string.length();
int[] nArray = new int[n];
int n2 = 0;
char c = string.charAt(0);
int n3 = 1;
int n4 = 1;
while (n4 < n) {
char c2 = string.charAt(n4);
if (c == c2) {
++n3;
} else {
nArray[n2++] = this.toCode(c, n3);
c = c2;
n3 = 1;
}
++n4;
}
nArray[n2++] = this.toCode(c, n3);
this.pattern = new int[n2];
System.arraycopy(nArray, 0, this.pattern, 0, n2);
}
static {
int[] nArray = new int[21];
nArray[1] = 1;
nArray[2] = 1;
nArray[3] = 1;
nArray[4] = 1;
nArray[5] = 1;
nArray[6] = 1;
nArray[7] = 1;
nArray[8] = 2;
nArray[9] = 2;
nArray[10] = 2;
nArray[11] = 2;
nArray[12] = 2;
nArray[13] = 2;
nArray[14] = 12;
nArray[15] = 16;
nArray[16] = 1;
nArray[17] = 1;
nArray[18] = 1;
nArray[19] = 16;
nArray[20] = 1;
SHOW = nArray;
PATTERNS = new String[]{"?", "YY", "YYYY", "M", "MM", "MMM", "D", "DD", "h", "hh", "H", "HH", "mm", "a", "ss", "z", "W", "WW", "MMMM", "Z", "w"};
cache = new HashMap();
defaultPattern = null;
}
}