buguserdao.java

来自「是一个Bug系统」· Java 代码 · 共 289 行

JAVA
289
字号
package com.runwit.bugreport.services.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

import com.runwit.bugreport.model.BugPrivModel;
import com.runwit.bugreport.model.BugStatusModel;
import com.runwit.bugreport.model.BugUserModel;
import com.runwit.bugreport.model.GroupModel;
import com.runwit.bugreport.services.IBugUserServices;
import com.runwit.common.db.DbDAO;
import com.runwit.common.util.DebugUtil;

public class BugUserDAO extends DbDAO implements IBugUserServices {
	
	private BugPrivModel[] parsePrivString(String str) {
		BugPrivModel[] models = null;
		if(str != null && str.length() > 0) {
			String[] privs = str.split(",");
			models = new BugPrivModel[privs.length];
			for(int i=0; i<privs.length; i++) {
				if(privs[i].length() > 0) { //不为""
					int privId = Integer.parseInt(privs[i]);
					models[i] = BugPrivModel.getModel(privId);
				}
			}
		}
		return models;
	}

	public Object mapRowToModel(ResultSet rs) throws SQLException {
		
		String bugPriv = rs.getString("bugpriv");
		
		
		BugUserModel model = new BugUserModel(
				rs.getLong("userid"),
				rs.getString("account"),
				rs.getString("password"),
				rs.getString("name"),
				rs.getString("sex"),
				rs.getString("dept"),
				rs.getString("duty"),
				rs.getString("phone"),
				rs.getString("mpPhone"),
				parsePrivString(bugPriv),
				rs.getString("email"),
				rs.getLong("createTime"),
				rs.getInt("lockstate")
				);
		
		return model;
	}
	
	public boolean createUser(BugUserModel model) {
		String sql = "INSERT INTO BUGUSERS(ACCOUNT,PASSWORD,NAME, " +
				"SEX, DEPT, DUTY, PHONE, MPHONE, BUGPRIV, EMAIL, CREATETIME, LOCKSTATE ) values(?,?,?,?,?,?,?,?,?,?,?,?)";
		String querySql = "select max(userid) from bugusers";
		String usergroupSql = "insert into usergroups(groupid, userid) values(?, ?)";
		
		try
		{
			openConnection();
			conn.setAutoCommit(false);
			openPreparedStatement(sql);
			pstmt.setString(1, model.getAccount());
			pstmt.setString(2, model.getPassword());
			pstmt.setString(3, model.getName());
			pstmt.setString(4, model.getSex());
			pstmt.setString(5, model.getDept());
			pstmt.setString(6, model.getDuty());
			pstmt.setString(7, model.getPhone());
			pstmt.setString(8, model.getMpPhone());
			pstmt.setString(9, BugPrivModel.convertToPrivString(model.getBugPrivs()));
			pstmt.setString(10, model.getEmail());
			pstmt.setLong(11, model.getCreateTime());
			pstmt.setInt(12, model.getLockState());
			
			int iRet = pstmt.executeUpdate();
			closePreparedStatement();
			openPreparedStatement(querySql);
			rs  = pstmt.executeQuery();
			if(rs.next()) {
				model.setUserId(rs.getInt(1));
			}
			closeResultSet();
			closePreparedStatement();
			
			if(model.getGroups().size() > 0) {
				openPreparedStatement(usergroupSql);
				Iterator gIter = model.getGroups().iterator();
				while(gIter.hasNext()) {
					GroupModel gModel = (GroupModel)gIter.next();
					pstmt.setLong(1, model.getUserId());
					pstmt.setInt(2, gModel.getGroupId());
					pstmt.addBatch();
				}
				pstmt.executeBatch();
				closePreparedStatement();
			}
			
			conn.commit();
			return true;
		}catch(SQLException ex) {
			ex.printStackTrace();
			return false;
		}
		finally{
			closeConnection();
		}
	}
	
