001 /* 002 @license.text@ 003 */ 004 package biz.hammurapi.util; 005 006 import java.util.Arrays; 007 import java.util.Collection; 008 import java.util.Iterator; 009 import java.util.LinkedList; 010 011 /** 012 * Accepts element if all included acceptors accept. 013 * @author Pavel Vlasov 014 * @version $Revision: 1.1 $ 015 */ 016 public class CompositeAcceptor implements Acceptor { 017 private Collection acceptors=new LinkedList(); 018 019 /** 020 * Default constructor. 021 */ 022 public CompositeAcceptor() { 023 } 024 025 /** 026 * 027 */ 028 public CompositeAcceptor(Collection acceptors) { 029 if (acceptors!=null) { 030 this.acceptors.addAll(acceptors); 031 } 032 } 033 034 /** 035 * 036 */ 037 public CompositeAcceptor(Acceptor[] acceptors) { 038 if (acceptors!=null) { 039 this.acceptors.addAll(Arrays.asList(acceptors)); 040 } 041 } 042 043 public void addAcceptor(Acceptor acceptor) { 044 if (acceptor!=null) { 045 acceptors.add(acceptor); 046 } 047 } 048 049 public void removeAcceptor(Acceptor acceptor) { 050 acceptors.remove(acceptor); 051 } 052 053 /* (non-Javadoc) 054 * @see biz.hammurapi.uml.Acceptor#accept(biz.hammurapi.uml.ModelElement) 055 */ 056 public boolean accept(Object element) { 057 Iterator it=acceptors.iterator(); 058 while (it.hasNext()) { 059 Acceptor acceptor=(Acceptor) it.next(); 060 if (!acceptor.accept(element)) { 061 return false; 062 } 063 } 064 return true; 065 } 066 }