KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > openedit > page > manage > PageSettingsToXconfWriter


1 package com.openedit.page.manage;
2
3 import java.io.StringWriter JavaDoc;
4 import java.util.Iterator JavaDoc;
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 /**
20  * @author cburkey
21  *
22  */

23 public class PageSettingsToXconfWriter
24 {
25     private static final Log log = LogFactory.getLog(PageSettingsToXconfWriter.class);
26     protected XmlUtil fieldXmlUtil = new XmlUtil();
27     /**
28      * @param inSetting
29      * @return
30      */

31     public ContentItem createXConf(PageSettings inSetting) throws OpenEditException
32     {
33         //need to make an xconf string
34
XconfConfiguration config = new XconfConfiguration();
35         config.setName("page");
36         //start by reading old xconf since there could be extra info in it
37
if (inSetting.getXConf().exists())
38         {
39             config.populate(fieldXmlUtil.getXml(inSetting.getXConf().getInputStream(),inSetting.getPageCharacterEncoding()));
40         }
41         //now update the config
42
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 JavaDoc out = new StringWriter JavaDoc();
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         //Updated to exsting properties
63
inConfig.removeAllProperties();
64     
65         for (Iterator JavaDoc iter = inProperties.getProperties().values().iterator(); iter.hasNext();)
66         {
67             PageProperty element = (PageProperty) iter.next();
68             for (Iterator JavaDoc iterator = element.getValues().keySet().iterator(); iterator.hasNext();)
69             {
70                 String JavaDoc lang = (String JavaDoc) iterator.next();
71                 String JavaDoc val = (String JavaDoc)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         //Save the template
84
String JavaDoc layout = inPageSetting.getFieldLayout();
85         inConfig.removeConfigurations("layout");
86         if (layout != null)
87         {
88             if ( Page.BLANK_LAYOUT.equals( layout ) )
89             {
90                 //add a blank layout
91
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         //Save the template
102
String JavaDoc 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         /** Handle this one day
112         inConfig.removeElements("generator");
113
114
115         //the choices are velocity-xslt xslt velocity jsp
116         if ( inPageSetting.getFieldGenerator() != null)
117         {
118             inPageSetting.getFieldGenerator();
119             for (Iterator iter = .iterator(); iter.hasNext();)
120             {
121                 Generator gen = (Generator) iter.next();
122                 //TODO: if ( gen instanceof NestedGenerator) handle nested and mimetypes
123                 
124                 String generator = gen.getName();
125     
126                 XMLConfiguration currentGen = (XMLConfiguration) inConfig.addChild("generator");
127                 currentGen.setAttribute("name", generator);
128                 //TODO: currentGen.setAttribute("mimetypes", generator.);
129             }
130         }
131         */

132     }
133     protected void saveContentFile(PageSettings inPageSetting, XconfConfiguration inConfig)
134     {
135         //content file
136
String JavaDoc contentfile = (String JavaDoc) inPageSetting.getFieldAlternativeContentPath();
137
138         inConfig.setContentFile(contentfile);
139     }
140
141 }
142
Popular Tags