ValueStoreValidator class

Пакет: com.hypixel.hytale.server.npc.valuestore

Файл: com/hypixel/hytale/server/npc/valuestore/ValueStoreValidator.java

Поля (19)

МодификаторыТипИмя
protected final BuilderContext context
private final String description
protected final String name
final EnumMap<ValueStore.Type, HashMap<String, List<ValueStoreValidator.ValueUsage>>> usages
protected final ValueStoreValidator.UseType useType
protected final ValueStore.Type valueType
ValueStoreValidator.ValueUsage var11
StringBuilder var12
ObjectListIterator var13
var13
ValueStoreValidator.ValueUsage var15
HashMap var2
boolean var2
List var3
HashMap var3
boolean var4
var4
ObjectArrayList var5
ObjectArrayList var6

Методы (11)

МодификаторыВозвратСигнатура
abstract EXCLUSIVE_WRITE EXCLUSIVE_WRITE("Has exclusive write ownership of the value")
UseType UseType(String nullxx)
public ValueUsagepublic ValueUsage(String var1, ValueStore.Type var2, ValueStoreValidator.UseType var3, BuilderContext var4)
for for(ValueStore.Type var6 : ValueStore.Type.VALUES)
public String getpublic String get()
if if(var1.useType != ValueStoreValidator.UseType.READ)
if if(var3 == null)
if if(var10.useType == ValueStoreValidator.UseType.EXCLUSIVE_WRITE)
public void registerValueUsagevoid registerValueUsage(@Nonnull ValueStoreValidator.ValueUsage var1)
public boolean validateboolean validate(@Nonnull List<String> var1)
private boolean validateTypeboolean validateType(@Nonnull ValueStore.Type var1, @Nonnull List<String> var2)

Исходный код

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

class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderContext;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectListIterator;
class="kw">import java.util.EnumMap;
class="kw">import java.util.HashMap;
class="kw">import java.util.List;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.function.Supplier;
class="kw">import javax.annotation.Nonnull;

class="kw">public class ValueStoreValidator {
   class="kw">private class="kw">final EnumMap<ValueStore.Type, HashMap<String, List<ValueStoreValidator.ValueUsage>>> usages = new EnumMap<>(ValueStore.Type.class);

   class="kw">public ValueStoreValidator() {
   }

   class="kw">public void registerValueUsage(@Nonnull ValueStoreValidator.ValueUsage var1) {
      if (var1.useType != ValueStoreValidator.UseType.READ) {
         HashMap var2 = this.usages.computeIfAbsent(var1.valueType, var0 -> new HashMap<>());
         List var3 = var2.computeIfAbsent(var1.name, var0 -> new ObjectArrayList());
         var3.add(var1);
      }
   }

   class="kw">public boolean validate(@Nonnull List<String> var1) {
      boolean var2 = true;

      for (ValueStore.Type var6 : ValueStore.Type.VALUES) {
         var2 &= this.validateType(var6, var1);
      }

      class="kw">return var2;
   }

   class="kw">private boolean validateType(@Nonnull ValueStore.Type var1, @Nonnull List<String> var2) {
      HashMap var3 = this.usages.get(var1);
      if (var3 == null) {
         class="kw">return true;
      }

      boolean var4 = true;
      ObjectArrayList var5 = new ObjectArrayList();
      ObjectArrayList var6 = new ObjectArrayList();

      for (Entry var8 : var3.entrySet()) {
         for (ValueStoreValidator.ValueUsage var10 : var8.getValue()) {
            var5.add(var10);
            if (var10.useType == ValueStoreValidator.UseType.EXCLUSIVE_WRITE) {
               var6.add(var10);
            }
         }

         if (var5.size() > 1 && !var6.isEmpty()) {
            StringBuilder var12 = new StringBuilder();
            var12.append("The core components [ ");
            ObjectListIterator var13 = var6.iterator();

            while (var13.hasNext()) {
               ValueStoreValidator.ValueUsage var11 = (ValueStoreValidator.ValueUsage)var13.next();
               var12.append(var11.context.getLabel()).append(" ");
            }

            var12.append("] require an exclusive write of the ")
               .append(var1.get())
               .append(" parameter '")
               .append(var8.getKey())
               .append("' but it is written to by [ ");
            var13 = var5.iterator();

            while (var13.hasNext()) {
               ValueStoreValidator.ValueUsage var15 = (ValueStoreValidator.ValueUsage)var13.next();
               var12.append(var15.context.getLabel()).append(" ");
            }

            var12.append("]");
            var2.add(var12.toString());
            var4 = false;
         }

         var5.clear();
         var6.clear();
      }

      class="kw">return var4;
   }

   class="kw">public enum UseType class="kw">implements Supplier<String> {
      READ("Reads the value"),
      WRITE("Writes the value"),
      EXCLUSIVE_WRITE("Has exclusive write ownership of the value");

      class="kw">private class="kw">final String description;

      UseType(String nullxx) {
         this.description = nullxx;
      }

      class="kw">public String get() {
         class="kw">return this.description;
      }
   }

   class="kw">public class="kw">static class ValueUsage {
      class="kw">protected class="kw">final String name;
      class="kw">protected class="kw">final ValueStore.Type valueType;
      class="kw">protected class="kw">final ValueStoreValidator.UseType useType;
      class="kw">protected class="kw">final BuilderContext context;

      class="kw">public ValueUsage(String var1, ValueStore.Type var2, ValueStoreValidator.UseType var3, BuilderContext var4) {
         this.name = var1;
         this.valueType = var2;
         this.useType = var3;
         this.context = var4;
      }
   }
}