⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blogservice.java

📁 Ajax开发精要——概念、案例与框架.很适合初学者学习。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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").addContent(cArray[j].getBlogimage()));
						comment.addContent(new Element("commentdate").addContent(cArray[j].getCommentdate()));
						comment.addContent(new Element("blogurl").addContent(cArray[j].getBlogurl()));
						comment.addContent(new Element("email").addContent(cArray[j].getEmail()));
						CDATA cdata = new CDATA(cArray[j].getCommentcontent());
						comment.addContent(new Element("commentcontent").addContent(cdata));
						comments.addContent(comment);
					}
				}
				Element commenttotal = new Element("commenttotal").addContent(String.valueOf(cArray.length));
				Element references = new Element("references");
				BlogReference[] rArray = 
					(BlogReference[])bloges[i].getReferences().toArray(new BlogReference[0]);
				if((rArray!=null)&&(rArray.length!=0)) {
					for(int j=0;j<rArray.length;j++) {
						Element reference = new Element("reference");
						reference.addContent(new Element("refername").addContent(rArray[i].getRefername()));
						reference.addContent(new Element("referurl").addContent(rArray[i].getReferurl()));
						references.addContent(reference);
					}
				}
				Element referencetotal = 
					new Element("referencetotal").addContent(String.valueOf(rArray.length));
				element.addContent(title);
				element.addContent(catalogue);
				element.addContent(publishdate);
				element.addContent(content);
				element.addContent(entry);
				element.addContent(track);
				element.addContent(images);
				element.addContent(comments);
				element.addContent(commenttotal);
				element.addContent(references);
				element.addContent(referencetotal);
				root.addContent(element);
			}
		}
		doc.addContent(root);
		XMLOutputter outputter = 
			new XMLOutputter(Format.getPrettyFormat().setEncoding("gb2312"));
		outputter.output(doc,stream);
	}
	/**
	 * 输出指定日志的全部评论为XML文档
	 * @param out
	 * @param blogid
	 * @throws Exception
	 */
	public void outputComment(PrintWriter out, String blogid) throws Exception {
		BlogComment[] commentes = this.getComment(blogid);
		Document doc = new Document();
		Element root = new Element("commentes");
		if((commentes!=null)&&(commentes.length!=0)) {
			for(int i=0;i<commentes.length;i++) {
				Element element = new Element("comment");
				Element author = new Element("author").addContent(commentes[i].getAuthor());
				Element blogimage = new Element("blogimage").addContent(commentes[i].getBlogimage());
				Element commentdate = new Element("commentdate").addContent(commentes[i].getCommentdate());
				Element blogurl = new Element("blogurl").addContent(commentes[i].getBlogurl());
				Element email = new Element("email").addContent(commentes[i].getEmail());
				Element commentcontent = new Element("commentcontent").addContent(commentes[i].getCommentcontent());
				element.addContent(author);
				element.addContent(blogimage);
				element.addContent(commentdate);
				element.addContent(blogurl);
				element.addContent(email);
				element.addContent(commentcontent);
				root.addContent(element);
			}
		}
		doc.addContent(root);
		XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat().setEncoding("ISO8859-1"));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -