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

📄 xmluserdaoimpl.java

📁 QQ聊天
💻 JAVA
字号:
package com.sato.server.dao.impl;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Vector;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

import com.sato.pub.PackType;
import com.sato.pub.QQpack;
import com.sato.pub.User;
import com.sato.server.dao.db.XMLTool;
import com.sato.server.dao.inf.UserDAO;
import com.sato.server.dao.vo.UserBean;
/**
 * IUserDao接口的实现类,实现XML数据的增删改查和其它的操作
 * @author cw
 *
 */
public class XMLUserDaoImpl implements UserDAO{
	/**
	 * 输出文档对象,将内容写入XML文件
	 * @param doc 文档对象
	 */
	public void outputXML(Document doc){
		
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setIndent("\t");
		format.setEncoding("GBK");
		XMLWriter writer = null;
		
		try {
			writer = new XMLWriter(new FileOutputStream(
					"./XML/users.xml"),format);
			writer.write(doc);
		} catch (Exception e) {
			e.printStackTrace();
		}  finally {
			if(writer != null)
				try {
					writer.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
	}
	public String insertUser(UserBean user) {
		Document doc = XMLTool.getDocumnet();
		Element root = doc.getRootElement();
		Element userNode = root.addElement("user");
		userNode.addAttribute("id", user.getSid());
		Element name = userNode.addElement("sname");
		name.setText(user.getSname());
		Element password = userNode.addElement("spassword");
		password.setText(user.getSpassword());
		Element age = userNode.addElement("nage");
		age.setText(String.valueOf(user.getNage()));
		Element sex = userNode.addElement("ssex");
		sex.setText(user.getSsex());
		Element address = userNode.addElement("saddress");
		address.setText(user.getSaddress());
		Element online = userNode.addElement("nisonline");
		online.setText("0");
		Element regtime = userNode.addElement("dregtime");
		regtime.setText(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
		outputXML(doc);
		return null;
	}

	public Object checkUser(String id, String password) {
		// TODO Auto-generated method stub
		Document doc = XMLTool.getDocumnet();
		Element root = doc.getRootElement();
		String xpath="/users/user[@id='"+id+"']";
		Node node = root.selectSingleNode(xpath);
		Element eid = null;
		UserBean user=new UserBean();
		if(node == null)
			return null;
		if (node.getNodeType() == Node.ELEMENT_NODE)
			eid = (Element)node;
//		Element eid = findUserById(doc, id);
		QQpack qqpack=new QQpack();
		User from=new User();
		String str=null;
		if(eid == null){
			str="用户不存在";
			qqpack.setContent(str);
			qqpack.setType(PackType.login_fail);
		}
		else if(!eid.elementText("spassword").equals(password)){
			str="密码不正确";
			qqpack.setType(PackType.login_fail);
			qqpack.setContent(str);
		}
		
		else if(eid.elementText("nisonline").equals("1")){
			str="在线";
			qqpack.setType(PackType.login_fail);
			qqpack.setContent(str);
		}
		else{
			str="验证通过";
			qqpack.setType(PackType.login_succeed);
			qqpack.setContent(str);
			from.setSid(id);
			from.setSname(eid.elementText("sname"));
			qqpack.setFrom(from);
			this.updateOnline(id, true);
		}
		return qqpack;
	}

	public String deleUser(String id) {
		// TODO Auto-generated method stub
		Document doc = XMLTool.getDocumnet();
		Element root = doc.getRootElement();
		String xpath="/users/user[@id='"+id+"']";
		Node node = root.selectSingleNode(xpath);
		Element eid = null;
		UserBean user=new UserBean();
		if(node == null)
			return null;
		if (node.getNodeType() == Node.ELEMENT_NODE)
			eid = (Element)node;
		doc.getRootElement().remove(eid);
		outputXML(doc);
		return null;
	}

	public String getNextId() {
		// TODO Auto-generated method stub
		Document doc = XMLTool.getDocumnet();
		Element root = doc.getRootElement();
		String xpath = "/users/user[last()]";
		Node node = root.selectSingleNode(xpath);
		if(node == null)
			return "00001";
		String id = null;
		if(node.getNodeType() == Node.ELEMENT_NODE){
			Element e = (Element)node;
			int intid = Integer.parseInt(e.attributeValue("id")) + 100001;
			id = String.valueOf(intid).substring(1, 6);
		}
		return id;
	}

	public List<UserBean> getOnlineUser() {
		// TODO Auto-generated method stub
		List<UserBean> userList = new Vector<UserBean>();
		Document doc = XMLTool.getDocumnet();
		Element root = doc.getRootElement();
		String xpath = "/users/user/nisonline[text() = '1']/parent::*";
		List userNode = root.selectNodes(xpath);
		if(userNode == null)
			return null;
		int size = userNode.size();
		for(int i = 0; i<size; i++){
			Node node = (Node)userNode.get(i);
			if(node.getNodeType() == Node.ELEMENT_NODE){
				Element euser = (Element)node;
				UserBean user = new UserBean();
				user.setSid(euser.attributeValue("id"));
				user.setSname(euser.elementText("sname"));
				userList.add(user);
			}
		}
		return userList;
	}

	public String updateAllPassword() {
		// TODO Auto-generated method stub
		Document doc = XMLTool.getDocumnet();
		Element root = doc.getRootElement();
		String xpath = "/users/user";
		List list = root.selectNodes(xpath);	
		if(list == null)
			return "数据库中没有用户!";
		int size = list.size();
		for(int i = 0; i < size; i++){
			Node node = (Node)list.get(i);
			if(node.getNodeType() == Node.ELEMENT_NODE){
				Element euser = (Element)node;
				euser.element("spassword").setText("123456");
				outputXML(doc);
			}
		}
		return "重置所有用户密码成功!";
	}

	/**
	 * 重置个人密码
	 * @param id 根据id重置密码
	 * @return 成功返回null,否则返回错误信息
	 */
	public String updatePassword(String id) {
		Document doc = XMLTool.getDocumnet();
		Element root = doc.getRootElement();
		String xpath = "/users/user[@id = '" + id + "']";
		Node node = root.selectSingleNode(xpath);
		if(node == null)
			return "重置失败";
		if(node.getNodeType() == Node.ELEMENT_NODE){
			Element e = (Element)node;
			e.element("spassword").setText("123456");
			outputXML(doc);
		}
		
		return "重置密码成功";
	}

	/**
	 * 查询用户信息。每个用户都放在一个Vector对象里面,这些Vector对象又放在一个Vector对象。
	 * 供表格显示用。
	 * @param id 用户编号,精确查询。为null或者""代表不使用该条件。
	 * @param name 用户名,模糊查询。为null或者""代表不使用该条件。
	 * @return 存放满足条件的用户的Vector对象。
	 */
	public Vector<Vector<String>> selectAllemp(String id, String name,Integer nisonline) {
		Vector<Vector<String>> data = new Vector<Vector<String>>();
		Document doc = XMLTool.getDocumnet();
		Element root = doc.getRootElement();
		StringBuffer xpath = new StringBuffer();
		xpath.append("/users/user");		
		if(id != null && id.length() != 0){
			xpath.append("[@id='"+ id +"']");
		}
		if( name != null && name.length() != 0){
			xpath.append("/sname[contains(text(),'"+ name +"')]/parent::*");
		}
		if(nisonline!=null){
			xpath.append("/nisonline[contains(text(),'"+ String.valueOf(nisonline)+"')]/parent::*");
		}
		List list = root.selectNodes(xpath.toString());
		Vector<String> row = null;
		int size = list.size();
		for(int i = 0; i < size; i++){
			Node node = (Node)list.get(i);
			if(node.getNodeType() == Node.ELEMENT_NODE){
				Element euser = (Element)node;
				row = new Vector<String>();
				row.add(euser.attributeValue("id"));
				row.add(euser.elementText("sname"));
				row.add(euser.elementText("ssex"));
				row.add(euser.elementText("nage"));
				row.add(euser.elementText("saddress"));
				if(euser.elementText("nisonline").equals("0"))
					row.add("离线");
				else
					row.add("在线");
				row.add(euser.elementText("dregtime"));
			}
			data.add(row);
		}
		return data;
	}

	/**
	 * 设置所有用户状态为不在线
	 * @return 设置成功返回null,否则返回错误信息
	 */
	public String setAllOffline() {
		Document doc = XMLTool.getDocumnet();
		Element root = doc.getRootElement();
		String xpath = "/users/user/nisonline";
		List list = root.selectNodes(xpath);
		int size = list.size();
		for(int i = 0; i<size; i++){
			Node node = (Node)list.get(i);
			if(node.getNodeType() == Node.ELEMENT_NODE){
				Element e = (Element)node;
				e.setText("0");
			}
		}
		outputXML(doc);
		return null;
	}

	/**
	 * 更新用户的状态(在线/不在线)
	 * @param id 要更改状态的用户的编号
	 * @param online 在线/不在线
	 * @return 更新成功则返回null,否则返回错误信息
	 */
	public String updateOnline(String id, boolean online) {
		Document doc = XMLTool.getDocumnet();
		Element root = doc.getRootElement();
		String xpath = "/users/user[@id = '" + id + "'" +"]/nisonline";
		Node node = root.selectSingleNode(xpath);
		if(node.getNodeType() == Node.ELEMENT_NODE){
			Element user = (Element) node;
			if(online)
				user.setText("1");
			else
				user.setText("0");
		}
		outputXML(doc);
		return null;
	}

	/**
	 * 修改用户
	 * @param newUser 更改后的新用户信息
	 * @return 更新成功则返回null,否则返回错误信息
	 */
	public String updateUser(UserBean newUser) {
		Document doc = XMLTool.getDocumnet();
		Element root = doc.getRootElement();
		String xpath="/users/user[@id='"+newUser.getSid()+"']";
		Node node = root.selectSingleNode(xpath);
		Element oldUser = null;
		UserBean user=new UserBean();
		if(node == null)
			return null;
		if (node.getNodeType() == Node.ELEMENT_NODE)
			oldUser = (Element)node;
		Element ename = oldUser.element("sname");
		ename.setText(newUser.getSname());		
		Element eage = oldUser.element("nage");
		eage.setText(String.valueOf(newUser.getNage()));
		Element pw = oldUser.element("spassword");
		pw.setText(newUser.getSpassword());
		Element esex = oldUser.element("ssex");
		esex.setText(String.valueOf(newUser.getSsex()));
		Element eaddress = oldUser.element("saddress");
		eaddress.setText(String.valueOf(newUser.getSaddress()));		

		outputXML(doc);
		return null;
	}
	/**
	 * 修改个人密码
	 * @param id 根据ID修改密码
	 * @param newPsw 新密码
	 * @return 成功返回null,否则返回错误信息
	 */
	public Object changPassword(String id, String newPsw) {

		Document doc = XMLTool.getDocumnet();
		Element root = doc.getRootElement();
		String xpath = "/users/user[@id = '" + id + "'" +"]/spassword";
		Node node = root.selectSingleNode(xpath);
		if(node == null){
			return null;
		}
		if(node.getNodeType() == Node.ELEMENT_NODE){
			Element user = (Element) node;
			user.setText(newPsw);
		}
		outputXML(doc);
		return null;
	}
	public Object checkPassword(String id,String password){
		Document doc = XMLTool.getDocumnet();
		Element root = doc.getRootElement();
		String xpath="/users/user[@id='"+id+"']";
		Node node = root.selectSingleNode(xpath);
		Element eid = null;
		UserBean user=new UserBean();
		if(node == null)
			return null;
		if (node.getNodeType() == Node.ELEMENT_NODE)
			eid = (Element)node;
		QQpack qqpack=new QQpack();
		User from=new User();
		String str=null;
		if(eid == null){
			str="用户不存在";
			qqpack.setContent(str);
			qqpack.setType(PackType.login_fail);
		}
		else if(!eid.elementText("spassword").equals(password)){
			str="密码不正确";
			qqpack.setType(PackType.login_fail);
			qqpack.setContent(str);
		}
		else{
			qqpack.setType(PackType.login_succeed);
		}
		return qqpack;
	}
//	public void close() {
//		// TODO Auto-generated method stub
//		
//	}
}

⌨️ 快捷键说明

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