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 }