📄 xmluserdaoimpl.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 + -