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 }