package com.eamoi.ajax;
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.*;
import org.jdom.*;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
public class BlogService {
private Document blogdom;
private Document listdom;
/**
* 构造函数,初始化DOM连接
*
*/
public BlogService() {
try {
SAXBuilder builder = new SAXBuilder();
this.blogdom = builder.build(BlogService.class.getResource("blog.xml"));
this.listdom = builder.build(BlogService.class.getResource("list.xml"));
}catch(Exception ex) {
this.handleError(ex);
}
}
/**
* 获取日志列表,以对象数组的形式返回,用于显示,不包含评论和引用
* @return
*/
public Blog[] getAllBlog() {
Collection bloges = new ArrayList();
if(this.blogdom.getRootElement().getChildren().size()!=0) {
Iterator iterator = this.blogdom.getRootElement().getChildren().iterator();
do {
Element element = (Element)iterator.next();
Blog blog = new Blog(element);
bloges.add(blog);
}while(iterator.hasNext());
return (Blog[])bloges.toArray(new Blog[0]);
}
else
return new Blog[0];
}
/**
* 获取日志列表,以Map的形式返回,用户持久化,包含评论和引用
* @return
*/
public Map getAllBlogMap() {
Map bloges = new HashMap();
if(this.blogdom.getRootElement().getChildren().size()!=0) {
Iterator iterator = this.blogdom.getRootElement().getChildren().iterator();
do {
Element element = (Element)iterator.next();
Blog blog = new Blog();
blog.initialBlog(element);
bloges.put(blog.getId(),blog);
}while(iterator.hasNext());
}
return bloges;
}
/**
* 获取指定的日志,包含其评论和引用
* @param id
* @return
*/
public Blog getBlog(String id) {
Blog blog = null;
if(this.blogdom.getRootElement().getChildren().size()!=0) {
Iterator iterator = this.blogdom.getRootElement().getChildren().iterator();
do {
Element element = (Element)iterator.next();
if(element.getAttributeValue("id").equalsIgnoreCase(id)){
blog = new Blog();
blog.initialBlog(element);
}
}while(iterator.hasNext());
}
return blog;
}
/**
* 增加日志
* @param blog
* @throws Exception
*/
public void addBlog(Blog blog) throws Exception {
Map bloges = this.getAllBlogMap();
blog.setId(String.valueOf(bloges.size()));
bloges.put(blog.getId(),blog);
this.outputXMLDocument((Blog[])bloges.values().toArray(new Blog[0]));
}
/**
* 获取指定日志的评论列表,以对象数组的形式返回
* @param blogid
* @return
*/
public BlogComment[] getComment(String blogid) {
Collection commentes = new ArrayList();
if(this.blogdom.getRootElement().getChildren().size()!=0) {
Iterator iterator = this.blogdom.getRootElement().getChildren().iterator();
do {
Element element = (Element)iterator.next();
if(element.getAttributeValue("id").equalsIgnoreCase(blogid)) {
if(element.getChild("comments").getChildren().size()!=0) {
Iterator cIterator = element.getChild("comments").getChildren().iterator();
do {
Element cElement = (Element)cIterator.next();
BlogComment comment = new BlogComment(cElement);
commentes.add(comment);
}while(cIterator.hasNext());
}
}
}while(iterator.hasNext());
}
return (BlogComment[])commentes.toArray(new BlogComment[0]);
}
/**
* 获取指定日志的评论列表,以Map对象的形式返回
* @param blogid
* @return
* @throws Exception
*/
public Map getCommentMap(String blogid) throws Exception {
Map comments = new HashMap();
if(this.blogdom.getRootElement().getChildren().size()!=0) {
Iterator iterator = this.blogdom.getRootElement().getChildren().iterator();
do {
Element element = (Element)iterator.next();
if(element.getAttributeValue("id").equalsIgnoreCase(blogid)) {
if(element.getChild("comments").getChildren().size()!=0) {
Iterator cIterator = element.getChild("comments").getChildren().iterator();
do {
Element cElement = (Element)cIterator.next();
BlogComment comment = new BlogComment(cElement);
comments.put(comment.getCommentdate(),comment);
}while(cIterator.hasNext());
}
}
}while(iterator.hasNext());
}
return comments;
}
/**
* 添加指定日志的评论
* @param comment
* @param blogid
* @throws Exception
*/
public void addComment(BlogComment comment, String blogid) throws Exception {
Map bloges= this.getAllBlogMap();
if((bloges!=null)&&(bloges.size()!=0)) {
Blog[] bArray = (Blog[])bloges.values().toArray(new Blog[0]);
for(int i=0;i<bArray.length;i++) {
if(blogid.equalsIgnoreCase(bArray[i].getId())) {
bArray[i].addComment(comment);
break;
}
}
this.outputXMLDocument(bArray);
}
else throw new Exception("未找到指定日志。");
}
/**
* 获取指定日志的引用列表,以对象数组的形式返回
* @param blogid
* @return
*/
public BlogReference[] getReference(String blogid) {
Collection references = new ArrayList();
if(this.blogdom.getRootElement().getChildren().size()!=0) {
Iterator iterator = this.blogdom.getRootElement().getChildren().iterator();
do {
Element element = (Element)iterator.next();
if(element.getAttributeValue("id").equalsIgnoreCase(blogid)) {
if(element.getChild("references").getChildren().size()!=0) {
Iterator cIterator = element.getChild("references").getChildren().iterator();
do {
Element cElement = (Element)cIterator.next();
BlogReference reference = new BlogReference(cElement);
references.add(reference);
}while(cIterator.hasNext());
}
}
}while(iterator.hasNext());
}
return (BlogReference[])references.toArray(new BlogReference[0]);
}
/**
* 将日志输出为持久化的XML文档
* @param bloges
* @throws Exception
*/
public void outputXMLDocument(Blog[] bloges) throws Exception {
File file = new File(BlogService.class.getResource("blog.xml").getPath());
if(file.exists()) file.delete();
if(!file.exists()) file.createNewFile();
FileOutputStream stream = new FileOutputStream(file);
Document doc = new Document();
Element root = new Element("bloges");
if((bloges!=null)&&(bloges.length!=0)) {
for(int i=0;i<bloges.length;i++) {
Element element = new Element("blog");
element.setAttribute("id",bloges[i].getId());
Element title = new Element("title").addContent(bloges[i].getTitle());
Element catalogue = new Element("catalogue").addContent(bloges[i].getCatalogue());
Element publishdate = new Element("publishdate").addContent(bloges[i].getPublishdate());
CDATA conCDATA = new CDATA(bloges[i].getContent());
Element content = new Element("content").addContent(conCDATA);
Element entry = new Element("entry").addContent(bloges[i].getEntry());
Element track = new Element("track").addContent(bloges[i].getTrack());
Element images = new Element("images");
if((bloges[i].getImages()!=null)&&(bloges[i].getImages().size()!=0)) {
BlogImage[] iArray = (BlogImage[])bloges[i].getImages().toArray(new BlogImage[0]);
for(int j=0;j<iArray.length;j++) {
Element image = new Element("image");
image.addContent(new Element("imageName").addContent(iArray[j].getImageName()));
image.addContent(new Element("url").addContent(iArray[j].getUrl()));
images.addContent(image);
}
}
Element comments = new Element("comments");
BlogComment[] cArray = (BlogComment[])bloges[i].getComments().toArray(new BlogComment[0]);
if((cArray!=null)&&(cArray.length!=0)) {
for(int j=0;j<cArray.length;j++) {
Element comment = new Element("comment");
comment.addContent(new Element("author").addContent(cArray[j].getAuthor()));
comment.addContent(new Element("blogimage").addCon
没有合适的资源?快使用搜索试试~ 我知道了~
Ajax应用开发综合案例
共57个文件
java:16个
class:16个
jsp:5个
需积分: 9 43 下载量 155 浏览量
2007-04-19
20:08:31
上传
评论
收藏 551KB ZIP 举报
温馨提示
Ajax应用开发综合案例(转载)<br/>www.pigkrtv.com
资源推荐
资源详情
资源评论
收起资源包目录
Ajax应用开发综合案例.zip (57个子文件)
ajax
ajax.war 278KB
ajax
css
style.css 14KB
WEB-INF
web.xml 2KB
lib
jdom.jar 150KB
classes
com
eamoi
ajax
BlogReference.java 749B
list.xml 762B
AjaxMessageService.class 9KB
list.dtd 436B
BlogManager.class 7KB
Blog.class 6KB
BlogReference.class 1KB
AjaxMessage.java 2KB
news.xml 2KB
MessageCriteria.java 999B
BlogService.class 15KB
BlogImage.java 506B
BlogListItem.class 2KB
blog.xml 2KB
News.class 1KB
ExtendString.java 691B
BlogService.java 21KB
blog.dtd 995B
NewsManager.class 4KB
MessageAction.java 8KB
BlogImage.class 921B
News.java 891B
AjaxMessageService.java 10KB
MessageCriteria.class 1KB
NewsService.java 1KB
NewsManager.java 4KB
MessageAction.class 6KB
BlogList.class 2KB
BlogManager.java 8KB
BlogComment.java 2KB
ajaxmessages.xml 350B
ExtendString.class 910B
Blog.java 5KB
BlogList.java 2KB
BlogComment.class 2KB
BlogListItem.java 1KB
AjaxMessage.class 3KB
NewsService.class 2KB
index.jsp 5KB
META-INF
MANIFEST.MF 106B
news
list.jsp 3KB
msnspace
bloglist.jsp 10KB
blog.jsp 11KB
message
ajaxMessage.jsp 10KB
images
go.gif 269B
clearicon.gif 537B
blogimage.jpg 2KB
MSN-SPACE.jpg 58KB
editicon_disabled.gif 326B
Thumbs.db 13KB
clearicon_disabled.gif 917B
editicon.gif 528B
function
ajax_func.js 2KB
共 57 条
- 1
资源评论
wip868
- 粉丝: 1
- 资源: 73
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功