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 StateVectorKey {
30
31
32 COMMENT((token, context, container) ->
33 token.getType() == TokenType.ENTRY ? container.addComment(token.getContentAsNormalizedString()) : true),
34
35
36 X((token, context, container) -> token.processAsDouble(Unit.KILOMETRE, context.getParsedUnitsBehavior(),
37 container::setX)),
38
39 Y((token, context, container) -> token.processAsDouble(Unit.KILOMETRE, context.getParsedUnitsBehavior(),
40 container::setY)),
41
42 Z((token, context, container) -> token.processAsDouble(Unit.KILOMETRE, context.getParsedUnitsBehavior(),
43 container::setZ)),
44
45 X_DOT((token, context, container) -> token.processAsDouble(Units.KM_PER_S, context.getParsedUnitsBehavior(),
46 container::setXdot)),
47
48 Y_DOT((token, context, container) -> token.processAsDouble(Units.KM_PER_S, context.getParsedUnitsBehavior(),
49 container::setYdot)),
50
51 Z_DOT((token, context, container) -> token.processAsDouble(Units.KM_PER_S, context.getParsedUnitsBehavior(),
52 container::setZdot));
53
54
55 private final transient TokenProcessor processor;
56
57
58
59
60 StateVectorKey(final TokenProcessor processor) {
61 this.processor = processor;
62 }
63
64
65
66
67
68
69
70 public boolean process(final ParseToken token, final ContextBinding context, final StateVector container) {
71 return processor.process(token, context, container);
72 }
73
74
75 interface TokenProcessor {
76
77
78
79
80
81
82 boolean process(ParseToken token, ContextBinding context, StateVector container);
83 }
84
85 }