From 8d1ec9f51d4b1ff5c7457d48ecede577133ed9e9 Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Tue, 17 Dec 2013 02:59:57 +0100 Subject: [PATCH] Some useful predictates --- src/com/massivecraft/mcore/PredictateAnd.java | 49 +++++++++++++++++++ .../mcore/PredictateIsntDefaultEntity.java | 24 +++++++++ 2 files changed, 73 insertions(+) create mode 100644 src/com/massivecraft/mcore/PredictateAnd.java create mode 100644 src/com/massivecraft/mcore/PredictateIsntDefaultEntity.java diff --git a/src/com/massivecraft/mcore/PredictateAnd.java b/src/com/massivecraft/mcore/PredictateAnd.java new file mode 100644 index 00000000..2fa3369c --- /dev/null +++ b/src/com/massivecraft/mcore/PredictateAnd.java @@ -0,0 +1,49 @@ +package com.massivecraft.mcore; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +public class PredictateAnd implements Predictate +{ + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + @SafeVarargs + public static PredictateAnd get(Predictate... predictates) { return new PredictateAnd(predictates); } + @SafeVarargs + public PredictateAnd(Predictate... predictates) + { + this(Arrays.asList(predictates)); + } + + public static PredictateAnd get(Collection> predictates) { return new PredictateAnd(predictates); } + public PredictateAnd(Collection> predictates) + { + this.predictates = Collections.unmodifiableList(new ArrayList>(predictates)); + } + + // -------------------------------------------- // + // FIELDS + // -------------------------------------------- // + + private final List> predictates; + public List> getPredictates() { return this.predictates; } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public boolean apply(T type) + { + for (Predictate predictate : this.getPredictates()) + { + if (!predictate.apply(type)) return false; + } + return true; + } + +} diff --git a/src/com/massivecraft/mcore/PredictateIsntDefaultEntity.java b/src/com/massivecraft/mcore/PredictateIsntDefaultEntity.java new file mode 100644 index 00000000..536be52c --- /dev/null +++ b/src/com/massivecraft/mcore/PredictateIsntDefaultEntity.java @@ -0,0 +1,24 @@ +package com.massivecraft.mcore; + +import com.massivecraft.mcore.store.Entity; + +public class PredictateIsntDefaultEntity implements Predictate> +{ + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + + private static PredictateIsntDefaultEntity i = new PredictateIsntDefaultEntity(); + public static PredictateIsntDefaultEntity get() { return i; } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public boolean apply(Entity entity) + { + return !entity.isDefault(); + } + +}