1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.ccsds.ndm.odm;
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
24
25
26
27
28
29 public enum CartesianCovarianceKey {
30
31
32 COMMENT((token, context, container) ->
33 token.getType() == TokenType.ENTRY ? container.addComment(token.getContentAsNormalizedString()) : true),
34
35
36 EPOCH((token, context, container) -> token.processAsDate(container::setEpoch, context)),
37
38
39 COV_REF_FRAME((token, context, container) -> token.processAsFrame(container::setReferenceFrame, context, true, true, true)),
40
41
42 CX_X((token, context, container) -> token.processAsDoublyIndexedDouble(0, 0, Units.KM2, context.getParsedUnitsBehavior(),
43 container::setCovarianceMatrixEntry)),
44
45
46 CY_X((token, context, container) -> token.processAsDoublyIndexedDouble(1, 0, Units.KM2, context.getParsedUnitsBehavior(),
47 container::setCovarianceMatrixEntry)),
48
49
50 CY_Y((token, context, container) -> token.processAsDoublyIndexedDouble(1, 1, Units.KM2, context.getParsedUnitsBehavior(),
51 container::setCovarianceMatrixEntry)),
52
53
54 CZ_X((token, context, container) -> token.processAsDoublyIndexedDouble(2, 0, Units.KM2, context.getParsedUnitsBehavior(),
55 container::setCovarianceMatrixEntry)),
56
57
58 CZ_Y((token, context, container) -> token.processAsDoublyIndexedDouble(2, 1, Units.KM2, context.getParsedUnitsBehavior(),
59 container::setCovarianceMatrixEntry)),
60
61
62 CZ_Z((token, context, container) -> token.processAsDoublyIndexedDouble(2, 2, Units.KM2, context.getParsedUnitsBehavior(),
63 container::setCovarianceMatrixEntry)),
64
65
66 CX_DOT_X((token, context, container) -> token.processAsDoublyIndexedDouble(3, 0, Units.KM2_PER_S, context.getParsedUnitsBehavior(),
67 container::setCovarianceMatrixEntry)),
68
69
70 CX_DOT_Y((token, context, container) -> token.processAsDoublyIndexedDouble(3, 1, Units.KM2_PER_S, context.getParsedUnitsBehavior(),
71 container::setCovarianceMatrixEntry)),
72
73
74 CX_DOT_Z((token, context, container) -> token.processAsDoublyIndexedDouble(3, 2, Units.KM2_PER_S, context.getParsedUnitsBehavior(),
75 container::setCovarianceMatrixEntry)),
76
77
78 CX_DOT_X_DOT((token, context, container) -> token.processAsDoublyIndexedDouble(3, 3, Units.KM2_PER_S2, context.getParsedUnitsBehavior(),
79 container::setCovarianceMatrixEntry)),
80
81
82 CY_DOT_X((token, context, container) -> token.processAsDoublyIndexedDouble(4, 0, Units.KM2_PER_S, context.getParsedUnitsBehavior(),
83 container::setCovarianceMatrixEntry)),
84
85
86 CY_DOT_Y((token, context, container) -> token.processAsDoublyIndexedDouble(4, 1, Units.KM2_PER_S, context.getParsedUnitsBehavior(),
87 container::setCovarianceMatrixEntry)),
88
89
90 CY_DOT_Z((token, context, container) -> token.processAsDoublyIndexedDouble(4, 2, Units.KM2_PER_S, context.getParsedUnitsBehavior(),
91 container::setCovarianceMatrixEntry)),
92
93
94 CY_DOT_X_DOT((token, context, container) -> token.processAsDoublyIndexedDouble(4, 3, Units.KM2_PER_S2, context.getParsedUnitsBehavior(),
95 container::setCovarianceMatrixEntry)),
96
97
98 CY_DOT_Y_DOT((token, context, container) -> token.processAsDoublyIndexedDouble(4, 4, Units.KM2_PER_S2, context.getParsedUnitsBehavior(),
99 container::setCovarianceMatrixEntry)),
100
101
102 CZ_DOT_X((token, context, container) -> token.processAsDoublyIndexedDouble(5, 0, Units.KM2_PER_S, context.getParsedUnitsBehavior(),
103 container::setCovarianceMatrixEntry)),
104
105
106 CZ_DOT_Y((token, context, container) -> token.processAsDoublyIndexedDouble(5, 1, Units.KM2_PER_S, context.getParsedUnitsBehavior(),
107 container::setCovarianceMatrixEntry)),
108
109
110 CZ_DOT_Z((token, context, container) -> token.processAsDoublyIndexedDouble(5, 2, Units.KM2_PER_S, context.getParsedUnitsBehavior(),
111 container::setCovarianceMatrixEntry)),
112
113
114 CZ_DOT_X_DOT((token, context, container) -> token.processAsDoublyIndexedDouble(5, 3, Units.KM2_PER_S2, context.getParsedUnitsBehavior(),
115 container::setCovarianceMatrixEntry)),
116
117
118 CZ_DOT_Y_DOT((token, context, container) -> token.processAsDoublyIndexedDouble(5, 4, Units.KM2_PER_S2, context.getParsedUnitsBehavior(),
119 container::setCovarianceMatrixEntry)),
120
121
122 CZ_DOT_Z_DOT((token, context, container) -> token.processAsDoublyIndexedDouble(5, 5, Units.KM2_PER_S2, context.getParsedUnitsBehavior(),
123 container::setCovarianceMatrixEntry));
124
125
126 private final transient TokenProcessor processor;
127
128
129
130
131 CartesianCovarianceKey(final TokenProcessor processor) {
132 this.processor = processor;
133 }
134
135
136
137
138
139
140
141 public boolean process(final ParseToken token, final ContextBinding context, final CartesianCovariance container) {
142 return processor.process(token, context, container);
143 }
144
145
146 interface TokenProcessor {
147
148
149
150
151
152
153 boolean process(ParseToken token, ContextBinding context, CartesianCovariance container);
154 }
155
156 }