Я использую Java вместе с библиотекой StringTemplate для создания файла конфигурации.
Файл конфигурации представляет системную архитектуру, в которой каждый имеет набор компонентов, причем каждый компонент может иметь набор портов, в результате чего они могут быть входными или выходными портами. Это на самом деле немного сложнее (порты могут быть в очереди и выборке), но давайте абстрагироваться от этого.
Допустим, у меня есть три шаблона:
1) config.st:
<configuration>
<component_list>
$components:component(); separator="\n"$
</component_list>
</configuration>
2) component.st
<component name="it.name">
<ports>
$ports:port_list(); separator"\n"$
</ports>
3) port.st
<port name="it.name" direction="it.direction"/>
Так что мой код Java выглядит примерно так:
StringTemplate configST = templates.getInstanceOf("config");
configST.setAttribute("components", sys_architecture.getComponents())
String config_out = configST.toString();
System.out.println(config_out);
Таким образом, этот код будет перебирать все компоненты внутри архитектуры системы. Все идет нормально. Но теперь я хотел бы перебрать каждый компонент по всем портам. Это возможно как-то?