package com.github.signed.changelog; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class CategoryBuilder { public static CategoryBuilder added() { return named("Added"); } public static CategoryBuilder changed() { return named("Changed"); } public static CategoryBuilder deprecated() { return named("Deprecated"); } public static CategoryBuilder removed() { return named("Removed"); } public static CategoryBuilder fixed() { return named("Fixed"); } public static CategoryBuilder security() { return named("Security"); } public static CategoryBuilder named(String name) { CategoryBuilder categoryBuilder = new CategoryBuilder(); categoryBuilder.name(name); return categoryBuilder; } private final List<ItemBuilder> items = new ArrayList<>(); private String name; public CategoryBuilder name(String name) { this.name = name; return this; } public ItemBuilder item() { ItemBuilder itemBuilder = new ItemBuilder(); item(itemBuilder); return itemBuilder; } public CategoryBuilder item(ItemBuilder itemBuilder) { items.add(itemBuilder); return this; } public Category build() { return new Category(name, items.stream().map(ItemBuilder::build).collect(Collectors.toList())); } }