package com.sds.emp.user.services.impl;

import anyframe.common.Page;

import com.sds.emp.user.services.SearchVO;
import com.sds.emp.user.services.UserServiceWithIoCBasic;
import com.sds.emp.user.services.UserVO;

public class UserServiceImplWithIoCBasic implements UserServiceWithIoCBasic {

	private UserDAOWithIoCBasic userDAO;

	// default constructor
	public UserServiceImplWithIoCBasic(){
		// do nothing
		System.out.println("[2] UserServiceImpl is initialized.");
	}
	
	// TODO - for setter injection
	public void setUserDAO(UserDAOWithIoCBasic userDAO) {
		this.userDAO = userDAO;
	}
	
	// TODO - for constructor injection
	public UserServiceImplWithIoCBasic(UserDAOWithIoCBasic userDAO){
		this.userDAO = userDAO;
	}
	
	// TODO - for method injection
	public UserDAOWithIoCBasic getUserDAO(){
		// do nothing - this method will be overrided by Spring Container
		return null;
	}
	
	public Page getUserList(SearchVO searchVO) throws Exception {
		System.out.println("UserServiceImpl call getUserList");
		this.userDAO.getUserList(searchVO);
		return null;
	}

	public void addUser(UserVO userVO) throws Exception {
		System.out.println("UserServiceImpl call addUser");
		this.userDAO.addUser(userVO);
	}
	
	public void addUserUsingMethodInjection(UserVO userVO) throws Exception {
		System.out.println("UserServiceImpl call addUserUsingMethodInjection");
		this.getUserDAO().addUser(userVO);
	}
}

