Ejemplo n.º 1
0
  public static <Source, Target> Aura<Source, Target> merge(
      Collection<Aura<? super Source, ? super Target>> auras) {
    List<Aura<? super Source, ? super Target>> aurasCopy = new ArrayList<>(auras);
    ExceptionHelper.checkNotNullElements(aurasCopy, "auras");

    int count = aurasCopy.size();
    if (count == 0) {
      return (world, source, target) -> UndoableUnregisterRef.UNREGISTERED_REF;
    }
    if (count == 1) {
      // Even if it is not, it shouldn't matter because the returned aura
      // will accept anything a "<Source, Target>" would.
      @SuppressWarnings("unchecked")
      Aura<Source, Target> result = (Aura<Source, Target>) aurasCopy.get(0);
      return result;
    }

    return (world, source, target) -> {
      UndoableUnregisterRefBuilder result = new UndoableUnregisterRefBuilder(aurasCopy.size());
      for (Aura<? super Source, ? super Target> aura : aurasCopy) {
        result.addRef(aura.applyAura(world, source, target));
      }
      return result;
    };
  }
Ejemplo n.º 2
0
  public static <Entity> EntityFilter<Entity> merge(
      Collection<? extends EntityFilter<Entity>> filters) {
    List<EntityFilter<Entity>> filtersCopy = new ArrayList<>(filters);
    ExceptionHelper.checkNotNullElements(filtersCopy, "filters");

    int count = filtersCopy.size();
    if (count == 0) {
      return EntityFilters.empty();
    }
    if (count == 1) {
      return filtersCopy.get(0);
    }

    return (World world, Stream<? extends Entity> entities) -> {
      Stream<? extends Entity> currentTargets = entities;
      for (EntityFilter<Entity> filter : filtersCopy) {
        currentTargets = filter.select(world, currentTargets);
      }
      return currentTargets;
    };
  }
Ejemplo n.º 3
0
  public static <Self, T> AuraFilter<? super Self, ? super T> merge(
      Collection<? extends AuraFilter<? super Self, ? super T>> filters) {

    int filterCount = filters.size();
    if (filterCount == 0) {
      return AuraFilter.ANY;
    }
    if (filterCount == 1) {
      return filters.iterator().next();
    }

    List<AuraFilter<? super Self, ? super T>> filtersCopy = new ArrayList<>(filters);
    ExceptionHelper.checkNotNullElements(filtersCopy, "filters");

    return (World world, Self owner, T eventSource) -> {
      for (AuraFilter<? super Self, ? super T> filter : filtersCopy) {
        if (!filter.isApplicable(world, owner, eventSource)) {
          return false;
        }
      }
      return true;
    };
  }
  public ProjectInfo(Collection<Entry> entries) {
    this.entries = Collections.unmodifiableList(new ArrayList<>(entries));

    ExceptionHelper.checkNotNullElements(this.entries, "entries");
  }