All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.structurizr.dsl.FindRelationshipsParser Maven / Gradle / Ivy

The newest version!
package com.structurizr.dsl;

import com.structurizr.model.ModelItem;
import com.structurizr.model.Relationship;

import java.util.Set;
import java.util.stream.Collectors;

final class FindRelationshipsParser extends AbstractParser {

    private static final String GRAMMAR = "!relationships ";

    private final static int EXPRESSION_INDEX = 1;

    Set parse(DslContext context, Tokens tokens) {
        // !relationships 

        if (tokens.hasMoreThan(EXPRESSION_INDEX)) {
            throw new RuntimeException("Too many tokens, expected: " + GRAMMAR);
        }

        String expression = tokens.get(1);
        Set modelItems = new ExpressionParser().parseExpression(expression, context);

        Set relationships = modelItems.stream().filter(mi -> mi instanceof Relationship).map(mi -> (Relationship)mi).collect(Collectors.toSet());

        if (relationships.isEmpty()) {
            throw new RuntimeException("No relationships found for expression \"" + expression + "\"");
        }

        return relationships;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy