1 package com.openedit.page.manage; 2 3 import java.io.StringWriter ; 4 import java.util.Iterator ; 5 6 import org.apache.commons.logging.Log; 7 import org.apache.commons.logging.LogFactory; 8 import org.dom4j.Document; 9 import org.openedit.repository.ContentItem; 10 import org.openedit.repository.filesystem.StringItem; 11 12 import com.openedit.OpenEditException; 13 import com.openedit.page.Page; 14 import com.openedit.page.PageProperty; 15 import com.openedit.page.PageSettings; 16 import com.openedit.page.XconfConfiguration; 17 import com.openedit.util.XmlUtil; 18 19 23 public class PageSettingsToXconfWriter 24 { 25 private static final Log log = LogFactory.getLog(PageSettingsToXconfWriter.class); 26 protected XmlUtil fieldXmlUtil = new XmlUtil(); 27 31 public ContentItem createXConf(PageSettings inSetting) throws OpenEditException 32 { 33 XconfConfiguration config = new XconfConfiguration(); 35 config.setName("page"); 36 if (inSetting.getXConf().exists()) 38 { 39 config.populate(fieldXmlUtil.getXml(inSetting.getXConf().getInputStream(),inSetting.getPageCharacterEncoding())); 40 } 41 saveProperties(inSetting, config); 43 44 saveLayout(inSetting, config); 45 46 saveInnerLayout(inSetting, config); 47 48 saveGenerators(inSetting, config); 49 50 saveContentFile(inSetting, config); 51 52 StringWriter out = new StringWriter (); 53 Document root = config.asXml(); 54 fieldXmlUtil.saveXml(root, out, inSetting.getPageCharacterEncoding()); 55 56 StringItem results = new StringItem(inSetting.getPath(), out.toString(), inSetting.getPageCharacterEncoding()); 57 return results; 58 } 59 60 protected void saveProperties(PageSettings inProperties, XconfConfiguration inConfig) 61 { 62 inConfig.removeAllProperties(); 64 65 for (Iterator iter = inProperties.getProperties().values().iterator(); iter.hasNext();) 66 { 67 PageProperty element = (PageProperty) iter.next(); 68 for (Iterator iterator = element.getValues().keySet().iterator(); iterator.hasNext();) 69 { 70 String lang = (String ) iterator.next(); 71 String val = (String )element.getValues().get(lang); 72 inConfig.saveProperty(element.getName(), val, lang); 73 } 74 } 75 inConfig.removeProperty("encoding"); 76 if( inProperties.getFieldPageCharacterEncoding() != null) 77 { 78 inConfig.saveProperty("encoding",inProperties.getFieldPageCharacterEncoding(), null); 79 } 80 } 81 protected void saveLayout(PageSettings inPageSetting, XconfConfiguration inConfig) 82 { 83 String layout = inPageSetting.getFieldLayout(); 85 inConfig.removeConfigurations("layout"); 86 if (layout != null) 87 { 88 if ( Page.BLANK_LAYOUT.equals( layout ) ) 89 { 90 inConfig.addChild("layout"); 92 } 93 else 94 { 95 inConfig.addChild("layout").setValue(layout); 96 } 97 } 98 } 99 protected void saveInnerLayout(PageSettings inPageSetting, XconfConfiguration inConfig) 100 { 101 String innerLayout = inPageSetting.getFieldInnerLayout(); 103 if ( innerLayout != null && !innerLayout.equals("")) 104 { 105 inConfig.removeConfigurations("inner-layout"); 106 inConfig.addChild("inner-layout").setValue(innerLayout); 107 } 108 } 109 protected void saveGenerators(PageSettings inPageSetting, XconfConfiguration inConfig) 110 { 111 132 } 133 protected void saveContentFile(PageSettings inPageSetting, XconfConfiguration inConfig) 134 { 135 String contentfile = (String ) inPageSetting.getFieldAlternativeContentPath(); 137 138 inConfig.setContentFile(contentfile); 139 } 140 141 } 142 | Popular Tags |