39 lines
1.4 KiB
Java
39 lines
1.4 KiB
Java
package com.github.dtschust.zork.parser.strategies;
|
|
|
|
import com.github.dtschust.zork.ZorkTrigger;
|
|
import com.github.dtschust.zork.objects.ZorkContainer;
|
|
import com.github.dtschust.zork.parser.Property;
|
|
import com.github.dtschust.zork.parser.PropertyParseStrategy;
|
|
import com.github.dtschust.zork.parser.TriggerPropertyParseStrategy;
|
|
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
public class ZorkContainerParseStrategy implements PropertyParseStrategy<ZorkContainer> {
|
|
private final TriggerPropertyParseStrategy triggerStrategy;
|
|
|
|
public ZorkContainerParseStrategy(TriggerPropertyParseStrategy triggerStrategy) {
|
|
this.triggerStrategy = triggerStrategy;
|
|
}
|
|
|
|
@Override
|
|
public ZorkContainer parse(final Property element) {
|
|
|
|
final String name = element.subPropertyValue("name", "");
|
|
|
|
final String description = element.subPropertyValue("description", "");
|
|
|
|
final List<ZorkTrigger> triggers = element.subPropertiesByName("trigger").stream()
|
|
.map(triggerStrategy.parse(element))
|
|
.collect(Collectors.toList());
|
|
|
|
final String status = element.subPropertyValue("status", "");
|
|
|
|
final List<String> accepts = element.subPropertyValues("accept");
|
|
|
|
final List<String> items = element.subPropertyValues("item");
|
|
|
|
return new ZorkContainer(name, description, status, items, accepts, triggers);
|
|
}
|
|
}
|