728x90
반응형

map, api, 예외처리를 활용한 예제

 

map을 사용하여 상품 재고 정보를 저장하고 출력함

출력시 날짜 데이터는 SimpleDateFormat을 사용하여 출력처리함

출고수량이 입고수량보다 많을 경우 AmountNotEnough 예외를 발생시켜 처리함

 

> 실행결과

고양이 스카프, 2019년 03월 15일 입고, 20개, null, 0개, 재고 20개
고양이 해먹, 2018년 07월 15일 입고, 30개, null, 0개, 재고 30개
캣타워, 2020년 02월 15일 입고, 15개, null, 0개, 재고 15개

출고 수량 10 적용시 ---------------------------------------
고양이 스카프, 2019년 03월 15일 입고, 20개, 2020년 05월 09일 출고, 10개, 재고 10개
고양이 해먹, 2018년 07월 15일 입고, 30개, 2020년 05월 09일 출고, 10개, 재고 20개
캣타워, 2020년 02월 15일 입고, 15개, 2020년 05월 09일 출고, 10개, 재고 5개

출고 수량 부족시 ---------------------------------------
현재 재고가 부족합니다. 재고수량 확인하시기 바랍니다.

public class MapTest {

	public static void main(String[] args){
		Map<String, Inventory> map = new HashMap<>();
		
		map.put("고양이 해먹", new Inventory("고양이 해먹", new Date(new GregorianCalendar(2018,06,15).getTimeInMillis()), 30));
		map.put("고양이 스카프", new Inventory("고양이 스카프", new Date(new GregorianCalendar(2019,02,15).getTimeInMillis()), 20));
		map.put("캣타워", new Inventory("캣타워", new Date(new GregorianCalendar(2020,01,15).getTimeInMillis()), 15));
		
		//맵에 기록된 정보 전체 출력 entrySet()
		for(Map.Entry<String, Inventory> entry : map.entrySet()) {
			System.out.println(entry.getValue());
		}
		
		System.out.println("\n출고 수량 10 적용시 ---------------------------------------");
		Inventory[] inventoryArr = new Inventory[map.size()];
		map.values().toArray(inventoryArr);  //맵에 기록된 정보를 Inventory[]로 변환
		for(Inventory inventory : inventoryArr) {
			inventory.setGetDate(new Date());
			try {
				inventory.setGetAmount(10);
			} catch (AmountNotEnough e) {
				e.getMessage();
			}
			System.out.println(inventory);
		}
		
		System.out.println("\n출고 수량 부족시 ---------------------------------------");
		for(Inventory inventory : inventoryArr) {
			try {
				inventory.setGetAmount(50);
			} catch (AmountNotEnough e) {
				e.getMessage();
				break;
			}
		}
	}
}
public class Inventory {
	
	private String productName;
	private Date putDate;
	private Date getDate;
	private int putAmount;
	private int getAmount;
	private int inventoryAmount;

	public Inventory() {}

	public Inventory(String productName, Date putDate, int putAmount) {
		this.productName = productName;
		this.putDate = putDate;
		this.putAmount = putAmount;
		this.inventoryAmount = putAmount;
	}

	@Override
	public String toString() {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일");
		return productName+", "+sdf.format(putDate)+" 입고, "+putAmount+"개, "
				+(getDate != null?sdf.format(getDate)+" 출고":"null") 
				+", "+getAmount+"개, 재고 "+inventoryAmount+"개";
	}

	public String getProductName() {return productName;}
	public void setProductName(String productName) {this.productName = productName;}
	public Date getPutDate() {return putDate;}
	public void setPutDate(Date putDate) {this.putDate = putDate;}
	public Date getGetDate() {return getDate;}
	public void setGetDate(Date getDate) {this.getDate = getDate;}
	public int getPutAmount() {return putAmount;}
	public void setPutAmount(int putAmount) {this.putAmount = putAmount;}
	public int getGetAmount() {return getAmount;}
	public void setGetAmount(int getAmount) throws AmountNotEnough {
		this.getAmount = getAmount;
		if(putAmount>=getAmount) {
			inventoryAmount -= getAmount;
			
		}else {
			throw new AmountNotEnough("현재 재고가 부족합니다. 재고수량 확인하시기 바랍니다.");
			
		}
	}
	
	public int getInventoryAmount() {return inventoryAmount;}
	public void setInventoryAmount(int inventoryAmount) {this.inventoryAmount = inventoryAmount;}
}
public class AmountNotEnough extends Exception{

	public AmountNotEnough(String message) {
		super(message);
		System.out.println(message);
	}
}
반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

05.05(IO, List예제)  (0) 2020.05.05
05.04(BufferedReader 예제)  (0) 2020.05.04
04.30(Properties, IO, 배열을 사용한 예제)  (0) 2020.04.30
04.29(ArrayList 내림차순 정렬 예제)  (0) 2020.04.29
04.28(GUI 작업 순서)  (0) 2020.04.28
복사했습니다!