OcmMetadata.java

  1. /* Copyright 2002-2022 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.ccsds.ndm.odm.ocm;

  18. import java.util.List;

  19. import org.orekit.data.DataContext;
  20. import org.orekit.files.ccsds.definitions.TimeSystem;
  21. import org.orekit.files.ccsds.ndm.odm.OdmMetadata;
  22. import org.orekit.time.AbsoluteDate;

  23. /** Meta-data for {@link OcmMetadata Orbit Comprehensive Message}.
  24.  * @since 11.0
  25.  */
  26. public class OcmMetadata extends OdmMetadata {

  27.     /** Default interpolation method for EOP and Space Weather data. */
  28.     private static final String DEFAULT_INTERPOLATION_METHOD = "LINEAR";

  29.     /** Classification for this message. */
  30.     private String classification;

  31.     /** International designator for the object as assigned by the UN Committee
  32.      * on Space Research (COSPAR) and the US National Space Science Data Center (NSSDC). */
  33.     private String internationalDesignator;

  34.     /** Specification of satellite catalog source. */
  35.     private String catalogName;

  36.     /** Unique satellite identification designator for the object. */
  37.     private String objectDesignator;

  38.     /** Alternate names for this space object. */
  39.     private List<String> alternateNames;

  40.     /** Programmatic Point Of Contact at originator. */
  41.     private String originatorPOC;

  42.     /** Position of Programmatic Point Of Contact at originator. */
  43.     private String originatorPosition;

  44.     /** Phone number of Programmatic Point Of Contact at originator. */
  45.     private String originatorPhone;

  46.     /** Address of Programmatic Point Of Contact at originator. */
  47.     private String originatorAddress;

  48.     /** Creating agency or operator. */
  49.     private String techOrg;

  50.     /** Technical Point Of Contact at originator. */
  51.     private String techPOC;

  52.     /** Position of Technical Point Of Contact at originator. */
  53.     private String techPosition;

  54.     /** Phone number of Technical Point Of Contact at originator. */
  55.     private String techPhone;

  56.     /** Address of Technical Point Of Contact at originator. */
  57.     private String techAddress;

  58.     /** Unique ID identifying previous message from a given originator. */
  59.     private String previousMessageID;

  60.     /** Unique ID identifying next message from a given originator. */
  61.     private String nextMessageID;

  62.     /** Unique identifier of Attitude Data Message linkrd to this Orbit Data Message. */
  63.     private String admMessageLink;

  64.     /** Unique identifier of Conjunction Data Message linkrd to this Orbit Data Message. */
  65.     private String cdmMessageLink;

  66.     /** Unique identifier of Pointing Request Message linkrd to this Orbit Data Message. */
  67.     private String prmMessageLink;

  68.     /** Unique identifier of Reentry Data Messages linked to this Orbit Data Message. */
  69.     private String rdmMessageLink;

  70.     /** Unique identifier of Tracking Data Messages linked to this Orbit Data Message. */
  71.     private String tdmMessageLink;

  72.     /** Operator of the space object. */
  73.     private String operator;

  74.     /** Owner of the space object. */
  75.     private String owner;

  76.     /** Name of the country where the space object owner is based. */
  77.     private String country;

  78.     /** Name of the constellation this space object belongs to. */
  79.     private String constellation;

  80.     /** Type of object. */
  81.     private ObjectType objectType;

  82.     /** Epoch to which <em>all</em> relative times are referenced in data blocks;
  83.      * unless overridden by block-specific {@code EPOCH_TZERO} values. */
  84.     private AbsoluteDate epochT0;

  85.     /** Operational status. */
  86.     private OpsStatus opsStatus;

  87.     /** Orbit catgory. */
  88.     private OrbitCategory orbitCategory;

  89.     /** List of elements of information data blocks included in this message. */
  90.     private List<String> ocmDataElements;

  91.     /** Spacecraft clock count at {@link #getEpochT0()}. */
  92.     private double sclkOffsetAtEpoch;

  93.     /** Number of spacecraft clock seconds occurring during one SI second. */
  94.     private double sclkSecPerSISec;

  95.     /** Creation date of previous message from a given originator. */
  96.     private AbsoluteDate previousMessageEpoch;

  97.     /** Creation date of next message from a given originator. */
  98.     private AbsoluteDate nextMessageEpoch;

  99.     /** Time of the earliest data contained in the OCM. */
  100.     private AbsoluteDate startTime;

  101.     /** Time of the latest data contained in the OCM. */
  102.     private AbsoluteDate stopTime;

  103.     /** Span of time that the OCM covers. */
  104.     private double timeSpan;

  105.     /** Difference (TAI – UTC) in seconds at epoch {@link #epochT0}. */
  106.     private double taimutcT0;

  107.     /** Difference (UT1 – UTC) in seconds at epoch {@link #epochT0}. */
  108.     private double ut1mutcT0;

  109.     /** Source and version of Earth Orientation Parameters. */
  110.     private String eopSource;

  111.     /** Interpolation method for Earth Orientation Parameters. */
  112.     private String interpMethodEOP;

  113.     /** Source and version of celestial body (e.g. Sun/Earth/Planetary). */
  114.     private String celestialSource;

  115.     /** Create a new meta-data.
  116.      * @param dataContext data context
  117.      */
  118.     OcmMetadata(final DataContext dataContext) {

  119.         // set up the few fields that have default values as per CCSDS standard
  120.         super(TimeSystem.UTC);
  121.         catalogName       = "CSPOC";
  122.         sclkOffsetAtEpoch = 0.0;
  123.         sclkSecPerSISec   = 1.0;
  124.         interpMethodEOP   = DEFAULT_INTERPOLATION_METHOD;

  125.     }

  126.     /** {@inheritDoc} */
  127.     @Override
  128.     public void validate(final double version) {
  129.         // we don't call super.checkMandatoryEntries() because
  130.         // all of the parameters considered mandatory at ODM level
  131.         // for OPM, OMM and OEM are in fact optional in OCM
  132.         // only EPOCH_TZERO, which is specific to OCM, is mandatory
  133.         checkNotNull(epochT0, OcmMetadataKey.EPOCH_TZERO);
  134.     }

  135.     /** Get the message classification.
  136.      * @return message classification.
  137.      */
  138.     public String getClassification() {
  139.         return classification;
  140.     }

  141.     /** Set the message classification.
  142.      * @param classification message classification
  143.      */
  144.     public void setClassification(final String classification) {
  145.         refuseFurtherComments();
  146.         this.classification = classification;
  147.     }

  148.     /** Get the international designator for the object.
  149.      * @return international designator for the object
  150.      */
  151.     public String getInternationalDesignator() {
  152.         return internationalDesignator;
  153.     }

  154.     /** Set the international designator for the object.
  155.      * @param internationalDesignator international designator for the object
  156.      */
  157.     public void setInternationalDesignator(final String internationalDesignator) {
  158.         refuseFurtherComments();
  159.         this.internationalDesignator = internationalDesignator;
  160.     }

  161.     /** Get the specification of satellite catalog source.
  162.      * @return specification of satellite catalog source
  163.      */
  164.     public String getCatalogName() {
  165.         return catalogName;
  166.     }

  167.     /** Set the specification of satellite catalog source.
  168.      * @param catalogName specification of satellite catalog source
  169.      */
  170.     public void setCatalogName(final String catalogName) {
  171.         refuseFurtherComments();
  172.         this.catalogName = catalogName;
  173.     }

  174.     /** Get the unique satellite identification designator for the object.
  175.      * @return unique satellite identification designator for the object.
  176.      */
  177.     public String getObjectDesignator() {
  178.         return objectDesignator;
  179.     }

  180.     /** Set the unique satellite identification designator for the object.
  181.      * @param objectDesignator unique satellite identification designator for the object
  182.      */
  183.     public void setObjectDesignator(final String objectDesignator) {
  184.         refuseFurtherComments();
  185.         this.objectDesignator = objectDesignator;
  186.     }

  187.     /** Get the alternate names for this space object.
  188.      * @return alternate names
  189.      */
  190.     public List<String> getAlternateNames() {
  191.         return alternateNames;
  192.     }

  193.     /** Set the alternate names for this space object.
  194.      * @param alternateNames alternate names
  195.      */
  196.     public void setAlternateNames(final List<String> alternateNames) {
  197.         refuseFurtherComments();
  198.         this.alternateNames = alternateNames;
  199.     }

  200.     /** Get the programmatic Point Of Contact at originator.
  201.      * @return programmatic Point Of Contact at originator
  202.      */
  203.     public String getOriginatorPOC() {
  204.         return originatorPOC;
  205.     }

  206.     /** Set the programmatic Point Of Contact at originator.
  207.      * @param originatorPOC programmatic Point Of Contact at originator
  208.      */
  209.     public void setOriginatorPOC(final String originatorPOC) {
  210.         refuseFurtherComments();
  211.         this.originatorPOC = originatorPOC;
  212.     }

  213.     /** Get the position of Programmatic Point Of Contact at originator.
  214.      * @return position of Programmatic Point Of Contact at originator
  215.      */
  216.     public String getOriginatorPosition() {
  217.         return originatorPosition;
  218.     }

  219.     /** Set the position of Programmatic Point Of Contact at originator.
  220.      * @param originatorPosition position of Programmatic Point Of Contact at originator
  221.      */
  222.     public void setOriginatorPosition(final String originatorPosition) {
  223.         refuseFurtherComments();
  224.         this.originatorPosition = originatorPosition;
  225.     }

  226.     /** Get the phone number of Programmatic Point Of Contact at originator.
  227.      * @return phone number of Programmatic Point Of Contact at originator
  228.      */
  229.     public String getOriginatorPhone() {
  230.         return originatorPhone;
  231.     }

  232.     /** GSet the phone number of Programmatic Point Of Contact at originator.
  233.      * @param originatorPhone phone number of Programmatic Point Of Contact at originator
  234.      */
  235.     public void setOriginatorPhone(final String originatorPhone) {
  236.         refuseFurtherComments();
  237.         this.originatorPhone = originatorPhone;
  238.     }

  239.     /** Get the address of Programmatic Point Of Contact at originator.
  240.      * @return address of Programmatic Point Of Contact at originator
  241.      */
  242.     public String getOriginatorAddress() {
  243.         return originatorAddress;
  244.     }

  245.     /** Set the address of Programmatic Point Of Contact at originator.
  246.      * @param originatorAddress address of Programmatic Point Of Contact at originator
  247.      */
  248.     public void setOriginatorAddress(final String originatorAddress) {
  249.         refuseFurtherComments();
  250.         this.originatorAddress = originatorAddress;
  251.     }

  252.     /** Get the creating agency or operator.
  253.      * @return creating agency or operator
  254.      */
  255.     public String getTechOrg() {
  256.         return techOrg;
  257.     }

  258.     /** Set the creating agency or operator.
  259.      * @param techOrg creating agency or operator
  260.      */
  261.     public void setTechOrg(final String techOrg) {
  262.         refuseFurtherComments();
  263.         this.techOrg = techOrg;
  264.     }

  265.     /** Get the Technical Point Of Contact at originator.
  266.      * @return Technical Point Of Contact at originator
  267.      */
  268.     public String getTechPOC() {
  269.         return techPOC;
  270.     }

  271.     /** Set the Technical Point Of Contact at originator.
  272.      * @param techPOC Technical Point Of Contact at originator
  273.      */
  274.     public void setTechPOC(final String techPOC) {
  275.         refuseFurtherComments();
  276.         this.techPOC = techPOC;
  277.     }

  278.     /** Get the position of Technical Point Of Contact at originator.
  279.      * @return position of Technical Point Of Contact at originator
  280.      */
  281.     public String getTechPosition() {
  282.         return techPosition;
  283.     }

  284.     /** Set the position of Technical Point Of Contact at originator.
  285.      * @param techPosition position of Technical Point Of Contact at originator
  286.      */
  287.     public void setTechPosition(final String techPosition) {
  288.         refuseFurtherComments();
  289.         this.techPosition = techPosition;
  290.     }

  291.     /** Get the phone number of Technical Point Of Contact at originator.
  292.      * @return phone number of Technical Point Of Contact at originator
  293.      */
  294.     public String getTechPhone() {
  295.         return techPhone;
  296.     }

  297.     /** Set the phone number of Technical Point Of Contact at originator.
  298.      * @param techPhone phone number of Technical Point Of Contact at originator
  299.      */
  300.     public void setTechPhone(final String techPhone) {
  301.         refuseFurtherComments();
  302.         this.techPhone = techPhone;
  303.     }

  304.     /** Get the address of Technical Point Of Contact at originator.
  305.      * @return address of Technical Point Of Contact at originator
  306.      */
  307.     public String getTechAddress() {
  308.         return techAddress;
  309.     }

  310.     /** Set the address of Technical Point Of Contact at originator.
  311.      * @param techAddress address of Technical Point Of Contact at originator
  312.      */
  313.     public void setTechAddress(final String techAddress) {
  314.         refuseFurtherComments();
  315.         this.techAddress = techAddress;
  316.     }

  317.     /** Get the unique ID identifying previous message from a given originator.
  318.      * @return unique ID identifying previous message from a given originator
  319.      */
  320.     public String getPreviousMessageID() {
  321.         return previousMessageID;
  322.     }

  323.     /** Set the unique ID identifying previous message from a given originator.
  324.      * @param previousMessageID unique ID identifying previous message from a given originator
  325.      */
  326.     public void setPreviousMessageID(final String previousMessageID) {
  327.         refuseFurtherComments();
  328.         this.previousMessageID = previousMessageID;
  329.     }

  330.     /** Get the unique ID identifying next message from a given originator.
  331.      * @return unique ID identifying next message from a given originator
  332.      */
  333.     public String getNextMessageID() {
  334.         return nextMessageID;
  335.     }

  336.     /** Set the unique ID identifying next message from a given originator.
  337.      * @param nextMessageID unique ID identifying next message from a given originator
  338.      */
  339.     public void setNextMessageID(final String nextMessageID) {
  340.         refuseFurtherComments();
  341.         this.nextMessageID = nextMessageID;
  342.     }

  343.     /** Get the Unique identifier of Attitude Data Message linked to this Orbit Data Message.
  344.      * @return Unique identifier of Attitude Data Message linked to this Orbit Data Message
  345.      */
  346.     public String getAdmMessageLink() {
  347.         return admMessageLink;
  348.     }

  349.     /** Set the Unique identifier of Attitude Data Message linked to this Orbit Data Message.
  350.      * @param admMessageLink Unique identifier of Attitude Data Message linked to this Orbit Data Message
  351.      */
  352.     public void setAdmMessageLink(final String admMessageLink) {
  353.         refuseFurtherComments();
  354.         this.admMessageLink = admMessageLink;
  355.     }

  356.     /** Get the Unique identifier of Conjunction Data Message linked to this Orbit Data Message.
  357.      * @return Unique identifier of Conjunction Data Message linked to this Orbit Data Message
  358.      */
  359.     public String getCdmMessageLink() {
  360.         return cdmMessageLink;
  361.     }

  362.     /** Set the Unique identifier of Conjunction Data Message linked to this Orbit Data Message.
  363.      * @param cdmMessageLink Unique identifier of Conjunction Data Message linked to this Orbit Data Message
  364.      */
  365.     public void setCdmMessageLink(final String cdmMessageLink) {
  366.         refuseFurtherComments();
  367.         this.cdmMessageLink = cdmMessageLink;
  368.     }

  369.     /** Get the Unique identifier of Pointing Request Message linked to this Orbit Data Message.
  370.      * @return Unique identifier of Pointing Request Message linked to this Orbit Data Message
  371.      */
  372.     public String getPrmMessageLink() {
  373.         return prmMessageLink;
  374.     }

  375.     /** Set the Unique identifier of Pointing Request Message linked to this Orbit Data Message.
  376.      * @param prmMessageLink Unique identifier of Pointing Request Message linked to this Orbit Data Message
  377.      */
  378.     public void setPrmMessageLink(final String prmMessageLink) {
  379.         refuseFurtherComments();
  380.         this.prmMessageLink = prmMessageLink;
  381.     }

  382.     /** Get the Unique identifier of Reentry Data Message linked to this Orbit Data Message.
  383.      * @return Unique identifier of Reentry Data Message linked to this Orbit Data Message
  384.      */
  385.     public String getRdmMessageLink() {
  386.         return rdmMessageLink;
  387.     }

  388.     /** Set the Unique identifier of Reentry Data Message linked to this Orbit Data Message.
  389.      * @param rdmMessageLink Unique identifier of Reentry Data Message linked to this Orbit Data Message
  390.      */
  391.     public void setRdmMessageLink(final String rdmMessageLink) {
  392.         refuseFurtherComments();
  393.         this.rdmMessageLink = rdmMessageLink;
  394.     }

  395.     /** Get the Unique identifier of Tracking Data Message linked to this Orbit Data Message.
  396.      * @return Unique identifier of Tracking Data Message linked to this Orbit Data Message
  397.      */
  398.     public String getTdmMessageLink() {
  399.         return tdmMessageLink;
  400.     }

  401.     /** Set the Unique identifier of Tracking Data Message linked to this Orbit Data Message.
  402.      * @param tdmMessageLink Unique identifier of Tracking Data Message linked to this Orbit Data Message
  403.      */
  404.     public void setTdmMessageLink(final String tdmMessageLink) {
  405.         refuseFurtherComments();
  406.         this.tdmMessageLink = tdmMessageLink;
  407.     }

  408.     /** Get the operator of the space object.
  409.      * @return operator of the space object
  410.      */
  411.     public String getOperator() {
  412.         return operator;
  413.     }

  414.     /** Set the operator of the space object.
  415.      * @param operator operator of the space object
  416.      */
  417.     public void setOperator(final String operator) {
  418.         refuseFurtherComments();
  419.         this.operator = operator;
  420.     }

  421.     /** Get the owner of the space object.
  422.      * @return owner of the space object
  423.      */
  424.     public String getOwner() {
  425.         return owner;
  426.     }

  427.     /** Set the owner of the space object.
  428.      * @param owner owner of the space object
  429.      */
  430.     public void setOwner(final String owner) {
  431.         refuseFurtherComments();
  432.         this.owner = owner;
  433.     }

  434.     /** Get the name of the country where the space object owner is based.
  435.      * @return name of the country where the space object owner is based
  436.      */
  437.     public String getCountry() {
  438.         return country;
  439.     }

  440.     /** Set the name of the country where the space object owner is based.
  441.      * @param country name of the country where the space object owner is based
  442.      */
  443.     public void setCountry(final String country) {
  444.         refuseFurtherComments();
  445.         this.country = country;
  446.     }

  447.     /** Get the name of the constellation this space object belongs to.
  448.      * @return name of the constellation this space object belongs to
  449.      */
  450.     public String getConstellation() {
  451.         return constellation;
  452.     }

  453.     /** Set the name of the constellation this space object belongs to.
  454.      * @param constellation name of the constellation this space object belongs to
  455.      */
  456.     public void setConstellation(final String constellation) {
  457.         refuseFurtherComments();
  458.         this.constellation = constellation;
  459.     }

  460.     /** Get the type of object.
  461.      * @return type of object
  462.      */
  463.     public ObjectType getObjectType() {
  464.         return objectType;
  465.     }

  466.     /** Set the type of object.
  467.      * @param objectType type of object
  468.      */
  469.     public void setObjectType(final ObjectType objectType) {
  470.         refuseFurtherComments();
  471.         this.objectType = objectType;
  472.     }

  473.     /** Get the epoch to which <em>all</em> relative times are referenced in data blocks.
  474.      * @return epoch to which <em>all</em> relative times are referenced in data blocks
  475.      */
  476.     public AbsoluteDate getEpochT0() {
  477.         return epochT0;
  478.     }

  479.     /** Set the epoch to which <em>all</em> relative times are referenced in data blocks.
  480.      * @param epochT0 epoch to which <em>all</em> relative times are referenced in data blocks
  481.      */
  482.     public void setEpochT0(final AbsoluteDate epochT0) {
  483.         refuseFurtherComments();
  484.         this.epochT0 = epochT0;
  485.     }

  486.     /** Get the operational status.
  487.      * @return operational status
  488.      */
  489.     public OpsStatus getOpsStatus() {
  490.         return opsStatus;
  491.     }

  492.     /** Set the operational status.
  493.      * @param opsStatus operational status
  494.      */
  495.     public void setOpsStatus(final OpsStatus opsStatus) {
  496.         refuseFurtherComments();
  497.         this.opsStatus = opsStatus;
  498.     }

  499.     /** Get the orbit category.
  500.      * @return orbit category
  501.      */
  502.     public OrbitCategory getOrbitCategory() {
  503.         return orbitCategory;
  504.     }

  505.     /** Set the orbit category.
  506.      * @param orbitCategory orbit category
  507.      */
  508.     public void setOrbitCategory(final OrbitCategory orbitCategory) {
  509.         refuseFurtherComments();
  510.         this.orbitCategory = orbitCategory;
  511.     }

  512.     /** Get the list of elements of information data blocks included in this message.
  513.      * @return list of elements of information data blocks included in this message
  514.      */
  515.     public List<String> getOcmDataElements() {
  516.         return ocmDataElements;
  517.     }

  518.     /** Set the list of elements of information data blocks included in this message.
  519.      * @param ocmDataElements list of elements of information data blocks included in this message
  520.      */
  521.     public void setOcmDataElements(final List<String> ocmDataElements) {
  522.         refuseFurtherComments();
  523.         this.ocmDataElements = ocmDataElements;
  524.     }

  525.     /** Get the spacecraft clock count at {@link #getEpochT0()}.
  526.      * @return spacecraft clock count at {@link #getEpochT0()}
  527.      */
  528.     public double getSclkOffsetAtEpoch() {
  529.         return sclkOffsetAtEpoch;
  530.     }

  531.     /** Set the spacecraft clock count at {@link #getEpochT0()}.
  532.      * @param sclkOffsetAtEpoch spacecraft clock count at {@link #getEpochT0()}
  533.      */
  534.     public void setSclkOffsetAtEpoch(final double sclkOffsetAtEpoch) {
  535.         refuseFurtherComments();
  536.         this.sclkOffsetAtEpoch = sclkOffsetAtEpoch;
  537.     }

  538.     /** Get the number of spacecraft clock seconds occurring during one SI second.
  539.      * @return number of spacecraft clock seconds occurring during one SI second
  540.      */
  541.     public double getSclkSecPerSISec() {
  542.         return sclkSecPerSISec;
  543.     }

  544.     /** Set the number of spacecraft clock seconds occurring during one SI second.
  545.      * @param secClockPerSISec number of spacecraft clock seconds occurring during one SI second
  546.      */
  547.     public void setSclkSecPerSISec(final double secClockPerSISec) {
  548.         refuseFurtherComments();
  549.         this.sclkSecPerSISec = secClockPerSISec;
  550.     }

  551.     /** Get the creation date of previous message from a given originator.
  552.      * @return creation date of previous message from a given originator
  553.      */
  554.     public AbsoluteDate getPreviousMessageEpoch() {
  555.         return previousMessageEpoch;
  556.     }

  557.     /** Set the creation date of previous message from a given originator.
  558.      * @param previousMessageEpoch creation date of previous message from a given originator
  559.      */
  560.     public void setPreviousMessageEpoch(final AbsoluteDate previousMessageEpoch) {
  561.         refuseFurtherComments();
  562.         this.previousMessageEpoch = previousMessageEpoch;
  563.     }

  564.     /** Get the creation date of next message from a given originator.
  565.      * @return creation date of next message from a given originator
  566.      */
  567.     public AbsoluteDate getNextMessageEpoch() {
  568.         return nextMessageEpoch;
  569.     }

  570.     /** Set the creation date of next message from a given originator.
  571.      * @param nextMessageEpoch creation date of next message from a given originator
  572.      */
  573.     public void setNextMessageEpoch(final AbsoluteDate nextMessageEpoch) {
  574.         refuseFurtherComments();
  575.         this.nextMessageEpoch = nextMessageEpoch;
  576.     }

  577.     /** Get the time of the earliest data contained in the OCM.
  578.      * @return time of the earliest data contained in the OCM
  579.      */
  580.     public AbsoluteDate getStartTime() {
  581.         return startTime;
  582.     }

  583.     /** Set the time of the earliest data contained in the OCM.
  584.      * @param startTime time of the earliest data contained in the OCM
  585.      */
  586.     public void setStartTime(final AbsoluteDate startTime) {
  587.         refuseFurtherComments();
  588.         this.startTime = startTime;
  589.     }

  590.     /** Get the time of the latest data contained in the OCM.
  591.      * @return time of the latest data contained in the OCM
  592.      */
  593.     public AbsoluteDate getStopTime() {
  594.         return stopTime;
  595.     }

  596.     /** Set the time of the latest data contained in the OCM.
  597.      * @param stopTime time of the latest data contained in the OCM
  598.      */
  599.     public void setStopTime(final AbsoluteDate stopTime) {
  600.         refuseFurtherComments();
  601.         this.stopTime = stopTime;
  602.     }

  603.     /** Get the span of time in seconds that the OCM covers.
  604.      * @return span of time in seconds that the OCM covers
  605.      */
  606.     public double getTimeSpan() {
  607.         return timeSpan;
  608.     }

  609.     /** Set the span of time in seconds that the OCM covers.
  610.      * @param timeSpan span of time in seconds that the OCM covers
  611.      */
  612.     public void setTimeSpan(final double timeSpan) {
  613.         refuseFurtherComments();
  614.         this.timeSpan = timeSpan;
  615.     }

  616.     /** Get the difference (TAI – UTC) in seconds at epoch {@link #getEpochT0()}.
  617.      * @return difference (TAI – UTC) in seconds at epoch {@link #getEpochT0()}
  618.      */
  619.     public double getTaimutcT0() {
  620.         return taimutcT0;
  621.     }

  622.     /** Set the difference (TAI – UTC) in seconds at epoch {@link #getEpochT0()}.
  623.      * @param taimutcT0 difference (TAI – UTC) in seconds at epoch {@link #getEpochT0()}
  624.      */
  625.     public void setTaimutcT0(final double taimutcT0) {
  626.         refuseFurtherComments();
  627.         this.taimutcT0 = taimutcT0;
  628.     }

  629.     /** Get the difference (UT1 – UTC) in seconds at epoch {@link #getEpochT0()}.
  630.      * @return difference (UT1 – UTC) in seconds at epoch {@link #getEpochT0()}
  631.      */
  632.     public double getUt1mutcT0() {
  633.         return ut1mutcT0;
  634.     }

  635.     /** Set the difference (UT1 – UTC) in seconds at epoch {@link #getEpochT0()}.
  636.      * @param ut1mutcT0 difference (UT1 – UTC) in seconds at epoch {@link #getEpochT0()}
  637.      */
  638.     public void setUt1mutcT0(final double ut1mutcT0) {
  639.         refuseFurtherComments();
  640.         this.ut1mutcT0 = ut1mutcT0;
  641.     }

  642.     /** Get the source and version of Earth Orientation Parameters.
  643.      * @return source and version of Earth Orientation Parameters
  644.      */
  645.     public String getEopSource() {
  646.         return eopSource;
  647.     }

  648.     /** Set the source and version of Earth Orientation Parameters.
  649.      * @param eopSource source and version of Earth Orientation Parameters
  650.      */
  651.     public void setEopSource(final String eopSource) {
  652.         refuseFurtherComments();
  653.         this.eopSource = eopSource;
  654.     }

  655.     /** Get the interpolation method for Earth Orientation Parameters.
  656.      * @return interpolation method for Earth Orientation Parameters
  657.      */
  658.     public String getInterpMethodEOP() {
  659.         return interpMethodEOP;
  660.     }

  661.     /** Set the interpolation method for Earth Orientation Parameters.
  662.      * @param interpMethodEOP interpolation method for Earth Orientation Parameters
  663.      */
  664.     public void setInterpMethodEOP(final String interpMethodEOP) {
  665.         refuseFurtherComments();
  666.         this.interpMethodEOP = interpMethodEOP;
  667.     }

  668.     /** Get the source and version of celestial body (e.g. Sun/Earth/Planetary).
  669.      * @return source and version of celestial body (e.g. Sun/Earth/Planetary)
  670.      */
  671.     public String getCelestialSource() {
  672.         return celestialSource;
  673.     }

  674.     /** Set the source and version of celestial body (e.g. Sun/Earth/Planetary).
  675.      * @param celestialSource source and version of celestial body (e.g. Sun/Earth/Planetary)
  676.      */
  677.     public void setCelestialSource(final String celestialSource) {
  678.         refuseFurtherComments();
  679.         this.celestialSource = celestialSource;
  680.     }

  681. }