1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.ccsds.ndm.tdm;
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.utils.units.Unit;
23
24
25
26
27
28
29 public enum TdmMetadataKey {
30
31
32 TRACK_ID((token, context, container) -> token.processAsNormalizedString(container::setTrackId)),
33
34
35 DATA_TYPES((token, context, container) -> token.processAsEnumsList(ObservationType.class, container::setDataTypes)),
36
37
38 START_TIME((token, context, container) -> token.processAsDate(container::setStartTime, context)),
39
40
41 STOP_TIME((token, context, container) -> token.processAsDate(container::setStopTime, context)),
42
43
44 PARTICIPANT_1((token, context, container) -> token.processAsIndexedNormalizedString(1, container::addParticipant)),
45
46
47 PARTICIPANT_2((token, context, container) -> token.processAsIndexedNormalizedString(2, container::addParticipant)),
48
49
50 PARTICIPANT_3((token, context, container) -> token.processAsIndexedNormalizedString(3, container::addParticipant)),
51
52
53 PARTICIPANT_4((token, context, container) -> token.processAsIndexedNormalizedString(4, container::addParticipant)),
54
55
56 PARTICIPANT_5((token, context, container) -> token.processAsIndexedNormalizedString(5, container::addParticipant)),
57
58
59 MODE((token, context, container) -> token.processAsEnum(TrackingMode.class, container::setMode)),
60
61
62 PATH((token, context, container) -> token.processAsIntegerArrayNoSpace(container::setPath)),
63
64
65 PATH_1((token, context, container) -> token.processAsIntegerArrayNoSpace(container::setPath1)),
66
67
68 PATH_2((token, context, container) -> token.processAsIntegerArrayNoSpace(container::setPath2)),
69
70
71 EPHEMERIS_NAME_1((token, context, container) -> token.processAsIndexedNormalizedString(1, container::addEphemerisName)),
72
73
74 EPHEMERIS_NAME_2((token, context, container) -> token.processAsIndexedNormalizedString(2, container::addEphemerisName)),
75
76
77 EPHEMERIS_NAME_3((token, context, container) -> token.processAsIndexedNormalizedString(3, container::addEphemerisName)),
78
79
80 EPHEMERIS_NAME_4((token, context, container) -> token.processAsIndexedNormalizedString(4, container::addEphemerisName)),
81
82
83 EPHEMERIS_NAME_5((token, context, container) -> token.processAsIndexedNormalizedString(5, container::addEphemerisName)),
84
85
86 TRANSMIT_BAND((token, context, container) -> token.processAsUppercaseString(container::setTransmitBand)),
87
88
89 RECEIVE_BAND((token, context, container) -> token.processAsUppercaseString(container::setReceiveBand)),
90
91
92 TURNAROUND_NUMERATOR((token, context, container) -> token.processAsInteger(container::setTurnaroundNumerator)),
93
94
95 TURNAROUND_DENOMINATOR((token, context, container) -> token.processAsInteger(container::setTurnaroundDenominator)),
96
97
98 TIMETAG_REF((token, context, container) -> token.processAsEnum(TimetagReference.class, container::setTimetagRef)),
99
100
101 INTEGRATION_INTERVAL((token, context, container) -> token.processAsDouble(Unit.SECOND, context.getParsedUnitsBehavior(),
102 container::setIntegrationInterval)),
103
104
105 INTEGRATION_REF((token, context, container) -> token.processAsEnum(IntegrationReference.class, container::setIntegrationRef)),
106
107
108 FREQ_OFFSET((token, context, container) -> token.processAsDouble(Unit.HERTZ, context.getParsedUnitsBehavior(),
109 container::setFreqOffset)),
110
111
112 RANGE_MODE((token, context, container) -> token.processAsEnum(RangeMode.class, container::setRangeMode)),
113
114
115 RANGE_MODULUS((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
116 container::setRawRangeModulus)),
117
118
119 RANGE_UNITS((token, context, container) -> token.processAsEnum(RangeUnits.class, container::setRangeUnits)),
120
121
122 ANGLE_TYPE((token, context, container) -> token.processAsEnum(AngleType.class, container::setAngleType)),
123
124
125 REFERENCE_FRAME((token, context, container) -> token.processAsFrame(container::setReferenceFrame, context, true, false, false)),
126
127
128 INTERPOLATION((token, context, container) -> token.processAsUppercaseString(container::setInterpolationMethod)),
129
130
131 INTERPOLATION_DEGREE((token, context, container) -> token.processAsInteger(container::setInterpolationDegree)),
132
133
134 DOPPLER_COUNT_BIAS((token, context, container) -> token.processAsDouble(Unit.HERTZ, context.getParsedUnitsBehavior(),
135 container::setDopplerCountBias)),
136
137
138 DOPPLER_COUNT_SCALE((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
139 container::setDopplerCountScale)),
140
141
142 DOPPLER_COUNT_ROLLOVER((token, context, container) -> token.processAsBoolean(container::setDopplerCountRollover)),
143
144
145 TRANSMIT_DELAY_1((token, context, container) -> token.processAsIndexedDouble(1, Unit.SECOND, context.getParsedUnitsBehavior(),
146 container::addTransmitDelay)),
147
148
149 TRANSMIT_DELAY_2((token, context, container) -> token.processAsIndexedDouble(2, Unit.SECOND, context.getParsedUnitsBehavior(),
150 container::addTransmitDelay)),
151
152
153 TRANSMIT_DELAY_3((token, context, container) -> token.processAsIndexedDouble(3, Unit.SECOND, context.getParsedUnitsBehavior(),
154 container::addTransmitDelay)),
155
156
157 TRANSMIT_DELAY_4((token, context, container) -> token.processAsIndexedDouble(4, Unit.SECOND, context.getParsedUnitsBehavior(),
158 container::addTransmitDelay)),
159
160
161 TRANSMIT_DELAY_5((token, context, container) -> token.processAsIndexedDouble(5, Unit.SECOND, context.getParsedUnitsBehavior(),
162 container::addTransmitDelay)),
163
164
165 RECEIVE_DELAY_1((token, context, container) -> token.processAsIndexedDouble(1, Unit.SECOND, context.getParsedUnitsBehavior(),
166 container::addReceiveDelay)),
167
168
169 RECEIVE_DELAY_2((token, context, container) -> token.processAsIndexedDouble(2, Unit.SECOND, context.getParsedUnitsBehavior(),
170 container::addReceiveDelay)),
171
172
173 RECEIVE_DELAY_3((token, context, container) -> token.processAsIndexedDouble(3, Unit.SECOND, context.getParsedUnitsBehavior(),
174 container::addReceiveDelay)),
175
176
177 RECEIVE_DELAY_4((token, context, container) -> token.processAsIndexedDouble(4, Unit.SECOND, context.getParsedUnitsBehavior(),
178 container::addReceiveDelay)),
179
180
181 RECEIVE_DELAY_5((token, context, container) -> token.processAsIndexedDouble(5, Unit.SECOND, context.getParsedUnitsBehavior(),
182 container::addReceiveDelay)),
183
184
185 DATA_QUALITY((token, context, container) -> token.processAsEnum(DataQuality.class, container::setDataQuality)),
186
187
188 CORRECTION_ANGLE_1((token, context, container) -> token.processAsDouble(Unit.DEGREE, context.getParsedUnitsBehavior(),
189 container::setCorrectionAngle1)),
190
191
192 CORRECTION_ANGLE_2((token, context, container) -> token.processAsDouble(Unit.DEGREE, context.getParsedUnitsBehavior(),
193 container::setCorrectionAngle2)),
194
195
196 CORRECTION_DOPPLER((token, context, container) -> token.processAsDouble(Units.KM_PER_S, context.getParsedUnitsBehavior(),
197 container::setCorrectionDoppler)),
198
199
200 CORRECTION_MAG((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
201 container::setCorrectionMagnitude)),
202
203
204 CORRECTION_RANGE((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
205 container::setRawCorrectionRange)),
206
207
208 CORRECTION_RCS((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
209 container::setCorrectionRcs)),
210
211
212 CORRECTION_RECEIVE((token, context, container) -> token.processAsDouble(Unit.HERTZ, context.getParsedUnitsBehavior(),
213 container::setCorrectionReceive)),
214
215
216 CORRECTION_TRANSMIT((token, context, container) -> token.processAsDouble(Unit.HERTZ, context.getParsedUnitsBehavior(),
217 container::setCorrectionTransmit)),
218
219
220 CORRECTION_ABERRATION_YEARLY((token, context, container) -> token.processAsDouble(Unit.DEGREE, context.getParsedUnitsBehavior(),
221 container::setCorrectionAberrationYearly)),
222
223
224 CORRECTION_ABERRATION_DIURNAL((token, context, container) -> token.processAsDouble(Unit.DEGREE, context.getParsedUnitsBehavior(),
225 container::setCorrectionAberrationDiurnal)),
226
227
228 CORRECTIONS_APPLIED((token, context, container) -> token.processAsEnum(CorrectionApplied.class, container::setCorrectionsApplied));
229
230
231 private final transient TokenProcessor processor;
232
233
234
235
236 TdmMetadataKey(final TokenProcessor processor) {
237 this.processor = processor;
238 }
239
240
241
242
243
244
245
246 public boolean process(final ParseToken token, final ContextBinding context, final TdmMetadata container) {
247 return processor.process(token, context, container);
248 }
249
250
251 interface TokenProcessor {
252
253
254
255
256
257
258 boolean process(ParseToken token, ContextBinding context, TdmMetadata container);
259 }
260
261 }