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