ArchiMateImportResult.java

package com.taxonomy.dto;

import java.util.ArrayList;
import java.util.List;

/**
 * Result of an ArchiMate XML preview or import operation.
 *
 * <p>The counters deliberately distinguish parsing/matching from mutation so
 * clients can tell whether a model was understood, skipped as a duplicate, or
 * materialized into the active workspace.</p>
 */
public class ArchiMateImportResult {

    private int elementsImported;
    private int elementsMatched;
    private int elementsUnmatched;
    private int relationsParsed;
    private int relationsImported;
    private int relationsSkipped;
    private int relationsRejected;
    private boolean preview;
    private String mappingProfile;
    private List<ImportLoss> losses = List.of();
    private List<String> notes = new ArrayList<>();

    public record ImportLoss(String scope, String id, String field, String kind, String rationale) { }

    public String getMappingProfile() { return mappingProfile; }
    public void setMappingProfile(String mappingProfile) { this.mappingProfile = mappingProfile; }
    public List<ImportLoss> getLosses() { return losses; }
    public void setLosses(List<ImportLoss> losses) { this.losses = List.copyOf(losses); }

    public ArchiMateImportResult() {
    }

    public int getElementsImported() { return elementsImported; }
    public void setElementsImported(int elementsImported) { this.elementsImported = elementsImported; }

    public int getElementsMatched() { return elementsMatched; }
    public void setElementsMatched(int elementsMatched) { this.elementsMatched = elementsMatched; }

    public int getElementsUnmatched() { return elementsUnmatched; }
    public void setElementsUnmatched(int elementsUnmatched) { this.elementsUnmatched = elementsUnmatched; }

    public int getRelationsParsed() { return relationsParsed; }
    public void setRelationsParsed(int relationsParsed) { this.relationsParsed = relationsParsed; }

    public int getRelationsImported() { return relationsImported; }
    public void setRelationsImported(int relationsImported) { this.relationsImported = relationsImported; }

    public int getRelationsSkipped() { return relationsSkipped; }
    public void setRelationsSkipped(int relationsSkipped) { this.relationsSkipped = relationsSkipped; }

    public int getRelationsRejected() { return relationsRejected; }
    public void setRelationsRejected(int relationsRejected) { this.relationsRejected = relationsRejected; }

    public boolean isPreview() { return preview; }
    public void setPreview(boolean preview) { this.preview = preview; }

    public List<String> getNotes() { return notes; }
    public void setNotes(List<String> notes) { this.notes = notes; }
}