1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.orekit.files.ccsds.ndm.odm.omm;
19
20 import org.orekit.errors.OrekitException;
21 import org.orekit.errors.OrekitMessages;
22 import org.orekit.files.ccsds.ndm.odm.CartesianCovariance;
23 import org.orekit.files.ccsds.ndm.odm.KeplerianElements;
24 import org.orekit.files.ccsds.ndm.odm.KeplerianElementsKey;
25 import org.orekit.files.ccsds.ndm.odm.SpacecraftParameters;
26 import org.orekit.files.ccsds.ndm.odm.UserDefined;
27 import org.orekit.files.ccsds.section.Data;
28
29
30
31
32
33
34 public class OmmData implements Data {
35
36
37 private final KeplerianElements keplerianElementsBlock;
38
39
40 private final SpacecraftParameters spacecraftParameters;
41
42
43 private final OmmTle tleBlock;
44
45
46 private final CartesianCovariance covarianceBlock;
47
48
49 private final UserDefined userDefinedBlock;
50
51
52 private final double mass;
53
54
55
56
57
58
59
60
61
62 public OmmData(final KeplerianElements keplerianElementsBlock,
63 final SpacecraftParameters spacecraftParameters,
64 final OmmTle tleBlock,
65 final CartesianCovariance covarianceBlock,
66 final UserDefined userDefinedBlock,
67 final double mass) {
68 this.keplerianElementsBlock = keplerianElementsBlock;
69 this.spacecraftParameters = spacecraftParameters;
70 this.tleBlock = tleBlock;
71 this.covarianceBlock = covarianceBlock;
72 this.userDefinedBlock = userDefinedBlock;
73 this.mass = mass;
74 }
75
76
77 @Override
78 public void validate(final double version) {
79 if (keplerianElementsBlock == null) {
80 throw new OrekitException(OrekitMessages.UNINITIALIZED_VALUE_FOR_KEY,
81 KeplerianElementsKey.EPOCH);
82 }
83 keplerianElementsBlock.validate(version);
84 if (spacecraftParameters != null) {
85 spacecraftParameters.validate(version);
86 }
87 if (tleBlock == null) {
88
89 keplerianElementsBlock.checkNotNaN(keplerianElementsBlock.getA(),
90 KeplerianElementsKey.SEMI_MAJOR_AXIS.name());
91 } else {
92
93 keplerianElementsBlock.checkNotNaN(keplerianElementsBlock.getMeanMotion(),
94 KeplerianElementsKey.MEAN_MOTION.name());
95 tleBlock.validate(version);
96 }
97 if (covarianceBlock != null) {
98 covarianceBlock.setEpoch(keplerianElementsBlock.getEpoch());
99 covarianceBlock.validate(version);
100 }
101 if (userDefinedBlock != null) {
102 userDefinedBlock.validate(version);
103 }
104 }
105
106
107
108
109 public KeplerianElements getKeplerianElementsBlock() {
110 return keplerianElementsBlock;
111 }
112
113
114
115
116 public SpacecraftParameters getSpacecraftParametersBlock() {
117 return spacecraftParameters;
118 }
119
120
121
122
123 public OmmTle getTLEBlock() {
124 return tleBlock;
125 }
126
127
128
129
130 public CartesianCovariance getCovarianceBlock() {
131 return covarianceBlock;
132 }
133
134
135
136
137 public UserDefined getUserDefinedBlock() {
138 return userDefinedBlock;
139 }
140
141
142
143
144 public double getMass() {
145 return mass;
146 }
147
148 }