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 }