package de.banananetwork.dsa.requirements; public abstract class RequirementCheckResult { private final Requirement requirement; private RequirementCheckResult(Requirement requirement) { this.requirement = requirement; } public Requirement getRequirement() { return requirement; } public enum State { ACCEPTED(0), WARNING(1), ERROR(2); private final int priority; State(int priority) { this.priority = priority; } public State combine(State state) { return state.priority > this.priority ? state : this; } } private static class SingleResult extends RequirementCheckResult { } private static class CombinedResult extends RequirementCheckResult { RequirementCheckResult[] results; } }