package com.ajaxlab.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(ClassService.class.getResource("blog.xml"));
this.listdom = builder.build(ClassService.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(ClassService.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").a
没有合适的资源?快使用搜索试试~ 我知道了~
Ajax开发精要——概念、案例与框架源代码.rar
共122个文件
java:37个
jsp:27个
xml:11个
需积分: 10 9 下载量 200 浏览量
2011-02-21
21:48:45
上传
评论
收藏 425KB RAR 举报
温馨提示
Ajax开发精要——概念、案例与框架.rar 作者: 柯自聪 定 价: 452 页码: 452 出版时间: 2006-05 ISBN号: 9787121024683
资源推荐
资源详情
资源评论
收起资源包目录
Ajax开发精要——概念、案例与框架源代码.rar (122个子文件)
Baserev 411B
Baserev 35B
style.css 14KB
Thumbs.db 875KB
blog.dtd 995B
ajaxmessages.dtd 455B
list.dtd 436B
sample4_5.dtd 435B
sample4_4.dtd 394B
sample4_6.dtd 201B
Entries 11KB
Entries 218B
Entries.Extra 4KB
Entries.Extra 73B
clearicon_disabled.gif 917B
clearicon.gif 537B
editicon.gif 528B
editicon_disabled.gif 326B
delete.gif 146B
edit.gif 135B
index.htm 3KB
sample4_19.htm 2KB
sample4_18.htm 1KB
sample4_16.htm 1KB
sample4_21.htm 1KB
sample4_17.htm 1KB
sample4_12.htm 1KB
sample4_13.htm 1KB
sample4_14.htm 1KB
sample4_15.htm 666B
sample4_1.html 2KB
sample4_11.html 255B
BlogService.java 21KB
AjaxMessageService.java 10KB
MP3PlayerService.java 9KB
BlogManager.java 8KB
MessageAction.java 8KB
Blog.java 5KB
HandleRequest.java 5KB
MP3Player.java 4KB
ClassService.java 4KB
OrganizationService.java 3KB
MessageService.java 2KB
AjaxMessage.java 2KB
BlogList.java 2KB
BlogComment.java 2KB
SimpleMessage.java 1KB
Message.java 1KB
BookService.java 1KB
SampleJDOM.java 1KB
BlogListItem.java 1KB
MessageCriteria.java 1001B
Book.java 1000B
Department.java 878B
CatalogDAO.java 868B
Item.java 796B
UserService.java 756B
BlogReference.java 751B
ProductOrdered.java 740B
UserValue.java 720B
Chapter.java 703B
ExtendString.java 693B
Position.java 661B
Staff.java 661B
Employee.java 622B
BlogImage.java 508B
ProductClass.java 501B
Section.java 475B
Organization.java 475B
MSN-SPACE.jpg 58KB
mp31.jpg 5KB
mp32.jpg 3KB
aa.js 25KB
products.js 5KB
ajax_func.js 2KB
ajax_func.js 2KB
sample7_2.jsp 11KB
blog.jsp 11KB
ajaxMessage.jsp 10KB
bloglist.jsp 10KB
sample7_1.jsp 7KB
sample6_4.jsp 4KB
sample6_3.jsp 4KB
sample6_8.jsp 3KB
ajaxRegister.jsp 3KB
sample6_2.jsp 3KB
sample7_3.jsp 3KB
sample6_1.jsp 3KB
sample11_2.jsp 3KB
sample6_6.jsp 2KB
sample6_5.jsp 2KB
sample6_7.jsp 1KB
1.jsp 1KB
sample4_10.jsp 1KB
getBookes.jsp 1KB
getData.jsp 902B
getClass.jsp 902B
registerCheck.jsp 856B
sample11_1.jsp 694B
process.jsp 576B
共 122 条
- 1
- 2
资源评论
starpc
- 粉丝: 3
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功