1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.ccsds.section;
18
19 import org.orekit.files.ccsds.utils.FileFormat;
20 import org.orekit.files.ccsds.utils.lexical.ParseToken;
21 import org.orekit.files.ccsds.utils.lexical.TokenType;
22 import org.orekit.files.ccsds.utils.parsing.AbstractConstituentParser;
23
24
25
26
27
28 public enum XmlStructureKey {
29
30
31 body((token, parser) -> true),
32
33
34 segment((token, parser) -> true),
35
36
37 header((token, parser) -> {
38 if (token.getType() == TokenType.START) {
39 return parser.prepareHeader();
40 } else if (token.getType() == TokenType.STOP) {
41 return parser.finalizeHeader();
42 }
43 return false;
44 }),
45
46
47 metadata((token, parser) -> {
48 if (token.getType() == TokenType.START) {
49 return parser.prepareMetadata();
50 } else if (token.getType() == TokenType.STOP) {
51 return parser.finalizeMetadata();
52 }
53 return false;
54 }),
55
56
57 data((token, parser) -> {
58 if (token.getType() == TokenType.START) {
59 return parser.prepareData();
60 } else if (token.getType() == TokenType.STOP) {
61 return parser.finalizeData();
62 }
63 return false;
64 });
65
66
67 private final transient TokenProcessor processor;
68
69
70
71
72 XmlStructureKey(final TokenProcessor processor) {
73 this.processor = processor;
74 }
75
76
77
78
79
80
81 public boolean process(final ParseToken token, final AbstractConstituentParser<?, ?, ?> parser) {
82 return processor.process(token, parser);
83 }
84
85
86 interface TokenProcessor {
87
88
89
90
91
92 boolean process(ParseToken token, AbstractConstituentParser<?, ?, ?> parser);
93 }
94
95 }