package com.fr.tx.common.dao.impl;

import java.util.List;

import com.fr.tx.common.dao.UserDao;
import com.fr.tx.common.dao.base.BaseDao;
import com.fr.tx.common.entity.UserEntity;

public class UserDaoImpl extends BaseDao implements UserDao{

	@Override
	public List<UserEntity> search(UserEntity en) {
		try {
			makeSession();
			List<UserEntity> result = session.selectList("User.search", en);
			return result;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
        return null;
	}

	@Override
	public int getCount(UserEntity en) {
		try {
			makeSession();
			Integer cnt = session.selectOne("User.getCount", en);
	        if (cnt == null) {
	            return 0;
	        }
	        return cnt;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
        return 0;
	}

	@Override
	public UserEntity getDetailByPk(String pk) {
		try {
			makeSession();
			List<UserEntity> result = session.selectList("User.getDetailByPk", pk);
	        return result.get(0);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
        return null;
	}

	@Override
	public int update(UserEntity en) {
		try {
			makeSession();
			int ret = session.update("User.update", en);
	        session.commit();
	        return ret;
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		} finally {
			session.close();
		}
        return 0;
	}

	@Override
	public int insert(UserEntity en) {
		try {
			makeSession();
			int ret = session.insert("User.insert", en);
	        session.commit();
	        return ret;
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		} finally {
			session.close();
		}
        return 0;
	}

	@Override
	public int delete(UserEntity en) {
		try {
			makeSession();
			int ret = session.update("User.delete", en);
	        session.commit();
	        return ret;
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		} finally {
			session.close();
		}
        return 0;
	}
	
	@Override
	public int getLoginNameCount(UserEntity en) {
		try {
			makeSession();
			Integer cnt = session.selectOne("User.getLoginNameCount", en);
	        if (cnt == null) {
	            return 0;
	        }
	        return cnt;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
        return 0;
	}
}