	public boolean setUserById(BugUserModel model) {
		String sql = "UPDATE BUGUSERS SET ACCOUNT=?, PASSWORD=?,NAME=?, " +
		"SEX=?, DEPT=?, DUTY=?, PHONE=?, MPHONE=?, BUGPRIV=?, EMAIL=?,  LOCKSTATE=? WHERE USERID=?";
		String delSql = "delete from usergroups where userid=?";
		String sql2 = "insert into usergroups(groupId, userid) values(?,?)";
		
		try
		{
			openConnection();
			conn.setAutoCommit(false);
			openPreparedStatement(sql);
			pstmt.setString(1, model.getAccount());
			pstmt.setString(2, model.getPassword());
			pstmt.setString(3, model.getName());
			pstmt.setString(4, model.getSex());
			pstmt.setString(5, model.getDept());
			pstmt.setString(6, model.getDuty());
			pstmt.setString(7, model.getPhone());
			pstmt.setString(8, model.getMpPhone());
			pstmt.setString(9, BugPrivModel.convertToPrivString(model.getBugPrivs()));
			pstmt.setString(10, model.getEmail());
			//pstmt.setLong(11, model.getCreateTime());
			pstmt.setInt(11, model.getLockState());
			pstmt.setLong(12, model.getUserId());
			int iRet = pstmt.executeUpdate();
			closePreparedStatement();
			openPreparedStatement(delSql);
			pstmt.setLong(1, model.getUserId());
			pstmt.executeUpdate();
			closePreparedStatement();
			Iterator iter = model.getGroups().iterator();
			if(model.getGroups().size() > 0) {
				openPreparedStatement(sql2);
				while(iter.hasNext()) {
					GroupModel gModel =(GroupModel)iter.next();
					pstmt.setInt(1, gModel.getGroupId());
					pstmt.setLong(2, model.getUserId());
					pstmt.addBatch();
				}
				pstmt.executeBatch();
				closePreparedStatement();
			}
			conn.commit();
			return true;
		}catch(SQLException ex) {
			ex.printStackTrace();
			return false;
		}
		finally{
			closeConnection();
		}
	}
	
	public boolean removeUser(BugUserModel model) {
		String sql1 = "delete from usergroups where userid=" + model.getUserId();
		String sql2 = "delete from buguser where userid=" + model.getUserId();
		try
		{
			openConnection();
			openStatement();
			stmt.addBatch(sql1);
			stmt.addBatch(sql2);
			stmt.executeBatch();
			
			return true;
			
		}catch(SQLException ex) {
			ex.printStackTrace();
			return false;
		}
		finally {
			closeStatement();
			closeConnection();
		}
	}
	
	private List listUsersBySql(String sql) {
		List groups = new ArrayList();
		try {
			openConnection();
			openStatement();
			DebugUtil.printSql(sql);
			rs = stmt.executeQuery(sql);
			while(rs.next()) {
				GroupModel groupModel = (GroupModel)mapRowToModel(rs);
				groups.add(groupModel);
				
			}
			closeResultSet();
			for(int i=0; i<groups.size(); i++) {
				try{
					rs = stmt
							.executeQuery("select bugstatus.* from bugstatus, groupstatus where bugstatus.bsid=groupstatus.bsid and groupid="
									+ ((GroupModel) groups.get(i)).getGroupId());
					while(rs.next()) {
						BugStatusModel bsModel = new BugStatusModel(rs
								.getInt("bsid"), rs.getString("name"), rs
								.getString("remark"));
						((GroupModel)groups.get(i)).getStatusList().add(bsModel);
					}
				}catch(SQLException ex) {
					ex.printStackTrace();
				}finally{
					closeResultSet();
				}
			}

		}catch(SQLException ex) {
			ex.printStackTrace();
		}
		finally {
			closeStatement();
			closeConnection();
		}
		
		return groups;

	}
	
	
	public List listUsers() {
		Set users = new LinkedHashSet();
		BugUserModel model;
		String sql = "select u.*, ug.groupid from bugusers as u left outer join usergroups ug on u.userid=ug.userid";
		try{
			openConnection();
			openStatement();
			rs = stmt.executeQuery(sql);
			while(rs.next()) {
				model = (BugUserModel)mapRowToModel(rs);
			}
			
		}catch(SQLException ex) {
			ex.printStackTrace();
		}finally{
			
		}
		return null;

	}
	
	public boolean changeLockState(int newState) {
		// TODO Auto-generated method stub
		return false;
	}
	
	
	
	public GroupModel getModel(int groupId) {
		
//		List models = listGroupsBySql("select * from groups where groupid="+groupId);
//		if(models != null && models.size() > 0) 
//			return (GroupModel)models.get(0);
		
		return null;
	}
	
	public GroupModel getModel(long userId) {
		// TODO Auto-generated method stub
		return null;
	}
	
	public boolean login(String account, String password) {
		// TODO Auto-generated method stub
		return false;
	}
	
	


}

⌨️ 快捷键说明

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