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 }