1 24 package org.riotfamily.components.export; 25 26 import java.util.Collection ; 27 import java.util.Iterator ; 28 import java.util.Map ; 29 30 import org.riotfamily.common.xml.XmlUtils; 31 import org.riotfamily.components.ComponentList; 32 import org.w3c.dom.Document ; 33 import org.w3c.dom.Element ; 34 35 41 public class XmlExport { 42 43 private boolean useCustomTagNames = true; 44 45 private SimpleListBuilder builder = new SimpleListBuilder(); 46 47 52 public void setUseCustomTagNames(boolean useCustomTagNames) { 53 this.useCustomTagNames = useCustomTagNames; 54 } 55 56 public Element createElement(Collection lists, boolean preview) { 57 Document doc = XmlUtils.createDocument(); 58 Element ele = doc.createElement("lists"); 59 Iterator it = lists.iterator(); 60 while (it.hasNext()) { 61 ComponentList list = (ComponentList) it.next(); 62 SimpleComponentList simpleList = builder.buildSimpleList(list, preview); 63 ele.appendChild(createListElement(simpleList, doc)); 64 } 65 return ele; 66 } 67 68 public Element createElement(ComponentList list, boolean preview) { 69 SimpleComponentList simpleList = builder.buildSimpleList(list, preview); 70 Document doc = XmlUtils.createDocument(); 71 return createListElement(simpleList, doc); 72 } 73 74 private Element createListElement(SimpleComponentList list, Document doc) { 75 Element ele = doc.createElement("list"); 76 ele.setAttribute("path", list.getLocation().getPath()); 77 ele.setAttribute("slot", list.getLocation().getSlot()); 78 ele.setAttribute("type", list.getLocation().getType()); 79 Iterator it = list.getComponents().iterator(); 80 while (it.hasNext()) { 81 SimpleComponent component = (SimpleComponent) it.next(); 82 ele.appendChild(createComponentElement(component, doc)); 83 } 84 return ele; 85 } 86 87 private Element createComponentElement(SimpleComponent component, Document doc) { 88 Element ele; 89 if (useCustomTagNames) { 90 ele = doc.createElement(component.getType()); 91 } 92 else { 93 ele = doc.createElement("component"); 94 ele.setAttribute("type", component.getType()); 95 } 96 Iterator it = component.getStringProperties().entrySet().iterator(); 97 while (it.hasNext()) { 98 Map.Entry entry = (Map.Entry ) it.next(); 99 String key = (String ) entry.getKey(); 100 String value = (String ) entry.getValue(); 101 ele.appendChild(createPropertyElement(key, value, doc)); 102 } 103 return ele; 104 } 105 106 private Element createPropertyElement(String name, String value, Document doc) { 107 Element ele; 108 if (useCustomTagNames) { 109 ele = doc.createElement(name); 110 } 111 else { 112 ele = doc.createElement("property"); 113 ele.setAttribute("name", name); 114 } 115 ele.appendChild(doc.createCDATASection(value)); 116 return ele; 117 } 118 } 119 | Popular Tags |