ILRSHeader.java

  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. import org.orekit.time.AbsoluteDate;
  19. import org.orekit.time.DateComponents;

  20. /**
  21.  * Container for common data contains in International Laser Ranging Service (ILRS) files header.
  22.  * @see CPFHeader
  23.  * @see CRDHeader
  24.  * @author Bryan Cazabonne
  25.  * @since 10.3
  26.  */
  27. public abstract class ILRSHeader {

  28.     /** File format. */
  29.     private String format;

  30.     /** File version. */
  31.     private int version;

  32.     /** Date component of the ephemeris production. */
  33.     private DateComponents productionEpoch;

  34.     /** Hour of ephemeris production. */
  35.     private int productionHour;

  36.     /** Target name from official ILRS list (e.g. lageos1). */
  37.     private String name;

  38.     /** ILRS Satellite ID. */
  39.     private String ilrsSatelliteId;

  40.     /** SIC (Provided by ILRS; set to “-1” for targets without SIC). */
  41.     private String sic;

  42.     /** NORAD ID. */
  43.     private String noradId;

  44.     /** Target class. */
  45.     private int targetClass;

  46.     /** Target location (Earth orbit, Lunar orbit, Mars orbit, ...) .*/
  47.     private int targetLocation;

  48.     /** Starting epoch (UTC). */
  49.     private AbsoluteDate startEpoch;

  50.     /** Ending epoch (UTC). */
  51.     private AbsoluteDate endEpoch;

  52.     /** Sequence number. */
  53.     private int sequenceNumber;

  54.     /** Empty constructor.
  55.      * <p>
  56.      * This constructor is not strictly necessary, but it prevents spurious
  57.      * javadoc warnings with JDK 18 and later.
  58.      * </p>
  59.      * @since 12.0
  60.      */
  61.     public ILRSHeader() {
  62.         // nothing to do
  63.     }

  64.     /**
  65.      * Get the file format.
  66.      * @return the file format
  67.      */
  68.     public String getFormat() {
  69.         return format;
  70.     }

  71.     /**
  72.      * Set the file format.
  73.      * @param format the format to set
  74.      */
  75.     public void setFormat(final String format) {
  76.         this.format = format;
  77.     }

  78.     /**
  79.      * Get the format version.
  80.      * @return the format version
  81.      */
  82.     public int getVersion() {
  83.         return version;
  84.     }

  85.     /**
  86.      * Set the format version.
  87.      * @param version the version to set
  88.      */
  89.     public void setVersion(final int version) {
  90.         this.version = version;
  91.     }

  92.     /**
  93.      * Get the date component of the ephemeris production.
  94.      * @return the date component of the ephemeris production
  95.      */
  96.     public DateComponents getProductionEpoch() {
  97.         return productionEpoch;
  98.     }

  99.     /**
  100.      * Set the date component of the ephemeris production.
  101.      * @param productionEpoch the date component to set
  102.      */
  103.     public void setProductionEpoch(final DateComponents productionEpoch) {
  104.         this.productionEpoch = productionEpoch;
  105.     }

  106.     /**
  107.      * Get the hour of ephemeris production (UTC).
  108.      * @return the hour of ephemeris production
  109.      */
  110.     public int getProductionHour() {
  111.         return productionHour;
  112.     }

  113.     /**
  114.      * Set the hour of ephemeris production.
  115.      * @param productionHour the hour of ephemeris production to set
  116.      */
  117.     public void setProductionHour(final int productionHour) {
  118.         this.productionHour = productionHour;
  119.     }

  120.     /**
  121.      * Get the satellite target name.
  122.      * @return the satellite target name
  123.      */
  124.     public String getName() {
  125.         return name;
  126.     }

  127.     /**
  128.      * Set the satellite target name.
  129.      * @param name the satellite target name to set
  130.      */
  131.     public void setName(final String name) {
  132.         this.name = name;
  133.     }

  134.     /**
  135.      * Get the IRLS satellite ID (based on COSPAR ID).
  136.      * @return the IRLS satellite ID
  137.      */
  138.     public String getIlrsSatelliteId() {
  139.         return ilrsSatelliteId;
  140.     }

  141.     /**
  142.      * Set the IRLS satellite ID (based on COSPAR ID).
  143.      * @param ilrsSatelliteId the IRLS satellite ID to set
  144.      */
  145.     public void setIlrsSatelliteId(final String ilrsSatelliteId) {
  146.         this.ilrsSatelliteId = ilrsSatelliteId;
  147.     }

  148.     /**
  149.      * Get the SIC ID.
  150.      * @return the SIC ID
  151.      */
  152.     public String getSic() {
  153.         return sic;
  154.     }

  155.     /**
  156.      * Set the SIC ID.
  157.      * @param sic the SIC ID to set
  158.      */
  159.     public void setSic(final String sic) {
  160.         this.sic = sic;
  161.     }

  162.     /**
  163.      * Get the satellite NORAD ID (i.e. Satellite Catalog Number).
  164.      * @return the satellite NORAD ID
  165.      */
  166.     public String getNoradId() {
  167.         return noradId;
  168.     }

  169.     /**
  170.      * Set the satellite NORAD ID.
  171.      * @param noradId the NORAD ID to set
  172.      */
  173.     public void setNoradId(final String noradId) {
  174.         this.noradId = noradId;
  175.     }

  176.     /**
  177.      * Get the target class.
  178.      * <p>
  179.      * 0 = no retroreflector; 1 = passive retroreflector; ...
  180.      * </p>
  181.      * @return the target class
  182.      */
  183.     public int getTargetClass() {
  184.         return targetClass;
  185.     }

  186.     /**
  187.      * Set the target class.
  188.      * <p>
  189.      * 0 = no retroreflector; 1 = passive retroreflector; ...
  190.      * </p>
  191.      * @param targetClass the target class to set
  192.      */
  193.     public void setTargetClass(final int targetClass) {
  194.         this.targetClass = targetClass;
  195.     }

  196.     /**
  197.      * Get the target location.
  198.      * <p>
  199.      * 1 = Earth orbit; 2 = Lunar orbit; ...
  200.      * </p>
  201.      * @return the target location
  202.      */
  203.     public int getTargetLocation() {
  204.         return targetLocation;
  205.     }

  206.     /**
  207.      * Set the target location.
  208.      * <p>
  209.      * 1 = Earth orbit; 2 = Lunar orbit; ...
  210.      * </p>
  211.      * @param targetLocation the target location to set
  212.      */
  213.     public void setTargetLocation(final int targetLocation) {
  214.         this.targetLocation = targetLocation;
  215.     }

  216.     /**
  217.      * Get the starting epoch (UTC).
  218.      * @return the starting epoch
  219.      */
  220.     public AbsoluteDate getStartEpoch() {
  221.         return startEpoch;
  222.     }

  223.     /**
  224.      * Set the staring epoch (UTC).
  225.      * @param startEpoch the starting epoch to set
  226.      */
  227.     public void setStartEpoch(final AbsoluteDate startEpoch) {
  228.         this.startEpoch = startEpoch;
  229.     }

  230.     /**
  231.      * Get the ending epoch (UTC).
  232.      * @return the ending epoch
  233.      */
  234.     public AbsoluteDate getEndEpoch() {
  235.         return endEpoch;
  236.     }

  237.     /**
  238.      * Set the ending epoch (UTC).
  239.      * @param endEpoch the ending epoch to set
  240.      */
  241.     public void setEndEpoch(final AbsoluteDate endEpoch) {
  242.         this.endEpoch = endEpoch;
  243.     }

  244.     /**
  245.      * Get the ephemeris sequence number.
  246.      * @return the ephemeris sequence number
  247.      */
  248.     public int getSequenceNumber() {
  249.         return sequenceNumber;
  250.     }

  251.     /**
  252.      * Set the ephemeris sequence number.
  253.      * @param sequenceNumber the ephemeris sequence number to set
  254.      */
  255.     public void setSequenceNumber(final int sequenceNumber) {
  256.         this.sequenceNumber = sequenceNumber;
  257.     }

  258. }