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