DslValidationResult.java

package com.taxonomy.dsl.validation;

import java.util.*;

/**
 * Holds the result of DSL validation with categorized errors and warnings.
 */
public class DslValidationResult {

    private final List<String> errors = new ArrayList<>();
    private final List<String> warnings = new ArrayList<>();

    public void addError(String message) { errors.add(message); }
    public void addWarning(String message) { warnings.add(message); }

    public List<String> getErrors() { return Collections.unmodifiableList(errors); }
    public List<String> getWarnings() { return Collections.unmodifiableList(warnings); }

    public boolean isValid() { return errors.isEmpty(); }

    public boolean hasWarnings() { return !warnings.isEmpty(); }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        if (!errors.isEmpty()) {
            sb.append("Errors:\n");
            errors.forEach(e -> sb.append("  - ").append(e).append('\n'));
        }
        if (!warnings.isEmpty()) {
            sb.append("Warnings:\n");
            warnings.forEach(w -> sb.append("  - ").append(w).append('\n'));
        }
        if (errors.isEmpty() && warnings.isEmpty()) {
            sb.append("Valid");
        }
        return sb.toString();
    }
}