www.pudn.com > OnlineAlbum.rar > CommentAdmin.java
/*
* CommentAdmin.java
*
* Created on 2004年12月28日, 上午03:24
* 这个类主要用于管理用户对相片的评论
*
*/
package com.mg.admin;
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
/**
* 这个类主要用于管理用户对相片的评论
*/
public class CommentAdmin extends Object{
//********************成员变量************************
/**
* 操作的根路径
*/
private String rootPath;
/**
* 当前操作的XML文件名
*/
private static final String TABLE_NAME = "comments.xml";
//********************成员函数************************
/**
* 构造函数,如果使用这个构造函数,需要调用setRootPath设置根路径
*
* @see #setRootPath
*/
public CommentAdmin() {
}
/**
* 设置操作的根路径
*
* @see #getRootPath
*/
public void setRootPath(String rp) {
if (rootPath != rp) {
rootPath = rp;
}
}
/**
* 返回操作的根路径
*
* @return 返回根路径
*
* @see #setRootPath
*/
public String getRootPath() {
return rootPath;
}
/**
* 获得当前的XML Document对象
*/
private Document getDoc() {
Document doc = null;
PrintStream out = System.out;
//读取文件
try {
File file = new File(rootPath, TABLE_NAME);
if (file.exists()) {
SAXBuilder builder = new SAXBuilder(false);
doc = builder.build(file);
}
} catch(Exception e) {
out.println("Exception: " + e.toString());
}
return doc;
}
/**
* 连接当前的rootPath下的comments.xml名的XML文件,
* 并返回对指定照片的所有评论。
*
* @param uid 照片的所有者。
* @param pictureFileName 照片的文件名。
*
* @return 封装了Comment对象的Vecotr对象。
*/
public Vector getComments(String uid, String pictureFileName) {
Vector ret = new Vector();
Document doc=getDoc();
if (doc != null) {
// 获取根节点
Element root = doc.getRootElement();
List list = root.getChildren();
Iterator list_i = list.iterator();
Element userNode=null;
while (list_i.hasNext()) {
//获取子节点
Element e = (Element)list_i.next();
//获取二级子节点
List details = e.getChildren();
if (details.size()
// 123
// RL_1104333493935_Winter.jpg
// 2004-12-29 11:18 下午
// RL
//
//添加Picture对象
String content = ((Element)details.get(0)).getText();
String filename = ((Element)details.get(1)).getText();
String datetime = ((Element)details.get(2)).getText();
String userid = ((Element)details.get(3)).getText();
if (!filename.equals(pictureFileName) ||
!filename.startsWith(uid)) {
continue;
}
Comment commnent = new Comment();
commnent.setContent(content);
commnent.setFileName(filename);
commnent.setDateTime(datetime);
commnent.setUser(userid);
ret.add(commnent);
}
}
return ret;
}
/**
* 连接当前的rootPath下的pictures.xml名的XML文件,
* 并添加一条相片评论,如果成功则返回true,否则返回false。
*
* @param comment Comment对象
*/
public boolean add(Comment comment) {
boolean ret = false;
Document doc=getDoc();
if (doc != null) {
// 获取根节点
Element root = doc.getRootElement();
Element newE = new Element("comment");
Element eContent= new Element("content");
eContent.setText(comment.getContent());
newE.addContent(eContent);
Element eFileName = new Element("filename");
eFileName.setText(comment.getFileName());
newE.addContent(eFileName);
Element eDateTime = new Element("datetime");
eDateTime.setText(comment.getDateTime());
newE.addContent(eDateTime);
Element eUserID = new Element("userid");
eUserID.setText(comment.getUser());
newE.addContent(eUserID);
root.addContent(newE);
//保存修改
save(doc);
ret = true;
}
return ret;
}
/**
* 保存修改到XML文件
*
* @param doc 要保存的Document对象
*/
private void save(Document doc) {
//保存修改
try {
Format format = Format.getPrettyFormat();
format.setEncoding("GBK");
XMLOutputter out = new XMLOutputter(format);
File file = new File(rootPath, TABLE_NAME);
FileOutputStream fos = new FileOutputStream(file);
out.output(doc, fos);
} catch(Exception e) {
System.out.println("Exception: " + e.toString());
}
}
}