package husacct.validate.domain.assembler;
import husacct.common.dto.CategoryDTO;
import husacct.common.dto.RuleTypeDTO;
import husacct.validate.domain.validation.ruletype.RuleType;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class CategoryDtoAssembler {
private RuleTypeDtoAssembler ruleAssembler;
public CategoryDtoAssembler() {
this.ruleAssembler = new RuleTypeDtoAssembler();
}
public CategoryDTO[] createCategoryDTO(List<RuleType> rules) {
List<CategoryDTO> categories = new ArrayList<CategoryDTO>();
List<String> categoryKeys = getCategoryKeyList(rules);
for (String key : categoryKeys) {
List<RuleType> categoryRules = getRulesByCategorykey(rules, key);
RuleTypeDTO[] ruletypes = ruleAssembler.createRuleTypeDTO(categoryRules);
categories.add(new CategoryDTO(key, ruletypes));
}
return categories.toArray(new CategoryDTO[categories.size()]);
}
private List<String> getCategoryKeyList(List<RuleType> rules) {
Set<String> categoryKeys = new HashSet<String>();
for (RuleType rule : rules) {
categoryKeys.add(rule.getCategoryKey());
}
return new ArrayList<String>(categoryKeys);
}
private List<RuleType> getRulesByCategorykey(List<RuleType> rules, String categoryKey) {
List<RuleType> categoryRules = new ArrayList<RuleType>();
for (RuleType rule : rules) {
if (rule.getCategoryKey().equals(categoryKey)) {
categoryRules.add(rule);
}
}
return categoryRules;
}
}