TemporalSequenceValidator class

Пакет: com.hypixel.hytale.server.npc.asset.builder.validators

Файл: com/hypixel/hytale/server/npc/asset/builder/validators/TemporalSequenceValidator.java

extends: TemporalArrayValidator

Поля (8)

МодификаторыТипИмя
final RelationalOperator relationLower
LocalDateTime var2
LocalDateTime var3
LocalDateTime var4
boolean var5
TemporalAmount var7
LocalDateTime var8
LocalDateTime var9

Методы (6)

МодификаторыВозвратСигнатура
static boolean compareboolean compare(@Nonnull LocalDateTime var0, @Nonnull RelationalOperator var1, LocalDateTime var2)
for for(int var6 = 0; var6 < var1.length; var6++)
if if(var7 instanceof Period && !var5)
if if(var7 instanceof Duration && var5)
if if(var6 > 0 && this.relationSequence != null)
return switchreturn switch(var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.asset.builder.validators;

class="kw">import com.hypixel.hytale.server.core.modules.time.WorldTimeResource;
class="kw">import java.time.Duration;
class="kw">import java.time.LocalDateTime;
class="kw">import java.time.Period;
class="kw">import java.time.temporal.TemporalAmount;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;

class="kw">public class TemporalSequenceValidator class="kw">extends TemporalArrayValidator {
   class="kw">private class="kw">final RelationalOperator relationLower;
   class="kw">private class="kw">final TemporalAmount lower;
   class="kw">private class="kw">final RelationalOperator relationUpper;
   class="kw">private class="kw">final TemporalAmount upper;
   class="kw">private class="kw">final RelationalOperator relationSequence;

   class="kw">private TemporalSequenceValidator(RelationalOperator var1, TemporalAmount var2, RelationalOperator var3, TemporalAmount var4, RelationalOperator var5) {
      this.lower = var2;
      this.upper = var4;
      this.relationLower = var1;
      this.relationUpper = var3;
      this.relationSequence = var5;
   }

   @Nonnull
   class="kw">public class="kw">static TemporalSequenceValidator betweenMonotonic(TemporalAmount var0, TemporalAmount var1) {
      class="kw">return new TemporalSequenceValidator(RelationalOperator.GreaterEqual, var0, RelationalOperator.LessEqual, var1, RelationalOperator.Less);
   }

   @Nonnull
   class="kw">public class="kw">static TemporalSequenceValidator betweenWeaklyMonotonic(TemporalAmount var0, TemporalAmount var1) {
      class="kw">return new TemporalSequenceValidator(RelationalOperator.GreaterEqual, var0, RelationalOperator.LessEqual, var1, RelationalOperator.LessEqual);
   }

   class="kw">public class="kw">static boolean compare(@Nonnull LocalDateTime var0, @Nonnull RelationalOperator var1, LocalDateTime var2) {
      class="kw">return class="kw">switch (var1) {
         case NotEqual -> !var0.equals(var2);
         case Less -> var0.isBefore(var2);
         case LessEqual -> !var0.isAfter(var2);
         case Greater -> var0.isAfter(var2);
         case GreaterEqual -> !var0.isBefore(var2);
         case Equal -> var0.equals(var2);
      };
   }

   @Override
   class="kw">public boolean test(@Nonnull TemporalAmount[] var1) {
      LocalDateTime var2 = LocalDateTime.ofInstant(WorldTimeResource.ZERO_YEAR, WorldTimeResource.ZONE_OFFSET);
      LocalDateTime var3 = var2.plus(this.lower);
      LocalDateTime var4 = var2.plus(this.upper);
      boolean var5 = var1[0] class="kw">instanceof Period;

      for (int var6 = 0; var6 < var1.length; var6++) {
         TemporalAmount var7 = var1[var6];
         if (var7 class="kw">instanceof Period && !var5) {
            class="kw">return false;
         }

         if (var7 class="kw">instanceof Duration && var5) {
            class="kw">return false;
         }

         LocalDateTime var8 = var2.plus(var1[var6]);
         if (!compare(var8, this.relationLower, var3) && compare(var8, this.relationUpper, var4)) {
            class="kw">return false;
         }

         if (var6 > 0 && this.relationSequence != null) {
            LocalDateTime var9 = var2.plus(var1[var6 - 1]);
            if (!compare(var9, this.relationSequence, var8)) {
               class="kw">return false;
            }
         }
      }

      class="kw">return true;
   }

   @Nonnull
   @Override
   class="kw">public String errorMessage(String var1, TemporalAmount[] var2) {
      class="kw">return var1
         + (this.relationLower == null ? "" : " values should be " + this.relationLower.asText() + " " + this.lower + " and")
         + (this.relationUpper == null ? "" : " values should be " + this.relationUpper.asText() + " " + this.upper + " and")
         + (this.relationSequence == null ? "" : " succeeding values should be " + this.relationSequence.asText() + " preceding values and")
         + " values must all either be periods or durations but is "
         + Arrays.toString(var2);
   }
}