OemMetadata.java
- /* Copyright 2002-2024 CS GROUP
- * Licensed to CS GROUP (CS) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * CS licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.orekit.files.ccsds.ndm.odm.oem;
- import org.orekit.files.ccsds.ndm.odm.OdmCommonMetadata;
- import org.orekit.time.AbsoluteDate;
- /** Metadata for Orbit Ephemeris Messages.
- * @author Luc Maisonobe
- * @since 11.0
- */
- public class OemMetadata extends OdmCommonMetadata {
- /** Start of total time span covered by ephemerides data and covariance data. */
- private AbsoluteDate startTime;
- /** End of total time span covered by ephemerides data and covariance data. */
- private AbsoluteDate stopTime;
- /** Start of useable time span covered by ephemerides data, it may be
- * necessary to allow for proper interpolation. */
- private AbsoluteDate useableStartTime;
- /** End of useable time span covered by ephemerides data, it may be
- * necessary to allow for proper interpolation. */
- private AbsoluteDate useableStopTime;
- /** The interpolation method to be used. */
- private InterpolationMethod interpolationMethod;
- /** The interpolation degree. */
- private int interpolationDegree;
- /** Simple constructor.
- * @param defaultInterpolationDegree default interpolation degree
- */
- public OemMetadata(final int defaultInterpolationDegree) {
- this.interpolationDegree = defaultInterpolationDegree;
- }
- /** {@inheritDoc} */
- @Override
- public void validate(final double version) {
- checkMandatoryEntriesExceptDates(version);
- checkNotNull(startTime, OemMetadataKey.START_TIME.name());
- checkNotNull(stopTime, OemMetadataKey.STOP_TIME.name());
- }
- /** Check is mandatory entries EXCEPT DATES have been initialized.
- * <p>
- * This method should throw an exception if some mandatory entry is missing
- * </p>
- * @param version format version
- */
- void checkMandatoryEntriesExceptDates(final double version) {
- super.validate(version);
- }
- /** Get start of total time span covered by ephemerides data and
- * covariance data.
- * @return the start time
- */
- public AbsoluteDate getStartTime() {
- return startTime;
- }
- /** Set start of total time span covered by ephemerides data and
- * covariance data.
- * @param startTime the time to be set
- */
- public void setStartTime(final AbsoluteDate startTime) {
- refuseFurtherComments();
- this.startTime = startTime;
- }
- /** Get end of total time span covered by ephemerides data and covariance
- * data.
- * @return the stop time
- */
- public AbsoluteDate getStopTime() {
- return stopTime;
- }
- /** Set end of total time span covered by ephemerides data and covariance
- * data.
- * @param stopTime the time to be set
- */
- public void setStopTime(final AbsoluteDate stopTime) {
- refuseFurtherComments();
- this.stopTime = stopTime;
- }
- /** Get start of useable time span covered by ephemerides data, it may be
- * necessary to allow for proper interpolation.
- * @return the useable start time
- */
- public AbsoluteDate getUseableStartTime() {
- return useableStartTime;
- }
- /** Set start of useable time span covered by ephemerides data, it may be
- * necessary to allow for proper interpolation.
- * @param useableStartTime the time to be set
- */
- public void setUseableStartTime(final AbsoluteDate useableStartTime) {
- refuseFurtherComments();
- this.useableStartTime = useableStartTime;
- }
- /** Get end of useable time span covered by ephemerides data, it may be
- * necessary to allow for proper interpolation.
- * @return the useable stop time
- */
- public AbsoluteDate getUseableStopTime() {
- return useableStopTime;
- }
- /** Set end of useable time span covered by ephemerides data, it may be
- * necessary to allow for proper interpolation.
- * @param useableStopTime the time to be set
- */
- public void setUseableStopTime(final AbsoluteDate useableStopTime) {
- refuseFurtherComments();
- this.useableStopTime = useableStopTime;
- }
- /** Get the interpolation method to be used.
- * @return the interpolation method
- */
- public InterpolationMethod getInterpolationMethod() {
- return interpolationMethod;
- }
- /** Set the interpolation method to be used.
- * @param interpolationMethod the interpolation method to be set
- */
- public void setInterpolationMethod(final InterpolationMethod interpolationMethod) {
- refuseFurtherComments();
- this.interpolationMethod = interpolationMethod;
- }
- /** Get the interpolation degree.
- * @return the interpolation degree
- */
- public int getInterpolationDegree() {
- return interpolationDegree;
- }
- /** Set the interpolation degree.
- * @param interpolationDegree the interpolation degree to be set
- */
- public void setInterpolationDegree(final int interpolationDegree) {
- refuseFurtherComments();
- this.interpolationDegree = interpolationDegree;
- }
- /** Copy the instance, making sure mandatory fields have been initialized.
- * @param version format version
- * @return a new copy
- */
- OemMetadata copy(final double version) {
- checkMandatoryEntriesExceptDates(version);
- // allocate new instance
- final OemMetadata copy = new OemMetadata(getInterpolationDegree());
- // copy comments
- for (String comment : getComments()) {
- copy.addComment(comment);
- }
- // copy object
- copy.setObjectName(getObjectName());
- copy.setObjectID(getObjectID());
- copy.setCenter(getCenter());
- // copy frames
- copy.setFrameEpoch(getFrameEpoch());
- copy.setReferenceFrame(getReferenceFrame());
- // copy time system only (ignore times themselves)
- copy.setTimeSystem(getTimeSystem());
- // copy interpolation (degree has already been set up at construction)
- if (getInterpolationMethod() != null) {
- copy.setInterpolationMethod(getInterpolationMethod());
- }
- return copy;
- }
- }