mssqluserdao.java

来自「一个用struts tiles的在线影院web系统」· Java 代码 · 共 226 行

JAVA
226
字号
package com.eline.vod.security.dao;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;

import com.blue.web.common.exceptions.DAOSysException;
import com.blue.web.common.model.Page;
import com.blue.web.common.util.StringUtils;
import com.eline.vod.security.model.CreateUserStatus;
import com.eline.vod.security.model.User;

public class MSSqlUserDAO extends DBSqlAuthBase implements UserDAO {

	public boolean validateUserExists(User user) throws DAOSysException, SQLException {
		return null != getUser(0, user.getUserName(), false, "");
	}
	public int createUser(User user) throws DAOSysException, SQLException {
		if (validateUserExists(user))
			return CreateUserStatus.DuplicateUsername;
		System.out.println("createUser().STEP:1");

		if (user.isAnonymous())
			return CreateUserStatus.UnknownFailure;
		System.out.println("createUser().STEP:2");

		Connection conn = null;
		CallableStatement stmt = null;
		System.out.println("createUser().STEP:3");

		String sql = "{ ? = call dbo.users_CreateUser(?, ?, ?, ?, ?) }";
		try {
			conn = super.getDBConnection();
			stmt = conn.prepareCall(sql);

			stmt.registerOutParameter(1, Types.INTEGER);	// The output parameter.
			int index = 2;
			stmt.registerOutParameter(index++, Types.INTEGER);
			stmt.setString(index++, user.getUserName());
			stmt.setString(index++, user.getPassword());
			stmt.setInt(index++, user.getAccountStatus());
			stmt.setString(index++, user.getMobilePIN());

			// stmt.executeUpdate();
			stmt.execute();
			System.out.println("createUser().STEP:4");

			int returnCode =stmt.getInt(1);
			System.out.println("MSSqlUserDAO.createUser().returnCode=" + returnCode);
			if (returnCode == CreateUserStatus.Created) {
				user.setUserId(stmt.getInt(2));
				System.out.println("createUser().userId=" + user.getUserId());
			}
			System.out.println("return=" + returnCode);
			return returnCode;

		} catch (SQLException e) {
			e.printStackTrace();
			throw new DAOSysException(e.getMessage());
		} finally {
			stmt.close();
			conn.close();
		}
	}

	public User getAnonymousUser() throws DAOSysException, SQLException {
		Connection conn = null;
		CallableStatement stmt = null;
		String sql = "{ call dbo.users_GetAnonymousUserID(?) }";

		try {
			conn = super.getDBConnection();
			stmt = conn.prepareCall(sql);
			stmt.registerOutParameter(1, Types.INTEGER);	// The output parameter.
			boolean status = stmt.execute();
			int userId = stmt.getInt(1);
			System.out.println("getAnonymousUser().userId=" + userId);
			System.out.println("status=" + status);

			User user = getUser(userId, "Anonymous", true, "");
			System.out.println("MSSqlUserDAO.getAnonymousUser().user=" + user);
			return user;
		} catch (SQLException e) {
			e.printStackTrace();
			throw new DAOSysException(e.getMessage());
		} finally {
			stmt.close();
			conn.close();
		}
	}

	public User getUser(int userID, String userName, boolean isOnline,
			String lastAction) throws DAOSysException, SQLException {
		User user = null;
		Connection conn = null;
		CallableStatement stmt = null;
		ResultSet rst = null;
		String sql = "{ call dbo.users_GetUser(?, ?, ?, ?) }";

		try {
			conn = super.getDBConnection();
			stmt = conn.prepareCall(sql);
			stmt.setInt(1, userID);
			stmt.setString(2, userName);
			stmt.setBoolean(3, isOnline);
			stmt.setString(4, lastAction);

			rst = stmt.executeQuery();
			if (rst.next()) {
				user = new User();
				user.setUserId(rst.getInt("UserID"));
				user.setUserName(rst.getString("UserName"));
				user.setPassword(rst.getString("Password"));
				user.setEmail(rst.getString("Email"));
				user.setAnonymous(rst.getBoolean("IsAnonymous"));
				user.setDateCreated(StringUtils.getDate(rst.getString("DateCreated")));
				user.setDateLastActive(StringUtils.getDate(rst.getString("DateLastActivity")));
				user.setAccountStatus(rst.getInt("UserAccountStatus"));
			}
		} catch (SQLException e) {
			// e.printStackTrace();
			throw new DAOSysException(e.getMessage());
		} finally {
			rst.close();
			stmt.close();
			conn.close();
		}
		System.out.println("user=" + user);
		return user;
	}

