ODMFile.java
- /* Copyright 2002-2013 CS Systèmes d'Information
- * Licensed to CS Systèmes d'Information (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;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.List;
- import org.orekit.errors.OrekitException;
- import org.orekit.errors.OrekitMessages;
- import org.orekit.files.general.OrbitFile;
- import org.orekit.files.general.SatelliteTimeCoordinate;
- import org.orekit.time.AbsoluteDate;
- import org.orekit.utils.IERSConventions;
- /**
- * The ODMFile (Orbit Data Message) class represents any of the three orbit messages used by the CCSDS,
- * i.e. the Orbit Parameter Message (OPM), the Mean-Elements Message (OMM) and the Orbit Ephemeris Message (OEM).
- * It contains the information of the message's header and configuration data (set in the parser).
- * @author sports
- * @since 6.1
- */
- public abstract class ODMFile implements OrbitFile {
- /** CCSDS Format version. */
- private double formatVersion;
- /** Header comments. The list contains a string for each line of comment. */
- private List<String> headerComment;
- /** File creation date and time in UTC. */
- private AbsoluteDate creationDate;
- /** Creating agency or operator. */
- private String originator;
- /** Gravitational coefficient set by the user in the parser. */
- private double muSet;
- /** Gravitational coefficient parsed in the ODM File. */
- private double muParsed;
- /** Gravitational coefficient created from the knowledge of the central body. */
- private double muCreated;
- /** IERS conventions used. */
- private IERSConventions conventions;
- /** Final gravitational coefficient (used for the public methods that need such a parameter, ex: generateCartesianOrbit).
- * In order of decreasing priority, finalMU is equal to: the coefficient parsed in the file, the coefficient set by the
- * user with the parser's method setMu, the coefficient created from the knowledge of the central body.
- */
- private double muUsed;
- /** Initial Date for MET or MRT time systems. */
- private AbsoluteDate missionReferenceDate;
- /** ODMFile constructor. */
- public ODMFile() {
- muSet = Double.NaN;
- muParsed = Double.NaN;
- muCreated = Double.NaN;
- muUsed = Double.NaN;
- }
- /**
- * Get the gravitational coefficient set by the user.
- * @return the coefficient
- */
- public double getMuSet() {
- return muSet;
- }
- /**
- * Set the gravitational coefficient set by the user.
- * @param muSet the coefficient to be set
- */
- void setMuSet(final double muSet) {
- this.muSet = muSet;
- }
- /**
- * Get the gravitational coefficient parsed in the ODM File.
- * @return the coefficient
- */
- public double getMuParsed() {
- return muParsed;
- }
- /**
- * Set the gravitational coefficient parsed in the ODM File.
- * @param muParsed the coefficient to be set
- */
- void setMuParsed(final double muParsed) {
- this.muParsed = muParsed;
- }
- /**
- * Get the gravitational coefficient created from the knowledge of the central body.
- * @return the coefficient
- */
- public double getMuCreated() {
- return muCreated;
- }
- /**
- * Set the gravitational coefficient created from the knowledge of the central body.
- * @param muCreated the coefficient to be set
- */
- void setMuCreated(final double muCreated) {
- this.muCreated = muCreated;
- }
- /**
- * Get the used gravitational coefficient.
- * @return the coefficient
- */
- public double getMuUsed() {
- return muUsed;
- }
- /**
- * Set the gravitational coefficient created from the knowledge of the central body.
- * In order of decreasing priority, finalMU is set equal to:
- * <ol>
- * <li>the coefficient parsed in the file,</li>
- * <li>the coefficient set by the user with the parser's method setMu,</li>
- * <li>the coefficient created from the knowledge of the central body.</li>
- * </ol>
- * @throws OrekitException if no gravitational coefficient can be found
- */
- protected void setMuUsed() throws OrekitException {
- if (!Double.isNaN(muParsed)) {
- muUsed = muParsed;
- } else if (!Double.isNaN(muSet)) {
- muUsed = muSet;
- } else if (!Double.isNaN(muCreated)) {
- muUsed = muCreated;
- } else {
- throw new OrekitException(OrekitMessages.CCSDS_UNKNOWN_GM);
- }
- }
- /** Get IERS conventions.
- * @return conventions IERS conventions
- * @exception OrekitException if no IERS conventions have been set
- */
- public IERSConventions getConventions() throws OrekitException {
- if (conventions != null) {
- return conventions;
- } else {
- throw new OrekitException(OrekitMessages.CCSDS_UNKNOWN_CONVENTIONS);
- }
- }
- /** Set IERS conventions.
- * @param conventions IERS conventions to be set
- */
- void setConventions(final IERSConventions conventions) {
- this.conventions = conventions;
- }
- /** Get reference date for Mission Elapsed Time and Mission Relative Time time systems.
- * @return the reference date
- */
- public AbsoluteDate getMissionReferenceDate() {
- return missionReferenceDate;
- }
- /** Set reference date for Mission Elapsed Time and Mission Relative Time time systems.
- * @param missionReferenceDate reference date for Mission Elapsed Time and Mission Relative Time time systems.
- */
- void setMissionReferenceDate(final AbsoluteDate missionReferenceDate) {
- this.missionReferenceDate = missionReferenceDate;
- }
- /** Get the CCSDS ODM (OPM, OMM or OEM) format version.
- * @return format version
- */
- public double getFormatVersion() {
- return formatVersion;
- }
- /** Set the CCSDS ODM (OPM, OMM or OEM) format version.
- * @param formatVersion the format version to be set
- */
- void setFormatVersion(final double formatVersion) {
- this.formatVersion = formatVersion;
- }
- /** Get the header comment.
- * @return header comment
- */
- public List<String> getHeaderComment() {
- return headerComment;
- }
- /** Set the header comment.
- * @param headerComment header comment
- */
- void setHeaderComment(final List<String> headerComment) {
- this.headerComment = new ArrayList<String>(headerComment);
- }
- /** Get the file creation date and time in UTC.
- * @return the file creation date and time in UTC.
- */
- public AbsoluteDate getCreationDate() {
- return creationDate;
- }
- /** Set the file creation date and time in UTC.
- * @param creationDate the creation date to be set
- */
- void setCreationDate(final AbsoluteDate creationDate) {
- this.creationDate = creationDate;
- }
- /** Get the file originator.
- * @return originator the file originator.
- */
- public String getOriginator() {
- return originator;
- }
- /** Set the file originator.
- * @param originator the originator to be set
- */
- void setOriginator(final String originator) {
- this.originator = originator;
- }
- /**
- * Not supported by CCSDS orbit messages.
- * @return always throws an {@link UnsupportedOperationException}
- * @throws UnsupportedOperationException always
- */
- @Override
- public double getEpochInterval() {
- throw new UnsupportedOperationException();
- }
- /**
- * Not supported by CCSDS orbit messages.
- * @return always throws an {@link UnsupportedOperationException}
- * @throws UnsupportedOperationException always
- */
- @Override
- public int getNumberOfEpochs() {
- throw new UnsupportedOperationException();
- }
- /** {@inheritDoc} */
- @Override
- public boolean containsSatellite(final String satId) {
- return getSatellite(satId) != null;
- }
- /** {@inheritDoc} */
- @Override
- public List<SatelliteTimeCoordinate> getSatelliteCoordinates(final String satId) {
- return Collections.emptyList();
- }
- }