ExternalParser.java

package com.taxonomy.catalog.service.importer;

import com.taxonomy.dsl.mapping.ExternalElement;
import com.taxonomy.dsl.mapping.ExternalRelation;

import java.io.InputStream;
import java.util.List;
import com.taxonomy.dsl.mapping.ExternalModelMapper;

/**
 * Parses an external architecture model file into lists of
 * {@link ExternalElement}s and {@link ExternalRelation}s.
 *
 * <p>Implementations handle a single file format (XML, CSV, DSL, etc.).
 * The parsed data is then fed into an {@link com.taxonomy.dsl.mapping.ExternalModelMapper}
 * for conversion to the canonical model.
 */
public interface ExternalParser {

    /**
     * Parse an input stream into external elements and relations.
     *
     * @param input the file content
     * @return a parsed external model
     * @throws Exception if parsing fails
     */
    ParsedExternalModel parse(InputStream input) throws Exception;

    /**
     * The file format this parser supports (e.g., "xml", "csv", "dsl").
     */
    String fileFormat();

    /**
     * Parsed result containing elements and relations extracted from an external file.
     */
    record ParsedExternalModel(
        List<ExternalElement> elements,
        List<ExternalRelation> relations
    ) {}
}