001    /*
002     @license.text@
003      */
004    package biz.hammurapi.xml.dom;
005    
006    import java.util.Iterator;
007    import java.util.Map;
008    
009    import org.w3c.dom.Element;
010    
011    import biz.hammurapi.xml.dom.CompositeDomSerializer.Member;
012    
013    /**
014     * @author Pavel Vlasov
015     *
016     * @version $Revision: 1.3 $
017     */
018    public class MapDomSerializer implements Member {
019    
020            private CompositeDomSerializer owner;
021    
022            public DomSerializable toDomSerializable(final Map map) {
023                    return new DomSerializable() {
024    
025                            public void toDom(Element holder) {
026                                holder.setAttribute("type", map.getClass().getName());
027                                    if (owner!=null) {
028                                        Iterator it=map.entrySet().iterator();
029                                        while (it.hasNext()) {
030                                            Map.Entry entry=(Map.Entry) it.next();
031                                            CompositeDomSerializer stackHead = owner.getStackHead();
032                                                    DomSerializable kds=stackHead.toDomSerializable(entry.getKey());
033                                            DomSerializable vds=stackHead.toDomSerializable(entry.getValue());
034                                            
035                                            if (kds!=null && vds!=null) {
036                                                    Element ee=holder.getOwnerDocument().createElement("entry");                    
037                                                    holder.appendChild(ee);
038    
039                                                    Element ke=holder.getOwnerDocument().createElement("key");                      
040                                                    ee.appendChild(ke);
041                                                    kds.toDom( ke);
042            
043                                                    Element ve=holder.getOwnerDocument().createElement("value");                    
044                                                    ee.appendChild(ve);
045                                                    vds.toDom(ve);
046                                            }
047                                        }
048                                    }
049                            }
050                            
051                    };
052            }
053    
054            /**
055             * Callback method
056             */
057            public void setOwner(CompositeDomSerializer owner) {
058                    this.owner=owner;
059            }
060    }