1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.ccsds.ndm.cdm;
18
19 import org.orekit.files.ccsds.definitions.Units;
20 import org.orekit.files.ccsds.utils.ContextBinding;
21 import org.orekit.files.ccsds.utils.lexical.ParseToken;
22 import org.orekit.files.ccsds.utils.lexical.TokenType;
23 import org.orekit.utils.units.Unit;
24
25
26
27
28
29 public enum AdditionalParametersKey {
30
31
32 COMMENT((token, context, container) ->
33 token.getType() == TokenType.ENTRY ? container.addComment(token.getContentAsNormalizedString()) : true),
34
35
36 AREA_PC((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
37 container::setAreaPC)),
38
39
40 AREA_PC_MIN((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
41 container::setAreaPCMin)),
42
43
44 AREA_PC_MAX((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
45 container::setAreaPCMax)),
46
47
48 AREA_DRG((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
49 container::setAreaDRG)),
50
51
52 AREA_SRP((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
53 container::setAreaSRP)),
54
55
56 OEB_PARENT_FRAME((token, context, container) -> token.processAsFrame(container::setOebParentFrame, context, true, true, false)),
57
58
59 OEB_PARENT_FRAME_EPOCH((token, context, container) -> token.processAsDate(container::setOebParentFrameEpoch, context)),
60
61
62 OEB_Q1((token, context, container) -> token.processAsIndexedDouble(1, Unit.ONE, context.getParsedUnitsBehavior(),
63 container::setOebQ)),
64
65
66 OEB_Q2((token, context, container) -> token.processAsIndexedDouble(2, Unit.ONE, context.getParsedUnitsBehavior(),
67 container::setOebQ)),
68
69
70 OEB_Q3((token, context, container) -> token.processAsIndexedDouble(3, Unit.ONE, context.getParsedUnitsBehavior(),
71 container::setOebQ)),
72
73
74 OEB_QC((token, context, container) -> token.processAsIndexedDouble(0, Unit.ONE, context.getParsedUnitsBehavior(),
75 container::setOebQ)),
76
77
78 OEB_MAX((token, context, container) -> token.processAsDouble(Unit.METRE, context.getParsedUnitsBehavior(),
79 container::setOebMax)),
80
81
82 OEB_INT((token, context, container) -> token.processAsDouble(Unit.METRE, context.getParsedUnitsBehavior(),
83 container::setOebIntermediate)),
84
85
86 OEB_MIN((token, context, container) -> token.processAsDouble(Unit.METRE, context.getParsedUnitsBehavior(),
87 container::setOebMin)),
88
89
90 AREA_ALONG_OEB_MAX((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
91 container::setOebAreaAlongMax)),
92
93
94 AREA_ALONG_OEB_INT((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
95 container::setOebAreaAlongIntermediate)),
96
97
98 AREA_ALONG_OEB_MIN((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
99 container::setOebAreaAlongMin)),
100
101 RCS((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
102 container::setRcs)),
103
104
105 RCS_MIN((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
106 container::setMinRcs)),
107
108
109 RCS_MAX((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
110 container::setMaxRcs)),
111
112
113 VM_ABSOLUTE((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
114 container::setVmAbsolute)),
115
116
117 VM_APPARENT_MIN((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
118 container::setVmApparentMin)),
119
120
121 VM_APPARENT((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
122 container::setVmApparent)),
123
124
125 VM_APPARENT_MAX((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
126 container::setVmApparentMax)),
127
128
129 REFLECTANCE((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
130 container::setReflectance)),
131
132
133 MASS((token, context, container) -> token.processAsDouble(Unit.KILOGRAM, context.getParsedUnitsBehavior(),
134 container::setMass)),
135
136
137 HBR((token, context, container) -> token.processAsDouble(Unit.METRE, context.getParsedUnitsBehavior(),
138 container::setHbr)),
139
140
141 CD_AREA_OVER_MASS((token, context, container) -> token.processAsDouble(Units.M2_PER_KG, context.getParsedUnitsBehavior(),
142 container::setCDAreaOverMass)),
143
144
145 CR_AREA_OVER_MASS((token, context, container) -> token.processAsDouble(Units.M2_PER_KG, context.getParsedUnitsBehavior(),
146 container::setCRAreaOverMass)),
147
148
149 THRUST_ACCELERATION((token, context, container) -> token.processAsDouble(Units.M_PER_S2, context.getParsedUnitsBehavior(),
150 container::setThrustAcceleration)),
151
152
153 SEDR((token, context, container) -> token.processAsDouble(Units.W_PER_KG, context.getParsedUnitsBehavior(),
154 container::setSedr)),
155
156
157 APOAPSIS_ALTITUDE((token, context, container) -> token.processAsDouble(Unit.KILOMETRE, context.getParsedUnitsBehavior(),
158 container::setApoapsisAltitude)),
159
160
161 PERIAPSIS_ALTITUDE((token, context, container) -> token.processAsDouble(Unit.KILOMETRE, context.getParsedUnitsBehavior(),
162 container::setPeriapsisAltitude)),
163
164
165 INCLINATION((token, context, container) -> token.processAsDouble(Unit.DEGREE, context.getParsedUnitsBehavior(),
166 container::setInclination)),
167
168
169 COV_CONFIDENCE((token, context, container) -> token.processAsDouble(Unit.NONE, context.getParsedUnitsBehavior(),
170 container::setCovConfidence)),
171
172
173 COV_CONFIDENCE_METHOD((token, context, container) -> token.processAsFreeTextString(container::setCovConfidenceMethod));
174
175
176 private final transient TokenProcessor processor;
177
178
179
180
181 AdditionalParametersKey(final TokenProcessor processor) {
182 this.processor = processor;
183 }
184
185
186
187
188
189
190
191 public boolean process(final ParseToken token, final ContextBinding context, final AdditionalParameters container) {
192 return processor.process(token, context, container);
193 }
194
195
196 interface TokenProcessor {
197
198
199
200
201
202
203 boolean process(ParseToken token, ContextBinding context, AdditionalParameters container);
204 }
205
206 }