001 /*
002 @license.text@
003 */
004 package biz.hammurapi.util;
005
006 import java.util.Collection;
007 import java.util.Iterator;
008
009 /**
010 * Converts collection into visitable
011 * @author Pavel Vlasov
012 * @version $Revision: 1.5 $
013 */
014 public class CollectionVisitable implements Visitable {
015 private Collection collection;
016 private boolean visitCollection;
017
018 public boolean accept(Visitor visitor) {
019 if (visitor==null || collection==null) {
020 return false;
021 }
022
023 if (!visitCollection || visitor.visit(collection)) {
024 Iterator it=collection.iterator();
025 while (it.hasNext()) {
026 VisitableBase.object2visitor(it.next(), visitor);
027 }
028
029 if (visitCollection && visitor instanceof PoliteVisitor) {
030 ((PoliteVisitor) visitor).leave(collection);
031 }
032 return true;
033 }
034
035 return false;
036 }
037
038
039 /**
040 * @param collection
041 * @param visitCollection true - visitor visits the collection and its elements; false - only elements
042 */
043 public CollectionVisitable(Collection collection, boolean visitCollection) {
044 super();
045 this.collection = collection;
046 this.visitCollection=visitCollection;
047 }
048 }