1 package io.guixer.lang;
2
3 import static com.google.common.base.Preconditions.checkNotNull;
4 import static com.google.common.collect.Lists.newArrayList;
5
6 import java.io.File;
7 import java.io.IOException;
8 import java.util.List;
9
10 import net.avcompris.commons3.yaml.Yaml;
11 import net.avcompris.commons3.yaml.YamlUtils;
12
13 public abstract class GuixerScenarioLoader1 {
14
15 public static GuixerScenario load(
16 final File yamlFile
17 ) throws IOException, GuixerSyntaxException {
18
19 return AbstractGuixerScenarioLoader.load(yamlFile, new MyYamlStrategy1());
20 }
21
22 private static class MyYamlStrategy1 implements MyYamlStrategy {
23
24 @Override
25 public MyYaml loadYaml(
26 final File yamlFile
27 ) throws IOException {
28
29 final Yaml yaml = YamlUtils.loadYaml(yamlFile);
30
31 return new MyYaml1(yaml);
32 }
33 }
34
35 private static class MyYaml1 implements MyYaml {
36
37 private final Yaml yaml;
38
39 public MyYaml1(
40 final Yaml yaml
41 ) {
42
43 this.yaml = checkNotNull(yaml, "yaml");
44 }
45
46 @Override
47 public boolean isArray() {
48
49 return yaml.isArray();
50 }
51
52 @Override
53 public boolean isMap() {
54
55 return yaml.isMap();
56 }
57
58 @Override
59 public String asString() {
60
61 return yaml.asString();
62 }
63
64 @Override
65 public boolean asBoolean() {
66
67 return yaml.asBoolean();
68 }
69
70 @Override
71 public boolean has(
72 final String name
73 ) {
74
75 return yaml.has(name);
76 }
77
78 @Override
79 public MyYaml get(
80 final String name
81 ) {
82
83 final Yaml sub = yaml.get(name);
84
85 return new MyYaml1(sub);
86 }
87
88 @Override
89 public Iterable<MyYaml> items() {
90
91 final List<MyYaml> items = newArrayList();
92
93 for (final Yaml sub : yaml.items()) {
94
95 items.add(new MyYaml1(sub));
96 }
97
98 return items;
99 }
100
101 @Override
102 public String uniqueKey() {
103
104 return yaml.keysAsStrings().iterator().next();
105 }
106
107 @Override
108 public Iterable<String> keysAsStrings() {
109
110 return yaml.keysAsStrings();
111 }
112 }
113 }