1 /* Copyright 2002-2016 CS Systèmes d'Information
2 * Licensed to CS Systèmes d'Information (CS) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * CS licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 package org.orekit.files.ccsds;
19
20 import java.util.ArrayList;
21 import java.util.Collections;
22 import java.util.List;
23
24 import org.orekit.bodies.CelestialBody;
25 import org.orekit.files.general.OrbitFile;
26 import org.orekit.frames.Frame;
27 import org.orekit.time.AbsoluteDate;
28
29 /** This class gathers the meta-data present in the Orbital Data Message (ODM).
30 * @author sports
31 * @since 6.1
32 */
33 public class ODMMetaData {
34
35 /** ODM file to which these meta-data belong. */
36 private final ODMFile odmFile;
37
38 /** Time System: used for metadata, orbit state and covariance data. */
39 private OrbitFile.TimeSystem timeSystem;
40
41 /** Spacecraft name for which the orbit state is provided. */
42 private String objectName;
43
44 /** Object identifier of the object for which the orbit state is provided. */
45 private String objectID;
46
47 /** Launch Year. */
48 private int launchYear;
49
50 /** Launch number. */
51 private int launchNumber;
52
53 /** Piece of launch (from "A" to "ZZZ"). */
54 private String launchPiece;
55
56 /** Origin of reference frame. */
57 private String centerName;
58
59 /** Celestial body corresponding to the center name. */
60 private CelestialBody centerBody;
61
62 /** Tests whether the body corresponding to the center name can be
63 * created through the {@link org.orekit.bodies.CelestialBodyFactory} in order to obtain the
64 * corresponding gravitational coefficient. */
65 private boolean hasCreatableBody;
66
67 /** Reference frame in which data are given: used for state vector
68 * and Keplerian elements data (and for the covariance reference frame if none is given). */
69 private Frame refFrame;
70
71 /** Epoch of reference frame, if not intrinsic to the definition of the
72 * reference frame. */
73 private String frameEpochString;
74
75 /** Epoch of reference frame, if not intrinsic to the definition of the
76 * reference frame. */
77 private AbsoluteDate frameEpoch;
78
79 /** Metadata comments. The list contains a string for each line of comment. */
80 private List<String> comment;
81
82 /** Create a new meta-data.
83 * @param odmFile ODM file to which these meta-data belong
84 */
85 ODMMetaData(final ODMFile odmFile) {
86 this.odmFile = odmFile;
87 comment = new ArrayList<String>();
88 };
89
90 /** Get the ODM file to which these meta-data belong.
91 * @return ODM file to which these meta-data belong
92 */
93 public ODMFile getODMFile() {
94 return odmFile;
95 }
96
97 /** Get the Time System that: for OPM, is used for metadata, state vector,
98 * maneuver and covariance data, for OMM, is used for metadata, orbit state
99 * and covariance data, for OEM, is used for metadata, ephemeris and
100 * covariance data.
101 * @return the time system
102 */
103 public OrbitFile.TimeSystem getTimeSystem() {
104 return timeSystem;
105 }
106
107 /** Set the Time System that: for OPM, is used for metadata, state vector,
108 * maneuver and covariance data, for OMM, is used for metadata, orbit state
109 * and covariance data, for OEM, is used for metadata, ephemeris and
110 * covariance data.
111 * @param timeSystem the time system to be set
112 */
113 void setTimeSystem(final OrbitFile.TimeSystem timeSystem) {
114 this.timeSystem = timeSystem;
115 }
116
117 /** Get the spacecraft name for which the orbit state is provided.
118 * @return the spacecraft name
119 */
120 public String getObjectName() {
121 return objectName;
122 }
123
124 /** Set the spacecraft name for which the orbit state is provided.
125 * @param objectName the spacecraft name to be set
126 */
127 void setObjectName(final String objectName) {
128 this.objectName = objectName;
129 }
130
131 /** Get the spacecraft ID for which the orbit state is provided.
132 * @return the spacecraft ID
133 */
134 public String getObjectID() {
135 return objectID;
136 }
137
138 /** Set the spacecraft ID for which the orbit state is provided.
139 * @param objectID the spacecraft ID to be set
140 */
141 void setObjectID(final String objectID) {
142 this.objectID = objectID;
143 }
144
145 /** Set the launch year.
146 * @param launchYear launch year
147 */
148 void setLaunchYear(final int launchYear) {
149 this.launchYear = launchYear;
150 }
151
152 /** Get the launch year.
153 * @return launch year
154 */
155 public int getLaunchYear() {
156 return launchYear;
157 }
158
159 /** Set the launch number.
160 * @param launchNumber launch number
161 */
162 void setLaunchNumber(final int launchNumber) {
163 this.launchNumber = launchNumber;
164 }
165
166 /** Get the launch number.
167 * @return launch number
168 */
169 public int getLaunchNumber() {
170 return launchNumber;
171 }
172
173 /** Set the piece of launch.
174 * @param launchPiece piece of launch
175 */
176 void setLaunchPiece(final String launchPiece) {
177 this.launchPiece = launchPiece;
178 }
179
180 /** Get the piece of launch.
181 * @return piece of launch
182 */
183 public String getLaunchPiece() {
184 return launchPiece;
185 }
186
187 /** Get the origin of reference frame.
188 * @return the origin of reference frame.
189 */
190 public String getCenterName() {
191 return centerName;
192 }
193
194 /** Set the origin of reference frame.
195 * @param centerName the origin of reference frame to be set
196 */
197 void setCenterName(final String centerName) {
198 this.centerName = centerName;
199 }
200
201 /** Get the {@link CelestialBody} corresponding to the center name.
202 * @return the center body
203 */
204 public CelestialBody getCenterBody() {
205 return centerBody;
206 }
207
208 /** Set the {@link CelestialBody} corresponding to the center name.
209 * @param centerBody the {@link CelestialBody} to be set
210 */
211 void setCenterBody(final CelestialBody centerBody) {
212 this.centerBody = centerBody;
213 }
214
215 /** Get boolean testing whether the body corresponding to the centerName
216 * attribute can be created through the {@link org.orekit.bodies.CelestialBodyFactory}.
217 * @return true if {@link CelestialBody} can be created from centerName
218 * false otherwise
219 */
220 public boolean getHasCreatableBody() {
221 return hasCreatableBody;
222 }
223
224 /** Set boolean testing whether the body corresponding to the centerName
225 * attribute can be created through the {@link org.orekit.bodies.CelestialBodyFactory}.
226 * @param hasCreatableBody the boolean to be set.
227 */
228 void setHasCreatableBody(final boolean hasCreatableBody) {
229 this.hasCreatableBody = hasCreatableBody;
230 }
231
232 /** Get the reference frame in which data are given: used for state vector
233 * and Keplerian elements data (and for the covariance reference frame if none is given).
234 * @return the reference frame
235 */
236 public Frame getFrame() {
237 return refFrame;
238 }
239
240 /** Set the reference frame in which data are given: used for state vector
241 * and Keplerian elements data (and for the covariance reference frame if none is given).
242 * @param refFrame the reference frame to be set
243 */
244 void setRefFrame(final Frame refFrame) {
245 this.refFrame = refFrame;
246 }
247
248 /** Get epoch of reference frame, if not intrinsic to the definition of the
249 * reference frame.
250 * @return epoch of reference frame
251 */
252 public String getFrameEpochString() {
253 return frameEpochString;
254 }
255
256 /** Set epoch of reference frame, if not intrinsic to the definition of the
257 * reference frame.
258 * @param frameEpochString the epoch of reference frame to be set
259 */
260 void setFrameEpochString(final String frameEpochString) {
261 this.frameEpochString = frameEpochString;
262 }
263
264 /** Get epoch of reference frame, if not intrinsic to the definition of the
265 * reference frame.
266 * @return epoch of reference frame
267 */
268 public AbsoluteDate getFrameEpoch() {
269 return frameEpoch;
270 }
271
272 /** Set epoch of reference frame, if not intrinsic to the definition of the
273 * reference frame.
274 * @param frameEpoch the epoch of reference frame to be set
275 */
276 void setFrameEpoch(final AbsoluteDate frameEpoch) {
277 this.frameEpoch = frameEpoch;
278 }
279
280 /** Get the meta-data comment.
281 * @return meta-data comment
282 */
283 public List<String> getComment() {
284 return Collections.unmodifiableList(comment);
285 }
286
287 /** Set the meta-data comment.
288 * @param comment comment to set
289 */
290 void setComment(final List<String> comment) {
291 this.comment = new ArrayList<String>(comment);
292 }
293
294 }
295
296
297