1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.ccsds.ndm.adm.acm;
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 AcmMetadataKey {
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 ORIGINATOR_POC((token, context, container) -> token.processAsFreeTextString(container::setOriginatorPOC)),
42
43
44 ORIGINATOR_POSITION((token, context, container) -> token.processAsFreeTextString(container::setOriginatorPosition)),
45
46
47 ORIGINATOR_PHONE((token, context, container) -> token.processAsFreeTextString(container::setOriginatorPhone)),
48
49
50 ORIGINATOR_EMAIL((token, context, container) -> token.processAsFreeTextString(container::setOriginatorEmail)),
51
52
53 ORIGINATOR_ADDRESS((token, context, container) -> token.processAsFreeTextString(container::setOriginatorAddress)),
54
55
56 ODM_MSG_LINK((token, context, container) -> token.processAsFreeTextString(container::setOdmMessageLink)),
57
58
59
60 EPOCH_TZERO((token, context, container) -> token.processAsDate(container::setEpochT0, context)),
61
62
63 ACM_DATA_ELEMENTS((token, context, container) -> token.processAsEnumsList(AcmElements.class, container::setAcmDataElements)),
64
65
66 START_TIME((token, context, container) -> token.processAsDate(container::setStartTime, context)),
67
68
69 STOP_TIME((token, context, container) -> token.processAsDate(container::setStopTime, context)),
70
71
72 TAIMUTC_AT_TZERO((token, context, container) -> token.processAsDouble(Unit.SECOND, context.getParsedUnitsBehavior(),
73 container::setTaimutcT0)),
74
75
76 NEXT_LEAP_EPOCH((token, context, container) -> token.processAsDate(container::setNextLeapEpoch, context)),
77
78
79 NEXT_LEAP_TAIMUTC((token, context, container) -> token.processAsDouble(Unit.SECOND, context.getParsedUnitsBehavior(),
80 container::setNextLeapTaimutc));
81
82
83 private final transient TokenProcessor processor;
84
85
86
87
88 AcmMetadataKey(final TokenProcessor processor) {
89 this.processor = processor;
90 }
91
92
93
94
95
96
97
98 public boolean process(final ParseToken token, final ContextBinding context, final AcmMetadata container) {
99 return processor.process(token, context, container);
100 }
101
102
103 interface TokenProcessor {
104
105
106
107
108
109
110 boolean process(ParseToken token, ContextBinding context, AcmMetadata container);
111 }
112
113 }