001package org.biopax.paxtools.util;
002
003import java.util.Set;
004
005
006/**
007 * A FilterSet that filters based on the class. For example, it is useful for creating a Set of Proteins from a
008 * Set of BioPAXElements.
009 * @param <E> Superset's type e.g. BioPAXElement
010 * @param <F> Subset's type e.g. Protein. F must extend E
011 */
012public class ClassFilterSet<E, F extends E> extends AbstractFilterSet<E, F>
013{
014// ------------------------------ FIELDS ------------------------------
015protected Class<F> filterClass;
016
017        // --------------------------- CONSTRUCTORS ---------------------------
018
019        public ClassFilterSet(Set<? extends E> baseSet,Class<F> filterClass)
020        {
021                super(baseSet);
022                this.filterClass = filterClass;
023
024        }
025
026        /**
027         * This filter method implementation filters based on isInstance function.
028         * @param value Object to be tested
029         * @return true if value is instance of F.
030         */
031        @Override public boolean filter(E value)
032        {
033                return filterClass.isInstance(value);
034        }
035
036}