1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.ccsds.ndm.odm.ocm;
18
19 import org.orekit.files.ccsds.utils.ContextBinding;
20 import org.orekit.files.ccsds.utils.lexical.ParseToken;
21 import org.orekit.utils.units.Unit;
22
23
24
25
26
27
28 public enum OcmMetadataKey {
29
30
31
32 INTERNATIONAL_DESIGNATOR((token, context, container) -> token.processAsNormalizedString(container::setInternationalDesignator)),
33
34
35 CATALOG_NAME((token, context, container) -> token.processAsNormalizedString(container::setCatalogName)),
36
37
38 OBJECT_DESIGNATOR((token, context, container) -> token.processAsNormalizedString(container::setObjectDesignator)),
39
40
41 ALTERNATE_NAMES((token, context, container) -> token.processAsNormalizedList(container::setAlternateNames)),
42
43
44 ORIGINATOR_POC((token, context, container) -> token.processAsFreeTextString(container::setOriginatorPOC)),
45
46
47 ORIGINATOR_POSITION((token, context, container) -> token.processAsFreeTextString(container::setOriginatorPosition)),
48
49
50 ORIGINATOR_PHONE((token, context, container) -> token.processAsFreeTextString(container::setOriginatorPhone)),
51
52
53
54
55 ORIGINATOR_EMAIL((token, context, container) -> token.processAsFreeTextString(container::setOriginatorEmail)),
56
57
58 ORIGINATOR_ADDRESS((token, context, container) -> token.processAsFreeTextString(container::setOriginatorAddress)),
59
60
61 TECH_ORG((token, context, container) -> token.processAsFreeTextString(container::setTechOrg)),
62
63
64 TECH_POC((token, context, container) -> token.processAsFreeTextString(container::setTechPOC)),
65
66
67 TECH_POSITION((token, context, container) -> token.processAsFreeTextString(container::setTechPosition)),
68
69
70 TECH_PHONE((token, context, container) -> token.processAsFreeTextString(container::setTechPhone)),
71
72
73
74
75 TECH_EMAIL((token, context, container) -> token.processAsFreeTextString(container::setTechEmail)),
76
77
78 TECH_ADDRESS((token, context, container) -> token.processAsFreeTextString(container::setTechAddress)),
79
80
81 PREVIOUS_MESSAGE_ID((token, context, container) -> token.processAsFreeTextString(container::setPreviousMessageID)),
82
83
84 NEXT_MESSAGE_ID((token, context, container) -> token.processAsFreeTextString(container::setNextMessageID)),
85
86
87 ADM_MSG_LINK((token, context, container) -> token.processAsFreeTextString(container::setAdmMessageLink)),
88
89
90 CDM_MSG_LINK((token, context, container) -> token.processAsFreeTextString(container::setCdmMessageLink)),
91
92
93 PRM_MSG_LINK((token, context, container) -> token.processAsFreeTextString(container::setPrmMessageLink)),
94
95
96 RDM_MSG_LINK((token, context, container) -> token.processAsFreeTextString(container::setRdmMessageLink)),
97
98
99 TDM_MSG_LINK((token, context, container) -> token.processAsFreeTextString(container::setTdmMessageLink)),
100
101
102 OPERATOR((token, context, container) -> token.processAsFreeTextString(container::setOperator)),
103
104
105 OWNER((token, context, container) -> token.processAsFreeTextString(container::setOwner)),
106
107
108 COUNTRY((token, context, container) -> token.processAsFreeTextString(container::setCountry)),
109
110
111 CONSTELLATION((token, context, container) -> token.processAsFreeTextString(container::setConstellation)),
112
113
114
115
116 OBJECT_TYPE((token, context, container) -> token.processAsEnum(ObjectType.class, container::setObjectType)),
117
118
119
120 EPOCH_TZERO((token, context, container) -> token.processAsDate(container::setEpochT0, context)),
121
122
123
124
125 OPS_STATUS((token, context, container) -> token.processAsEnum(OpsStatus.class, container::setOpsStatus)),
126
127
128
129
130 ORBIT_CATEGORY((token, context, container) -> token.processAsEnum(OrbitCategory.class, container::setOrbitCategory)),
131
132
133 OCM_DATA_ELEMENTS((token, context, container) -> token.processAsEnumsList(OcmElements.class, container::setOcmDataElements)),
134
135
136 SCLK_OFFSET_AT_EPOCH((token, context, container) -> token.processAsDouble(Unit.SECOND, context.getParsedUnitsBehavior(),
137 container::setSclkOffsetAtEpoch)),
138
139
140 SCLK_SEC_PER_SI_SEC((token, context, container) -> token.processAsDouble(Unit.SECOND, context.getParsedUnitsBehavior(),
141 container::setSclkSecPerSISec)),
142
143
144 PREVIOUS_MESSAGE_EPOCH((token, context, container) -> token.processAsDate(container::setPreviousMessageEpoch, context)),
145
146
147 NEXT_MESSAGE_EPOCH((token, context, container) -> token.processAsDate(container::setNextMessageEpoch, context)),
148
149
150 START_TIME((token, context, container) -> token.processAsDate(container::setStartTime, context)),
151
152
153 STOP_TIME((token, context, container) -> token.processAsDate(container::setStopTime, context)),
154
155
156 TIME_SPAN((token, context, container) -> token.processAsDouble(Unit.DAY, context.getParsedUnitsBehavior(),
157 container::setTimeSpan)),
158
159
160 TAIMUTC_AT_TZERO((token, context, container) -> token.processAsDouble(Unit.SECOND, context.getParsedUnitsBehavior(),
161 container::setTaimutcT0)),
162
163
164
165
166 NEXT_LEAP_EPOCH((token, context, container) -> token.processAsDate(container::setNextLeapEpoch, context)),
167
168
169
170
171 NEXT_LEAP_TAIMUTC((token, context, container) -> token.processAsDouble(Unit.SECOND, context.getParsedUnitsBehavior(),
172 container::setNextLeapTaimutc)),
173
174
175 UT1MUTC_AT_TZERO((token, context, container) -> token.processAsDouble(Unit.SECOND, context.getParsedUnitsBehavior(),
176 container::setUt1mutcT0)),
177
178
179 EOP_SOURCE((token, context, container) -> token.processAsFreeTextString(container::setEopSource)),
180
181
182 INTERP_METHOD_EOP((token, context, container) -> token.processAsNormalizedString(container::setInterpMethodEOP)),
183
184
185 CELESTIAL_SOURCE((token, context, container) -> token.processAsFreeTextString(container::setCelestialSource));
186
187
188 private final transient TokenProcessor processor;
189
190
191
192
193 OcmMetadataKey(final TokenProcessor processor) {
194 this.processor = processor;
195 }
196
197
198
199
200
201
202
203 public boolean process(final ParseToken token, final ContextBinding context, final OcmMetadata container) {
204 return processor.process(token, context, container);
205 }
206
207
208 interface TokenProcessor {
209
210
211
212
213
214
215 boolean process(ParseToken token, ContextBinding context, OcmMetadata container);
216 }
217
218 }