1 /* Copyright 2002-2025 CS GROUP
2 * Licensed to CS GROUP (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 package org.orekit.files.ilrs;
18
19 import org.orekit.time.AbsoluteDate;
20 import org.orekit.time.DateComponents;
21
22 /**
23 * Container for common data contains in International Laser Ranging Service (ILRS) files header.
24 * @see CPFHeader
25 * @see CRDHeader
26 * @author Bryan Cazabonne
27 * @since 10.3
28 */
29 public abstract class ILRSHeader {
30
31 /** File format. */
32 private String format;
33
34 /** File version. */
35 private int version;
36
37 /** Date component of the ephemeris production. */
38 private DateComponents productionEpoch;
39
40 /** Hour of ephemeris production. */
41 private int productionHour;
42
43 /** Target name from official ILRS list (e.g. lageos1). */
44 private String name;
45
46 /** ILRS Satellite ID. */
47 private String ilrsSatelliteId;
48
49 /** SIC (Provided by ILRS; set to “-1” for targets without SIC). */
50 private String sic;
51
52 /** NORAD ID. */
53 private String noradId;
54
55 /** Target class. */
56 private int targetClass;
57
58 /** Target location (Earth orbit, Lunar orbit, Mars orbit, ...) .*/
59 private int targetLocation;
60
61 /** Starting epoch (UTC). */
62 private AbsoluteDate startEpoch;
63
64 /** Ending epoch (UTC). */
65 private AbsoluteDate endEpoch;
66
67 /** Sequence number. */
68 private int sequenceNumber;
69
70 /** Empty constructor.
71 * <p>
72 * This constructor is not strictly necessary, but it prevents spurious
73 * javadoc warnings with JDK 18 and later.
74 * </p>
75 * @since 12.0
76 */
77 public ILRSHeader() {
78 // nothing to do
79 }
80
81 /**
82 * Get the file format.
83 * @return the file format
84 */
85 public String getFormat() {
86 return format;
87 }
88
89 /**
90 * Set the file format.
91 * @param format the format to set
92 */
93 public void setFormat(final String format) {
94 this.format = format;
95 }
96
97 /**
98 * Get the format version.
99 * @return the format version
100 */
101 public int getVersion() {
102 return version;
103 }
104
105 /**
106 * Set the format version.
107 * @param version the version to set
108 */
109 public void setVersion(final int version) {
110 this.version = version;
111 }
112
113 /**
114 * Get the date component of the ephemeris production.
115 * @return the date component of the ephemeris production
116 */
117 public DateComponents getProductionEpoch() {
118 return productionEpoch;
119 }
120
121 /**
122 * Set the date component of the ephemeris production.
123 * @param productionEpoch the date component to set
124 */
125 public void setProductionEpoch(final DateComponents productionEpoch) {
126 this.productionEpoch = productionEpoch;
127 }
128
129 /**
130 * Get the hour of ephemeris production (UTC).
131 * @return the hour of ephemeris production
132 */
133 public int getProductionHour() {
134 return productionHour;
135 }
136
137 /**
138 * Set the hour of ephemeris production.
139 * @param productionHour the hour of ephemeris production to set
140 */
141 public void setProductionHour(final int productionHour) {
142 this.productionHour = productionHour;
143 }
144
145 /**
146 * Get the satellite target name.
147 * @return the satellite target name
148 */
149 public String getName() {
150 return name;
151 }
152
153 /**
154 * Set the satellite target name.
155 * @param name the satellite target name to set
156 */
157 public void setName(final String name) {
158 this.name = name;
159 }
160
161 /**
162 * Get the IRLS satellite ID (based on COSPAR ID).
163 * @return the IRLS satellite ID
164 */
165 public String getIlrsSatelliteId() {
166 return ilrsSatelliteId;
167 }
168
169 /**
170 * Set the IRLS satellite ID (based on COSPAR ID).
171 * @param ilrsSatelliteId the IRLS satellite ID to set
172 */
173 public void setIlrsSatelliteId(final String ilrsSatelliteId) {
174 this.ilrsSatelliteId = ilrsSatelliteId;
175 }
176
177 /**
178 * Get the SIC ID.
179 * @return the SIC ID
180 */
181 public String getSic() {
182 return sic;
183 }
184
185 /**
186 * Set the SIC ID.
187 * @param sic the SIC ID to set
188 */
189 public void setSic(final String sic) {
190 this.sic = sic;
191 }
192
193 /**
194 * Get the satellite NORAD ID (i.e. Satellite Catalog Number).
195 * @return the satellite NORAD ID
196 */
197 public String getNoradId() {
198 return noradId;
199 }
200
201 /**
202 * Set the satellite NORAD ID.
203 * @param noradId the NORAD ID to set
204 */
205 public void setNoradId(final String noradId) {
206 this.noradId = noradId;
207 }
208
209 /**
210 * Get the target class.
211 * <p>
212 * 0 = no retroreflector; 1 = passive retroreflector; ...
213 * </p>
214 * @return the target class
215 */
216 public int getTargetClass() {
217 return targetClass;
218 }
219
220 /**
221 * Set the target class.
222 * <p>
223 * 0 = no retroreflector; 1 = passive retroreflector; ...
224 * </p>
225 * @param targetClass the target class to set
226 */
227 public void setTargetClass(final int targetClass) {
228 this.targetClass = targetClass;
229 }
230
231 /**
232 * Get the target location.
233 * <p>
234 * 1 = Earth orbit; 2 = Lunar orbit; ...
235 * </p>
236 * @return the target location
237 */
238 public int getTargetLocation() {
239 return targetLocation;
240 }
241
242 /**
243 * Set the target location.
244 * <p>
245 * 1 = Earth orbit; 2 = Lunar orbit; ...
246 * </p>
247 * @param targetLocation the target location to set
248 */
249 public void setTargetLocation(final int targetLocation) {
250 this.targetLocation = targetLocation;
251 }
252
253 /**
254 * Get the starting epoch (UTC).
255 * @return the starting epoch
256 */
257 public AbsoluteDate getStartEpoch() {
258 return startEpoch;
259 }
260
261 /**
262 * Set the staring epoch (UTC).
263 * @param startEpoch the starting epoch to set
264 */
265 public void setStartEpoch(final AbsoluteDate startEpoch) {
266 this.startEpoch = startEpoch;
267 }
268
269 /**
270 * Get the ending epoch (UTC).
271 * @return the ending epoch
272 */
273 public AbsoluteDate getEndEpoch() {
274 return endEpoch;
275 }
276
277 /**
278 * Set the ending epoch (UTC).
279 * @param endEpoch the ending epoch to set
280 */
281 public void setEndEpoch(final AbsoluteDate endEpoch) {
282 this.endEpoch = endEpoch;
283 }
284
285 /**
286 * Get the ephemeris sequence number.
287 * @return the ephemeris sequence number
288 */
289 public int getSequenceNumber() {
290 return sequenceNumber;
291 }
292
293 /**
294 * Set the ephemeris sequence number.
295 * @param sequenceNumber the ephemeris sequence number to set
296 */
297 public void setSequenceNumber(final int sequenceNumber) {
298 this.sequenceNumber = sequenceNumber;
299 }
300
301 }