package husacct.validate.domain.validation.moduletype; import java.util.List; import husacct.validate.domain.validation.ruletype.RuleType; abstract class AbstractModule { abstract List<RuleType> initAllowedModuleRuleTypes(); abstract List<RuleType> initDefaultModuleRuleTypes(); protected List<RuleType> ruleTypes; protected List<RuleType> allowedRuleTypes; protected List<RuleType> defaultRuleTypes; public AbstractModule(List<RuleType> ruleTypes) { this.ruleTypes = ruleTypes; this.allowedRuleTypes = initAllowedModuleRuleTypes(); this.defaultRuleTypes = initDefaultModuleRuleTypes(); } public List<RuleType> getAllowedRuleTypes() { return this.allowedRuleTypes; } public List<RuleType> getDefaultRuleTypes() { return this.defaultRuleTypes; } public RuleType getRuleType(String ruleTypeKey) { RuleType ruleType = null; for (RuleType ruleTypeObj : ruleTypes) { if (ruleTypeObj.getKey().equals(ruleTypeKey)) { ruleType = ruleTypeObj; } } return ruleType; } public void setAllowedRuleType(String ruleTypeKey, boolean value) { RuleType ruleType = getRuleType(ruleTypeKey); if (!allowedRuleTypes.contains(ruleType) && value) { allowedRuleTypes.add(ruleType); } else if (allowedRuleTypes.contains(ruleType) && !value) { allowedRuleTypes.remove(ruleType); } } public void setDefaultRuleType(String ruleTypeKey, boolean value) { RuleType ruleType = getRuleType(ruleTypeKey); if (!defaultRuleTypes.contains(ruleType)) { defaultRuleTypes.add(ruleType); } else { if (value == false) { defaultRuleTypes.remove(ruleType); } } } }