본문 바로가기

JAVA/Syntax

HashMap 이용한 CustomerService 구현하기

VO를 구현하자!

//Customer.java - VO
public class Customer implements Serializable{

	private String id;
	private String password;
	private String name;
	private String email;
	private String phoneNumber;
	private int mileage;
	
	
	public Customer() {
		super();
	}
	
	public Customer(String id, String password, String name, String phoneNumber,
			String email, int mileage) {
		super();
		this.id = id;
		this.password = password;
		this.name = name;
		this.email = email;
		this.phoneNumber = phoneNumber;
		this.mileage = mileage;
	}
	
	public void setId(String id) {
		this.id = id;
	}
	

	public String getId() {
		return id;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getPhoneNumber() {
		return phoneNumber;
	}

	public void setPhoneNumber(String phoneNumber) {
		this.phoneNumber = phoneNumber;
	}

	public int getMileage() {
		return mileage;
	}

	public void setMileage(int mileage) {
		this.mileage = mileage;
	}

	@Override
	public String toString() {
		return "Customer [id=" + id + ", password=" + password + ", name="
				+ name + ", email=" + email + ", phoneNumber=" + phoneNumber
				+ ",\tmileage=" + mileage + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((email == null) ? 0 : email.hashCode());
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		result = prime * result + mileage;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		result = prime * result
				+ ((password == null) ? 0 : password.hashCode());
		result = prime * result
				+ ((phoneNumber == null) ? 0 : phoneNumber.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Customer other = (Customer) obj;
		if (email == null) {
			if (other.email != null)
				return false;
		} else if (!email.equals(other.email))
			return false;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		if (mileage != other.mileage)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		if (password == null) {
			if (other.password != null)
				return false;
		} else if (!password.equals(other.password))
			return false;
		if (phoneNumber == null) {
			if (other.phoneNumber != null)
				return false;
		} else if (!phoneNumber.equals(other.phoneNumber))
			return false;
		return true;
	}
}

지원해줄 인터페이스를 만들어 놓자!!

//Service.java - 인터페이스
public interface Service {


	public void registerCustomer(Customer customer);

	public void printCustomerList();

	public Customer findCustomerById(String id);
	public ArrayList findCustomerByName(String name);
	public ArrayList findCustomerByMileageRange(int startMileage,
			int endMileage);

	public void updateCustomerInfo(Customer changeInfo);

	public void removeCustomerById(String id);
	
}

이것이 Business Service이다!!

//CustomerSerivceMap.java
public class CustomerSerivceMap implements Service{
	//어떤게 리스트가 편하고, key가 편한지 체크해 볼것!!
	private HashMap customerMap;
	
	public CustomerSerivceMap(){
		customerMap = new HashMap();
	}
	public CustomerSerivceMap(int listSize){
		customerMap = new HashMap(listSize);
	}

	@Override
	public void registerCustomer(Customer customer) {
		// TODO Auto-generated method stub
		Customer custom = findCustomerById(customer.getId());
		if(custom==null)
		{
			customerMap.put(customer.getId(), customer);
		}
	}

	//엔트리로 처리하는 구문 암기하기.
	@Override
	public void printCustomerList() {
		// TODO Auto-generated method stub
		Set entrys = customerMap.entrySet();
		for(Object o :entrys){
			Entry entry = (Entry) o;
			System.out.println(entry.getKey()+" : "+entry.getValue());
			
		}
		
	}

	@Override
	public Customer findCustomerById(String id) {
		// TODO Auto-generated method stub
		Customer customer = null;
		boolean flag = false;
		flag = customerMap.containsKey(id);
		if (!flag) {
		} 
		else {
			customer = (Customer) customerMap.get(id);
		}
		return customer;
	}

	@Override
	public ArrayList findCustomerByName(String name) {
		// TODO Auto-generated method stub
		ArrayList customerList = new ArrayList();
		
		for (Object o : customerMap.values()) {
			
			if (((Customer) o).getName().equals(name)) {
					customerList.add(o);
			}
		}
		return customerList;
	}

	@Override
	public ArrayList findCustomerByMileageRange(int startMileage, int endMileage) {
		// TODO Auto-generated method stub
		ArrayList customerList = new ArrayList();
		for (Object o : customerMap.values()){
			if (startMileage<= ((Customer) o).getMileage() && ((Customer) o).getMileage() <=endMileage)
			{
				customerList.add(o);
			}
		}
		return customerList;
	}

	@Override
	public void updateCustomerInfo(Customer changeInfo) {
		// TODO Auto-generated method stub
		if(changeInfo.getId()==null || !customerMap.containsKey(changeInfo.getId()))
			return;
		else
		{
			customerMap.put(changeInfo.getId(), changeInfo);
		}
		
		
	}

	@Override
	public void removeCustomerById(String id) {
		// TODO Auto-generated method stub
		if(id==null || !customerMap.containsKey(id))
			return;
		
		customerMap.remove(findCustomerById(id));
	}
	
}

메인 클래스입니다!

//CustomerMapMain.java - Main

public class CustomerMapMain {

	public static void main(String[] args) {
		CustomerSerivceMap service = new CustomerSerivceMap();
		
		
		//등록할 고객 정보
		Customer c1 = new Customer("id-1", "1111","김영수",  "02-111-2222", "kys@kosta.or.kr", 40000);
		Customer c2 = new Customer("id-2", "4444","이미영", "031-222-3333", "lmy@kosta.or.kr", 5500);
		Customer c3 = new Customer("id-3", "2222","최우수",  "010-555-1212","cws@kosta.or.kr", 350000);
		Customer c4 = new Customer("id-4", "3333","이미영",  "010-3434-5656", "lmy@kosta.or.kr", 2700);
		Customer c5 = new Customer("id-5", "5555","이미영",  "031-532-6421", "Rmy@kosta.or.kr",550);
		Customer c6 = new Customer("id-6", "6666","장경수",  "010-9011-3222", "cks@kosta.or.kr", 66000);
		Customer c7 = new Customer("id-7", "7777","홍길범",  "010-5434-6533", "hkb@kosta.or.kr", 57000);
		
//		--------------------------------------------------------등록

		service.registerCustomer(c1);
		service.registerCustomer(c2);
		service.registerCustomer(c3);
		service.registerCustomer(c4);
		service.registerCustomer(c5);
		service.registerCustomer(c6);
		service.registerCustomer(c7);


//		-----------------------------------------------------전체 고객 정보 출력
		service.printCustomerList();

//		-----------------------------------------------------ID로  고객 조회
		String findId = "id-2";
		Customer cc = service.findCustomerById(findId);
		if(cc==null){
			System.out.println(findId+"는 없는 고객입니다.");
		}else{
			System.out.println("찾은 고객의 정보 : "+cc);
		}
		
		//--------------------------------------------------이름으로 조회
		String name = "이미영";
		System.out.println("----"+name+" 고객 정보-----");
		
		ArrayList list = service.findCustomerByName(name);
		
		if(list==null||list.size()==0){//고객을 못찾은 경우
			System.out.println(name+"는 없는 고객 - main()");
		}else{
			printList(list);
		}
		
//		----------------------------------------------------마일리지 범위로 조회
		int sMileage = 1000;
		int eMileage = 20000;
		System.out.println("마일리지 범위로 체크 ("+sMileage+"~"+eMileage+")");
		list = service.findCustomerByMileageRange(sMileage, eMileage);
		if(list==null||list.size()==0){//고객을 못찾은 경우
			System.out.println("마일리지 범위내에 고객이 없습니다. - main()");
		}else{
			printList(list);
		}
		
//		-------------------------------------------------------고객 정보 수정 수정
		System.out.println("-------------------------수정-----------------------");
		Customer custom1 = new Customer("id-2", "1111","최우수",  "010-555-1212","new@kosta.or.kr", 300000);
		service.updateCustomerInfo(custom1);
		service.printCustomerList();

//		--------------------------------------------------------고객 id로 고객정보 제거
		System.out.println("------------------삭제-------------------");
		service.removeCustomerById("id-5");
		service.printCustomerList();
	
	}

	public static void printList(ArrayList list){
		for(int idx = 0; idx < list.size(); idx++){
			System.out.println(list.get(idx));
		}
	}


}


반응형