package com.ggbond.design03_builder;

import jdk.jfr.FlightRecorder;
import jdk.jfr.Name;

import java.math.BigDecimal;
import java.util.HashMap;

/**
 * @author ggbond
 * @date 2024年04月02日 09:58
 */
public class House implements  Ihouse{

    private HashMap<String,Icomponent> map;
    private  String name;
    private  BigDecimal area;
    private BigDecimal prize=BigDecimal.ZERO;

    private House(){};
    public House(float area,  String name){
        map=new HashMap<>();
        this.area=new BigDecimal(area);
        this.name=name;
    }
    @Override
    public Ihouse addDoor(Icomponent door) {
        map.put("door",door);
        prize=prize.add(door.price());
        return this;
    }

    @Override
    public Ihouse addFloor(Icomponent floor) {
        map.put("floor", floor);
        prize=prize.add(area.multiply(floor.price()));
        return this;
    }

    @Override
    public Ihouse addWindow(Icomponent window) {
        map.put("window", window);
        prize=prize.add(area.multiply(window.price()));
        return this;
    }

    @Override
    public Ihouse addRoof(Icomponent roof) {
        map.put("roof", roof);
        prize=prize.add(area.multiply(roof.price()));
        return this;
    }
    @Override
    public String getInfo(){
        StringBuilder info=new StringBuilder(
                "房子名称:"+name+"\r\n"+
                "装修面积:"+area+"\r\n"+
                "装修材料如下:"+"\r\n"+
                map.get("door").type()+"\r\n"+
                map.get("window").type()+"\r\n"+
                map.get("roof").type()+"\r\n"+
                map.get("floor").type()+"\r\n"+
                "装修费用共计:"+prize+" 元"+"\r\n"+
                "---------------------------"+"\r\n");
        return  info.toString();
    }
}