package com.github.dtschust.zork.parser.builders; import com.github.dtschust.zork.ZorkTrigger; import com.github.dtschust.zork.parser.DOMUtils; import com.github.dtschust.zork.parser.dom.Elements; import com.github.dtschust.zork.types.ZorkContainer; import org.w3c.dom.Element; import java.util.List; import java.util.stream.Collectors; public class ZorkContainerParseStrategy implements ZorkParseStrategy { private final ZorkParseStrategy triggerStrategy; public ZorkContainerParseStrategy(ZorkParseStrategy triggerStrategy) { this.triggerStrategy = triggerStrategy; } @Override public ZorkContainer parse(final Element element) { final String name = DOMUtils.getInnerTextByTagName(element, "name", ""); final String description = DOMUtils.getInnerTextByTagName(element, "description", ""); final List triggers = Elements.byTagName(element, "trigger").stream() .map(triggerStrategy::parse) .collect(Collectors.toList()); final String status = DOMUtils.getInnerTextByTagName(element, "status", ""); final List accepts = Elements.innerTextByTagName(element, "accept"); final List items = Elements.innerTextByTagName(element, "item"); return new ZorkContainer(name, description, status, items, accepts, triggers); } }