1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.ccsds.ndm.adm.apm;
18
19 import org.orekit.files.ccsds.utils.ContextBinding;
20 import org.orekit.files.ccsds.utils.lexical.ParseToken;
21 import org.orekit.files.ccsds.utils.lexical.TokenType;
22
23
24
25
26
27 enum ApmDataSubStructureKey {
28
29
30 COMMENT((token, context, parser) -> token.getType() == TokenType.ENTRY ? parser.addGeneralComment(token.getContentAsNormalizedString()) : true),
31
32
33 EPOCH((token, context, parser) -> token.processAsDate(parser::setEpoch, context)),
34
35
36 QUAT((token, context, parser) -> parser.manageQuaternionSection(token.getType() == TokenType.START)),
37
38
39 quaternionState((token, context, parser) -> parser.manageQuaternionSection(token.getType() == TokenType.START)),
40
41
42 EULER((token, context, parser) -> parser.manageEulerElementsSection(token.getType() == TokenType.START)),
43
44
45 eulerAngleState((token, context, parser) -> parser.manageEulerElementsSection(token.getType() == TokenType.START)),
46
47
48 ANGVEL((token, context, parser) -> parser.manageAngularVelocitylementsSection(token.getType() == TokenType.START)),
49
50
51 angularVelocity((token, context, parser) -> parser.manageAngularVelocitylementsSection(token.getType() == TokenType.START)),
52
53
54 eulerElementsThree((token, context, parser) -> parser.manageEulerElementsSection(token.getType() == TokenType.START)),
55
56
57 eulerElementsSpin((token, context, parser) -> parser.manageSpinElementsSection(token.getType() == TokenType.START)),
58
59
60 SPIN((token, context, parser) -> parser.manageSpinElementsSection(token.getType() == TokenType.START)),
61
62
63 spin((token, context, parser) -> parser.manageSpinElementsSection(token.getType() == TokenType.START)),
64
65
66 spacecraftParameters((token, context, parser) -> parser.manageInertiaSection(token.getType() == TokenType.START)),
67
68
69 INERTIA((token, context, parser) -> parser.manageInertiaSection(token.getType() == TokenType.START)),
70
71
72 inertia((token, context, parser) -> parser.manageInertiaSection(token.getType() == TokenType.START)),
73
74
75 MAN((token, context, parser) -> parser.manageManeuverParametersSection(token.getType() == TokenType.START)),
76
77
78 maneuverParameters((token, context, parser) -> parser.manageManeuverParametersSection(token.getType() == TokenType.START));
79
80
81 private final transient TokenProcessor processor;
82
83
84
85
86 ApmDataSubStructureKey(final TokenProcessor processor) {
87 this.processor = processor;
88 }
89
90
91
92
93
94
95
96 public boolean process(final ParseToken token, final ContextBinding context, final ApmParser parser) {
97 return processor.process(token, context, parser);
98 }
99
100
101 interface TokenProcessor {
102
103
104
105
106
107
108 boolean process(ParseToken token, ContextBinding context, ApmParser parser);
109 }
110
111 }