KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openedit > blog > archive > BlogArchive


1 /*
2  * Created on Feb 21, 2006
3  */

4 package org.openedit.blog.archive;
5
6 import java.io.IOException JavaDoc;
7 import java.io.Reader JavaDoc;
8 import java.io.Writer JavaDoc;
9 import java.util.ArrayList JavaDoc;
10 import java.util.Iterator JavaDoc;
11 import java.util.List JavaDoc;
12
13 import org.apache.commons.logging.Log;
14 import org.apache.commons.logging.LogFactory;
15 import org.dom4j.Document;
16 import org.dom4j.DocumentHelper;
17 import org.dom4j.Element;
18 import org.dom4j.io.OutputFormat;
19 import org.dom4j.io.XMLWriter;
20 import org.openedit.links.Link;
21 import org.openedit.repository.filesystem.StringItem;
22
23 import com.openedit.OpenEditException;
24 import com.openedit.blog.Blog;
25 import com.openedit.blog.BlogEntry;
26 import com.openedit.blog.Question;
27 import com.openedit.config.XMLConfiguration;
28 import com.openedit.page.Page;
29
30 public class BlogArchive extends BaseArchive
31 {
32     protected EntryArchive fieldEntryArchive;
33     
34     private static final Log log = LogFactory.getLog(BlogArchive.class);
35     
36
37     public void loadBlog(Blog inBlog) throws OpenEditException
38     {
39         Page settings = getPageManager().getPage(inBlog.getBlogHome() + "/blogsettings.xml");
40         //read in some XML
41
Reader JavaDoc read = settings.getReader();
42
43         inBlog.setPageManager(getPageManager());
44         inBlog.setUserManager(getUserManager());
45         inBlog.setEntryArchive(getEntryArchive());
46         Element root = null;
47             root = getXmlUtil().getXml(read, "UTF-8");
48         
49         inBlog.setTitle( root.elementText("title") );
50         inBlog.setHostName(root.elementText("hostname"));
51         inBlog.setAuthor(root.elementText("author"));
52         inBlog.setDescription(root.elementText("description"));
53         inBlog.setAllowAnonymous("true".equals(root.elementText("allow-anonymous-comments")));
54         String JavaDoc dir = root.elementText("archive-root-directory");
55         if( dir != null)
56         {
57             if( dir.endsWith("/"))
58             {
59                 dir = dir.substring(0,dir.length() - 1);
60             }
61             inBlog.setArchiveRootDirectory(dir);
62         }
63         else
64         {
65             inBlog.setArchiveRootDirectory(inBlog.getBlogHome() + "/permalink");
66         }
67         
68         //inBlog.setBlogRoot(root.elementText("blogroot"));
69
String JavaDoc autoPublishCommentsStr = root.elementText("auto-publish-comments");
70         if ( autoPublishCommentsStr == null )
71         {
72             inBlog.setAutoPublishingComments( true );
73         }
74         else
75         {
76             inBlog.setAutoPublishingComments(Boolean.parseBoolean(autoPublishCommentsStr));
77         }
78         inBlog.setAutoPublishEntries(Boolean.parseBoolean( root.elementText("auto-publish-entries") ) );
79         inBlog.setUseNotification(Boolean.parseBoolean( root.elementText("use-notification") ) );
80             
81         List JavaDoc questions = new ArrayList JavaDoc();
82         for (Iterator JavaDoc iter = root.elementIterator("question"); iter.hasNext();)
83         {
84             Element q = (Element) iter.next();
85             Question ques = new Question();
86             ques.setId(q.attributeValue("id"));
87             ques.setDescription(q.attributeValue("description"));
88             ques.setAnswer(q.attributeValue("answer"));
89             questions.add(ques);
90         }
91         inBlog.setQuestions(questions);
92         getEntryArchive().loadLinks(inBlog);
93     }
94     
95     public void saveBlog(Blog inBlog, Writer JavaDoc inWriter, String JavaDoc inEncoding) throws IOException JavaDoc
96     {
97         Element root = DocumentHelper.createElement("blog");
98         root.addElement("title").setText(inBlog.getTitle());
99         root.addElement("hostname").setText(inBlog.getHostName());
100         root.addElement("author").setText(inBlog.getAuthor());
101         root.addElement("description").setText(inBlog.getDescription());
102         //root.addElement("blogroot").setText(inBlog.getBlogRoot());
103
root.addElement("allow-anonymous-comments").setText(String.valueOf(inBlog.getAllowAnonymous()));
104         root.addElement("auto-publish-comments").setText(String.valueOf(inBlog.isAutoPublishingComments()));
105         
106         root.addElement("archive-root-directory").setText(inBlog.getArchiveRootDirectory());
107         
108         
109         Document doc = DocumentHelper.createDocument( root );
110         
111         OutputFormat format = OutputFormat.createPrettyPrint();
112         format.setEncoding( inEncoding );
113         new XMLWriter( inWriter, format ).write( doc );
114     }
115     
116     public void saveEntry(Blog inBlog, BlogEntry inEntry) throws OpenEditException
117     {
118         Page page = getPageManager().getPage(inEntry.getPath());
119         String JavaDoc content = "";
120         if ( inEntry.getDescription() != null)
121         {
122             content = inEntry.getDescription().getValue();
123         }
124         StringItem item = new StringItem(inEntry.getPath(),content,"UTF-8");
125         page.setContentItem(item);
126         getPageManager().putPage(page);
127         
128         //save the xconf
129
XMLConfiguration pageconfig = new XMLConfiguration("page");
130         XMLConfiguration blog = (XMLConfiguration)pageconfig.addChild("blog");
131         blog.setAttribute("author",inEntry.getAuthor());
132         blog.setAttribute("username",inEntry.getUser().getUserName());
133         
134         blog.setAttribute("title",inEntry.getTitle());
135         blog.addChild("publishdate").setValue(inEntry.getGmtStandard().format(inEntry.getPublishedDate()));
136         blog.addChild("visible").setValue(String.valueOf(inEntry.isVisible()));
137         
138         StringItem xconf = new StringItem(page.getPageSettings().getXConf().getPath(),pageconfig.toXml("UTF-8"),"UTF-8");
139         getPageManager().getPageSettingsManager().saveSetting(xconf);
140         getPageManager().clearCache(page);
141         
142         Link existing = inEntry.getLinkTree().getLink(inEntry.getId());
143         if ( existing == null)
144         {
145             //add it to the link.xml file
146
Link link = new Link();
147             link.setId(inEntry.getId());
148             link.setPath(inEntry.getPath());
149             //getLinkTree().removeLink(link);
150
inEntry.getLinkTree().insertLink("index",link);
151         }
152         getEntryArchive().saveLinks(inBlog);
153
154     
155     }
156
157     public EntryArchive getEntryArchive()
158     {
159         return fieldEntryArchive;
160     }
161
162     public void setEntryArchive(EntryArchive inEntryArchive)
163     {
164         fieldEntryArchive = inEntryArchive;
165     }
166
167 }
168
Popular Tags