	public Page getUsers(int pageIndex, int pageSize, int sortUsersBy,
			int sortOrder, String usernameFilter, boolean includeEmailInFilter,
			int accountStatus) throws DAOSysException, SQLException {
		Page page = new Page();
		Connection conn = null;
		CallableStatement stmt = null;
		ResultSet rst = null;
		String sql = "{ call dbo.users_GetUsers(?, ?, ?, ?, ?, ?, ?) }";

		try {
			conn = super.getDBConnection();
			stmt = conn.prepareCall(sql);
			int index = 1;
			stmt.setInt(index++, pageIndex);
			stmt.setInt(index++, pageSize);
			stmt.setInt(index++, sortUsersBy);
			stmt.setInt(index++, sortOrder);
			stmt.setString(index++, usernameFilter);
			stmt.setBoolean(index++, includeEmailInFilter);
			stmt.setInt(index++, accountStatus);

			//rst = stmt.executeQuery();
			stmt.execute();
			// Populate the collection of users
			rst = stmt.getResultSet();
			while (rst.next()) {
				User user = new User();
				user.setUserId(rst.getInt("UserID"));
				user.setUserName(rst.getString("UserName"));
				user.setPassword(rst.getString("Password"));
				user.setEmail(rst.getString("Email"));
				user.setAnonymous(rst.getBoolean("IsAnonymous"));
				user.setDateCreated(StringUtils.getDate(rst.getString("DateCreated")));
				user.setDateLastActive(StringUtils.getDate(rst.getString("DateLastActivity")));
				user.setAccountStatus(rst.getInt("UserAccountStatus"));
				page.getItems().add(user);
			}
			// Are we expecting the total records?
			if (stmt.getMoreResults()) {
				stmt.getResultSet();
				if (rst.next()) {
					rst.getInt(1);
					page.setTotalRecords(rst.getInt(1));
				}
			}

		} catch (SQLException e) {
			throw new DAOSysException(e.getMessage());
		} finally {
			rst.close();
			stmt.close();
			conn.close();
		}
		return page;
	}
	public User getUserByMobilePIN(String mobilePIN) throws DAOSysException, SQLException {
		User user = null;
		Connection conn = null;
		CallableStatement stmt = null;
		ResultSet rst = null;
		String sql = "{ call dbo.users_GetUserByMobilePIN(?) }";

		try {
			conn = super.getDBConnection();
			stmt = conn.prepareCall(sql);
			stmt.setString(1, mobilePIN);

			rst = stmt.executeQuery();
			if (rst.next()) {
				user = new User();
				user.setUserId(rst.getInt("UserID"));
				user.setUserName(rst.getString("UserName"));
				user.setPassword(rst.getString("Password"));
				user.setEmail(rst.getString("Email"));
				user.setAnonymous(rst.getBoolean("IsAnonymous"));
				user.setDateCreated(StringUtils.getDate(rst.getString("DateCreated")));
				user.setDateLastActive(StringUtils.getDate(rst.getString("DateLastActivity")));
				user.setAccountStatus(rst.getInt("UserAccountStatus"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
			throw new DAOSysException(e.getMessage());
		} finally {
			rst.close();
			stmt.close();
			conn.close();
		}
		System.out.println("user=" + user);
		return user;
	}

}

⌨️ 快捷键说明

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