package samples.lombok;

import lombok.Builder;
import lombok.Singular;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Jitendra Singh.
 */
@Builder
public class BuilderLombokNormal {

    private String name;
    private int age;
    @Singular private List<String> addresses;

    private BuilderLombokNormal(String name, int age, List<String> addresses) {
        this.name = name;
        this.age = age;
        this.addresses = addresses;
    }

    public static class BuilderLombokNormalBuilder {
        private String name;
        private int age;
        private List<String> addresses;

        public BuilderLombokNormalBuilder name(String name) {
            this.name = name;
            return this;
        }

        public BuilderLombokNormalBuilder age(int age) {
            this.age = age;
            return this;
        }

        public BuilderLombokNormalBuilder addresses(String address) {
            if(addresses == null) {
                addresses = new ArrayList<>();
            }
            this.addresses.add(address);
            return this;
        }

        public BuilderLombokNormalBuilder addresses(List<String> address) {
            if(addresses == null) {
                addresses = new ArrayList<>();
            }
            this.addresses.addAll(address);
            return this;
        }

        public BuilderLombokNormal build() {
            return new BuilderLombokNormal(name, age, addresses);
        }
    }
}