1 31 32 package org.opencms.importexport; 33 34 import org.opencms.file.CmsObject; 35 import org.opencms.main.OpenCms; 36 import org.opencms.util.CmsStringUtil; 37 import org.opencms.xml.CmsXmlException; 38 import org.opencms.xml.CmsXmlUtils; 39 import org.opencms.xml.page.CmsXmlPage; 40 41 import java.util.Iterator ; 42 import java.util.Locale ; 43 44 import org.dom4j.Document; 45 import org.dom4j.Element; 46 import org.dom4j.Node; 47 48 57 public final class CmsXmlPageConverter { 58 59 62 private CmsXmlPageConverter() { 63 64 } 66 67 78 public static CmsXmlPage convertToXmlPage(CmsObject cms, byte[] content, Locale locale, String encoding) 79 throws CmsImportExportException, CmsXmlException { 80 81 CmsXmlPage xmlPage = null; 82 83 Document page = CmsXmlUtils.unmarshalHelper(content, null); 84 85 Element xmltemplate = page.getRootElement(); 86 if (xmltemplate == null || !"XMLTEMPLATE".equals(xmltemplate.getName())) { 87 throw new CmsImportExportException(Messages.get().container(Messages.ERR_NOT_FOUND_ELEM_XMLTEMPLATE_0)); 88 } 89 90 Iterator i = xmltemplate.elementIterator("edittemplate"); 92 boolean useEditTemplates = true; 93 if (!i.hasNext()) { 94 i = xmltemplate.elementIterator("TEMPLATE"); 96 useEditTemplates = false; 97 } 98 99 xmlPage = new CmsXmlPage(locale, encoding); 101 102 while (i.hasNext()) { 103 Element currentTemplate = (Element)i.next(); 104 String bodyName = currentTemplate.attributeValue("name"); 105 if (CmsStringUtil.isEmpty(bodyName)) { 106 bodyName = "body"; 108 } 109 String bodyContent = null; 110 111 if (useEditTemplates) { 112 bodyContent = currentTemplate.getText(); 114 } else { 115 if (currentTemplate != null) { 117 StringBuffer contentBuffer = new StringBuffer (); 118 for (Iterator k = currentTemplate.nodeIterator(); k.hasNext();) { 119 Node n = (Node)k.next(); 120 if (n.getNodeType() == Node.CDATA_SECTION_NODE) { 121 contentBuffer.append(n.getText()); 122 continue; 123 } else if (n.getNodeType() == Node.ELEMENT_NODE) { 124 if ("LINK".equals(n.getName())) { 125 contentBuffer.append(OpenCms.getSystemInfo().getOpenCmsContext()); 126 contentBuffer.append(n.getText()); 127 continue; 128 } 129 } 130 } 131 bodyContent = contentBuffer.toString(); 132 } 133 } 134 135 if (bodyContent == null) { 136 throw new CmsImportExportException(Messages.get().container(Messages.ERR_BODY_CONTENT_NOT_FOUND_0)); 137 } 138 139 bodyContent = CmsStringUtil.substitute( 140 bodyContent, 141 CmsStringUtil.MACRO_OPENCMS_CONTEXT, 142 OpenCms.getSystemInfo().getOpenCmsContext()); 143 144 if (!"".equals(bodyContent.trim())) { 145 xmlPage.addValue(bodyName, locale); 146 xmlPage.setStringValue(cms, bodyName, locale, bodyContent); 147 } 148 } 149 150 return xmlPage; 151 152 } 153 } | Popular Tags |