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);
   }
}