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}