package husacct.validate.domain.validation.ruletype.propertyruletypes; import husacct.common.dto.RuleDTO; import husacct.common.dto.SoftwareUnitDTO; import husacct.validate.domain.configuration.ConfigurationServiceImpl; import husacct.validate.domain.validation.Severity; import husacct.validate.domain.validation.Violation; import husacct.validate.domain.validation.ViolationType; import husacct.validate.domain.validation.internaltransferobjects.Mapping; import husacct.validate.domain.validation.ruletype.RuleType; import husacct.validate.domain.validation.ruletype.RuleTypes; import java.util.EnumSet; import java.util.List; public class VisibilityConvention extends RuleType { private final static EnumSet<RuleTypes> exceptionRuleTypes = EnumSet.noneOf(RuleTypes.class); public VisibilityConvention(String key, String category, List<ViolationType> violationTypes, Severity severity) { super(key, category, violationTypes, exceptionRuleTypes, severity); } @Override public List<Violation> check(ConfigurationServiceImpl configuration, RuleDTO currentRule) { violations.clear(); fromMappings = getAllClasspathsOfModule(currentRule.moduleFrom, currentRule.violationTypeKeys); int violationCounter = 0; for (Mapping physicalClasspathFrom : fromMappings) { SoftwareUnitDTO analysedModule = analyseService.getSoftwareUnitByUniqueName(physicalClasspathFrom.getPhysicalPath()); if (!analysedModule.type.toLowerCase().equals("package")) { for (String violationKey : currentRule.violationTypeKeys) { if (!analysedModule.visibility.toLowerCase().equals(violationKey.toLowerCase())) { violationCounter++; } } if (violationCounter == currentRule.violationTypeKeys.length && currentRule.violationTypeKeys.length != 0) { Violation violation = createViolation(currentRule, physicalClasspathFrom.getPhysicalPath(), analysedModule.visibility, configuration); violations.add(violation); } violationCounter = 0; } } return violations; } }