001/**
002 *
003 * Copyright © 2014 Florian Schmaus
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 *     http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.jivesoftware.smack.sm.predicates;
018
019import java.util.Collection;
020import java.util.LinkedHashSet;
021import java.util.Set;
022
023import org.jivesoftware.smack.filter.StanzaFilter;
024import org.jivesoftware.smack.packet.Stanza;
025
026public class ShortcutPredicates implements StanzaFilter {
027
028    private final Set<StanzaFilter> predicates = new LinkedHashSet<>();
029
030    public ShortcutPredicates() {
031    }
032
033    public ShortcutPredicates(Collection<? extends StanzaFilter> predicates) {
034        this.predicates.addAll(predicates);
035    }
036
037    public boolean addPredicate(StanzaFilter predicate) {
038        return predicates.add(predicate);
039    }
040
041    public boolean removePredicate(StanzaFilter prediacte) {
042        return predicates.remove(prediacte);
043    }
044
045    @Override
046    public boolean accept(Stanza packet) {
047        for (StanzaFilter predicate : predicates) {
048            if (predicate.accept(packet)) {
049                return true;
050            }
051        }
052        return false;
053    }
054}