This repository has been archived on 2022-12-21. You can view files and clone it, but cannot push or open issues or pull requests.
sdm03/src/main/java/com/github/dtschust/zork/parser/builders/ZorkContainerParseStrategy.java
2022-11-22 09:55:26 +01:00

38 lines
1.4 KiB
Java

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<ZorkContainer> {
private final ZorkParseStrategy<ZorkTrigger> triggerStrategy;
public ZorkContainerParseStrategy(ZorkParseStrategy<ZorkTrigger> 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<ZorkTrigger> triggers = Elements.byTagName(element, "trigger").stream()
.map(triggerStrategy::parse)
.collect(Collectors.toList());
final String status = DOMUtils.getInnerTextByTagName(element, "status", "");
final List<String> accepts = Elements.innerTextByTagName(element, "accept");
final List<String> items = Elements.innerTextByTagName(element, "item");
return new ZorkContainer(name, description, status, items, accepts, triggers);
}
}