FormatUtil class
Пакет: com.hypixel.hytale.common.util
Файл: com/hypixel/hytale/common/util/FormatUtil.java
Поля (34)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
String[] |
NUMBER_SUFFIXES |
|
long |
var10 |
|
double |
var10 |
|
long |
var12 |
|
double |
var12 |
|
long |
var14 |
|
double |
var14 |
|
String |
var16 |
|
double |
var2 |
|
double |
var2 |
|
long |
var3 |
|
TimeUnit |
var3 |
|
int |
var3 |
|
long |
var4 |
|
int |
var4 |
|
double |
var4 |
|
double |
var4 |
|
boolean |
var4 |
|
int |
var4 |
|
TimeUnit |
var5 |
|
int |
var5 |
|
StringBuilder |
var5 |
|
double |
var6 |
|
long |
var6 |
|
double |
var6 |
|
long |
var6 |
|
AtomicLong |
var6 |
|
boolean |
var7 |
|
long |
var8 |
|
String |
var8 |
|
double |
var8 |
|
double |
var8 |
|
long |
var8 |
|
int |
var9 |
Методы (19)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
return |
bytesToStringreturn bytesToString(var0, false) |
|
|
for for(Object var6 : var2) |
static |
void |
formatArgsvoid formatArgs(@Nonnull Formatter var0, @Nonnull String var1, @Nonnull Object... var2) |
static |
void |
formatArrayvoid formatArray(@Nonnull Formatter var0, @Nonnull String var1, @Nonnull Object[] var2) |
abstract |
|
formatArray formatArray(var0, var1, var2) |
|
|
if if(var3 > DAY_AS_NANOS) |
|
|
if if(var6 && var2) |
|
|
if if(var7) |
|
|
if if(var0 < var3) |
abstract |
return |
simpleFormatreturn simpleFormat(var7, var8, var14) |
abstract |
return |
simpleFormatreturn simpleFormat(var0, 2) |
abstract |
return |
simpleFormatreturn simpleFormat(var1, var2, var8) |
abstract |
return |
simpleTimeUnitFormatreturn simpleTimeUnitFormat(var0, var1, var3, var2) |
abstract |
return |
simpleTimeUnitFormatreturn simpleTimeUnitFormat(var4, var6, var8, var1, var2, var3) |
|
return |
switchreturn switch(var0) |
|
return |
switchreturn switch(var0 % 100) |
static |
boolean |
timeToStringPartboolean timeToStringPart(@Nonnull AtomicLong var0,
@Nonnull StringBuilder var1,
boolean var2,
@Nonnull TimeUnit var3,
@Nonnull TimeUnit var4,
String var5,
boolean var6,
boolean var7) |
abstract |
return |
timeUnitToStringreturn timeUnitToString(var0, var2, false) |
abstract |
return |
timeUnitToStringreturn timeUnitToString(var0, TimeUnit.NANOSECONDS) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.common.util;
class="kw">import com.hypixel.hytale.metrics.metric.Metric;
class="kw">import java.util.Formatter;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import java.util.concurrent.atomic.AtomicLong;
class="kw">import java.util.function.DoubleUnaryOperator;
class="kw">import javax.annotation.Nonnull;
class="kw">public class FormatUtil {
class="kw">private class="kw">static class="kw">final String[] NUMBER_SUFFIXES = new String[]{"th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th"};
class="kw">public class="kw">static class="kw">final long DAY_AS_NANOS = TimeUnit.DAYS.toNanos(1L);
class="kw">public class="kw">static class="kw">final long HOUR_AS_NANOS = TimeUnit.HOURS.toNanos(1L);
class="kw">public class="kw">static class="kw">final long MINUTE_AS_NANOS = TimeUnit.MINUTES.toNanos(1L);
class="kw">public class="kw">static class="kw">final long SECOND_AS_NANOS = TimeUnit.SECONDS.toNanos(1L);
class="kw">public class="kw">static class="kw">final long MILLISECOND_AS_NANOS = TimeUnit.MILLISECONDS.toNanos(1L);
class="kw">public class="kw">static class="kw">final long MICOSECOND_AS_NANOS = TimeUnit.MICROSECONDS.toNanos(1L);
class="kw">public FormatUtil() {
}
@Nonnull
class="kw">private class="kw">static String shortString(@Nonnull TimeUnit var0) {
class="kw">return class="kw">switch (var0) {
case DAYS -> "days";
case HOURS -> "hours";
case MINUTES -> "min";
case SECONDS -> "s";
case MILLISECONDS -> "ms";
case MICROSECONDS -> "us";
case NANOSECONDS -> "ns";
};
}
@Nonnull
class="kw">public class="kw">static TimeUnit largestUnit(long var0, @Nonnull TimeUnit var2) {
long var3 = var2.toNanos(var0);
if (var3 > DAY_AS_NANOS) {
class="kw">return TimeUnit.DAYS;
} else if (var3 > HOUR_AS_NANOS) {
class="kw">return TimeUnit.HOURS;
} else if (var3 > MINUTE_AS_NANOS) {
class="kw">return TimeUnit.MINUTES;
} else if (var3 > SECOND_AS_NANOS) {
class="kw">return TimeUnit.SECONDS;
} else if (var3 > MILLISECOND_AS_NANOS) {
class="kw">return TimeUnit.MILLISECONDS;
} else {
class="kw">return var3 > MICOSECOND_AS_NANOS ? TimeUnit.MICROSECONDS : TimeUnit.NANOSECONDS;
}
}
@Nonnull
class="kw">public class="kw">static String simpleTimeUnitFormat(@Nonnull Metric var0, @Nonnull TimeUnit var1, int var2) {
TimeUnit var3 = largestUnit(Math.round(var0.getAverage()), var1);
class="kw">return simpleTimeUnitFormat(var0, var1, var3, var2);
}
@Nonnull
class="kw">public class="kw">static String simpleTimeUnitFormat(@Nonnull Metric var0, TimeUnit var1, @Nonnull TimeUnit var2, int var3) {
long var4 = var0.getMin();
double var6 = var0.getAverage();
long var8 = var0.getMax();
class="kw">return simpleTimeUnitFormat(var4, var6, var8, var1, var2, var3);
}
@Nonnull
class="kw">public class="kw">static String simpleTimeUnitFormat(long var0, double var2, long var4, TimeUnit var6, @Nonnull TimeUnit var7, int var8) {
int var9 = (int)Math.pow(10.0, var8);
long var10 = Math.round(Math.max(Math.abs(var2 - var0), Math.abs(var4 - var2)));
long var12 = var7.convert(Math.round(var2 * var9), var6);
long var14 = var7.convert(var10 * var9, var6);
String var16 = shortString(var7);
class="kw">return (double)var12 / var9 + var16 + " +/-" + (double)var14 / var9 + var16;
}
@Nonnull
class="kw">public class="kw">static String simpleTimeUnitFormat(long var0, @Nonnull TimeUnit var2, int var3) {
int var4 = (int)Math.pow(10.0, var3);
TimeUnit var5 = largestUnit(var0, var2);
long var6 = var5.convert(var0 * var4, var2);
String var8 = shortString(var5);
class="kw">return (double)var6 / var4 + var8;
}
@Nonnull
class="kw">public class="kw">static String simpleFormat(long var0, double var2, long var4, @Nonnull DoubleUnaryOperator var6, int var7) {
double var8 = var6.applyAsDouble(var2);
double var10 = Math.abs(var8 - var6.applyAsDouble(var0));
double var12 = Math.abs(var6.applyAsDouble(var4) - var8);
double var14 = Math.max(var10, var12);
class="kw">return simpleFormat(var7, var8, var14);
}
@Nonnull
class="kw">public class="kw">static String simpleFormat(@Nonnull Metric var0) {
class="kw">return simpleFormat(var0, 2);
}
@Nonnull
class="kw">public class="kw">static String simpleFormat(@Nonnull Metric var0, int var1) {
double var2 = var0.getAverage();
double var4 = Math.abs(var2 - var0.getMin());
double var6 = Math.abs(var0.getMax() - var2);
double var8 = Math.max(var4, var6);
class="kw">return simpleFormat(var1, var2, var8);
}
@Nonnull
class="kw">public class="kw">static String simpleFormat(int var0, double var1, double var3) {
int var5 = (int)Math.pow(10.0, var0);
class="kw">return (double)((long)(var1 * var5)) / var5 + " +/-" + (double)((long)(var3 * var5)) / var5;
}
@Nonnull
class="kw">public class="kw">static String timeUnitToString(@Nonnull Metric var0, @Nonnull TimeUnit var1) {
double var2 = Math.abs(var0.getAverage() - var0.getMin());
double var4 = Math.abs(var0.getMax() - var0.getAverage());
long var6 = Math.round(Math.max(var2, var4));
class="kw">return timeUnitToString(Math.round(var0.getAverage()), var1) + " +/-" + timeUnitToString(var6, var1);
}
@Nonnull
class="kw">public class="kw">static String timeUnitToString(long var0, @Nonnull TimeUnit var2) {
class="kw">return timeUnitToString(var0, var2, false);
}
@Nonnull
class="kw">public class="kw">static String timeUnitToString(long var0, @Nonnull TimeUnit var2, boolean var3) {
boolean var4 = false;
StringBuilder var5 = new StringBuilder();
AtomicLong var6 = new AtomicLong(var0);
var4 |= timeToStringPart(var6, var5, var4, var2, TimeUnit.DAYS, "days", false, var3);
boolean var7 = timeToStringPart(var6, var5, var4, var2, TimeUnit.HOURS, ":", true, var3);
var4 |= var7;
var4 |= timeToStringPart(var6, var5, var4, var2, TimeUnit.MINUTES, var7 ? ":" : "min", false, var3);
var4 |= timeToStringPart(var6, var5, var4, var2, TimeUnit.SECONDS, var7 ? "" : "sec", !var7, var3);
var4 |= timeToStringPart(var6, var5, var4, var2, TimeUnit.MILLISECONDS, "ms", true, var3);
var4 |= timeToStringPart(var6, var5, var4, var2, TimeUnit.MICROSECONDS, "us", true, var3);
var4 |= timeToStringPart(var6, var5, var4, var2, TimeUnit.NANOSECONDS, "ns", true, var3);
class="kw">return var5.toString();
}
@Nonnull
class="kw">public class="kw">static String nanosToString(long var0) {
class="kw">return timeUnitToString(var0, TimeUnit.NANOSECONDS);
}
class="kw">private class="kw">static boolean timeToStringPart(
@Nonnull AtomicLong var0,
@Nonnull StringBuilder var1,
boolean var2,
@Nonnull TimeUnit var3,
@Nonnull TimeUnit var4,
String var5,
boolean var6,
boolean var7
) {
if (var3.ordinal() > var4.ordinal()) {
class="kw">return false;
}
long var8 = var4.convert(var0.get(), var3);
var0.getAndAdd(-var3.convert(var8, var4));
if (var8 > 0L || var2 && var0.get() > 0L || !var2 && var3 == var4) {
if (var6 && var2) {
var1.append(' ');
}
var1.append(var8);
if (var7) {
var1.append(' ');
}
var1.append(var5);
class="kw">return true;
} else {
class="kw">return false;
}
}
@Nonnull
class="kw">public class="kw">static String bytesToString(long var0) {
class="kw">return bytesToString(var0, false);
}
@Nonnull
class="kw">public class="kw">static String bytesToString(long var0, boolean var2) {
int var3 = var2 ? 1000 : 1024;
if (var0 < var3) {
class="kw">return var0 + " B";
}
int var4 = (int)(Math.log(var0) / Math.log(var3));
class="kw">return String.format("%.1f %sB", var0 / Math.pow(var3, var4), (var2 ? "kMGTPE" : "KMGTPE").charAt(var4 - 1) + (var2 ? "" : "i"));
}
@Nonnull
class="kw">public class="kw">static String addNumberSuffix(int var0) {
class="kw">return class="kw">switch (var0 % 100) {
case 11, 12, 13 -> var0 + "th";
class="kw">default -> var0 + NUMBER_SUFFIXES[var0 % 10];
};
}
class="kw">public class="kw">static void formatArray(@Nonnull Formatter var0, @Nonnull String var1, @Nonnull Object[] var2) {
for (Object var6 : var2) {
var0.format(var1, var6);
}
}
class="kw">public class="kw">static void formatArgs(@Nonnull Formatter var0, @Nonnull String var1, @Nonnull Object... var2) {
formatArray(var0, var1, var2);
}
}